Beispiel #1
0
        public ResultObj Ping()
        {
            ResultObj result = new ResultObj();

            try
            {
                PingParams pingParams = _pingParams;
                PingIt     pingIt;


                StopNetStats();



                for (int i = 0; i < pingParams.PingBurstNumber; i++)
                {
                    foreach (MonitorPingInfo monitorPingInfo in _monitorPingInfos)
                    {
                        // We must abort pinging as soon as possible to stop DB write errors.
                        if (_isSaving)
                        {
                            Console.WriteLine("Aborting MonitorPingService.Ping save in progress ");
                            result.Message = "Aborting MonitorPingService.Ping save in progress ";
                            result.Success = false;
                            _isPinging     = false;
                            return(result);
                        }
                        _isPinging = true;
                        pingIt     = new PingIt(monitorPingInfo, pingParams);
                        pingIt.go();
                        if (pingIt.RoundTrip > _pingParams.LogStatsThreshold)
                        {
                            Console.WriteLine("Ping threshold met for IP Address : " + monitorPingInfo.IPAddress + "  RoundTrip time was : " + pingIt.RoundTrip);
                            StartNetStats();
                        }
                        //Console.WriteLine("IP Address : " + monitorPingInfo.IPAddress);
                        //Console.WriteLine("Status : " + monitorPingInfo.MonitorStatus);
                        //Console.WriteLine("Trip Time : " + monitorPingInfo.RoundTripTimeAverage);
                    }
                    Thread.Sleep(pingParams.PingBurstDelay);
                }
                result.Message = "MonitorPingService.Ping Success";
                result.Success = true;
            }
            catch (Exception e)
            {
                result.Message = "MonitorPingService.Ping Failed : Error was : " + e.Message;
                result.Success = false;
            }
            finally
            {
                _isPinging = false;
            }
            return(result);
        }
Beispiel #2
0
        public void init(bool initMonitorPingInfos)
        {
            _pingParams = new PingParams();

            _pingParams.BufferLength          = _config.GetValue <int>("PingPacketSize");
            _pingParams.TimeOut               = _config.GetValue <int>("PingTimeOut");
            _pingParams.PingBurstDelay        = _config.GetValue <int>("PingBurstDelay");
            _pingParams.PingBurstNumber       = _config.GetValue <int>("PingBurstNumber");
            _pingParams.Schedule              = _config.GetValue <string>("PingSchedule");
            _pingParams.SaveSchedule          = _config.GetValue <string>("SaveSchedule");
            _pingParams.AlertSchedule         = _config.GetValue <string>("AlertSchedule");
            _pingParams.AlertThreshold        = _config.GetValue <int>("PingAlertThreshold");
            _pingParams.DisableNetStatService = _config.GetValue <bool>("DisableNetStatService");
            _pingParams.LogStatsThreshold     = _config.GetValue <int>("LogNetworkStatsThreshold");
            _pingParams.NetStatsDeviceID      = _config.GetValue <int>("NetStatsDeviceID");

            if (initMonitorPingInfos)
            {
                // init fully on first run.
                _monitorPingInfos = new List <MonitorPingInfo>();
                _monitorIPs       = _config.GetSection("MonitorIps").GetChildren().ToArray().Select(c => c.Value).ToArray();
                MonitorPingInfo monitorPingInfo;
                for (int i = 0; i < _monitorIPs.Length; i++)
                {
                    monitorPingInfo           = new MonitorPingInfo();
                    monitorPingInfo.ID        = i + 1;
                    monitorPingInfo.IPAddress = _monitorIPs[i];
                    _monitorPingInfos.Add(monitorPingInfo);
                }
            }
            else
            {
                List <MonitorPingInfo> newMonPingInfos = new List <MonitorPingInfo>();
                MonitorPingInfo        newMonPingInfo;
                StatusObj status;
                int       i = 0;
                // Copy Alert status before init.
                foreach (MonitorPingInfo monPingInfo in _monitorPingInfos)
                {
                    status                       = new StatusObj();
                    status.AlertFlag             = monPingInfo.MonitorStatus.AlertFlag;
                    status.AlertSent             = monPingInfo.MonitorStatus.AlertSent;
                    status.DownCount             = monPingInfo.MonitorStatus.DownCount;
                    status.IsUp                  = monPingInfo.MonitorStatus.IsUp;
                    newMonPingInfo               = new MonitorPingInfo();
                    newMonPingInfo.ID            = i + 1;
                    newMonPingInfo.IPAddress     = _monitorIPs[i];
                    newMonPingInfo.MonitorStatus = status;
                    newMonPingInfos.Add(newMonPingInfo);
                    i++;
                }
                _monitorPingInfos = new List <MonitorPingInfo>(newMonPingInfos);
            }
        }