Beispiel #1
0
        public ICheckResult Check(ICheckConfiguration checkDetails)
        {
            var databaseDetails = checkDetails as IDatabaseConfiguration;

            ICheckResult result = new CheckResult()
            {
                Title = databaseDetails.Title
            };


            Stopwatch timer = new Stopwatch();

            //Create Db Connection and attempt to connect
            using (SqlConnection conn = new SqlConnection(databaseDetails.ConnectionString))
            {
                try
                {
                    timer.Start();
                    conn.Open();

                    if (databaseDetails.TablesToCheck != null)
                    {
                        foreach (var table in databaseDetails.TablesToCheck)
                        {
                            SqlCommand command    = new SqlCommand(string.Format(QUERY_FORMAT, table), conn);
                            var        dataReader = command.ExecuteReader();
                            while (dataReader.Read())
                            {
                            }
                        }
                    }
                    timer.Stop();
                    result.TimeElasped = Convert.ToDouble(timer.ElapsedMilliseconds);

                    result.Status = databaseDetails.ResponseTime > result.TimeElasped ? CheckResultStatus.Up : CheckResultStatus.PerfomanceDegraded;
                }
                catch (SqlException ex)
                {
                    timer.Stop();
                    result.TimeElasped = Convert.ToDouble(timer.ElapsedMilliseconds);

                    result.AdditionalInformation = string.Format("{0} - {1}", ex.ErrorCode, ex.Message);

                    result.Status = CheckResultStatus.Down;
                }
                finally
                {
                    conn.Close();
                }
            }

            if (databaseDetails.AfterCheckAction != null)
            {
                result = databaseDetails.AfterCheckAction.Invoke(databaseDetails, result);
            }

            return(result);
        }
        public ICheckResult Check(ICheckConfiguration checkDetails)
        {
            var customDetails = checkDetails as ICustomConfiguration;

            ICheckResult result = new CheckResult()
            {
                Title = customDetails.Title
            };
            Stopwatch timer = new Stopwatch();

            try
            {
                timer.Start();
                KeyValuePair <bool, string> response = customDetails.TheCustomCheck.Invoke();
                timer.Stop();

                result.TimeElasped = Convert.ToDouble(timer.ElapsedMilliseconds);

                if (response.Key)
                {
                    result.Status = customDetails.ResponseTime > result.TimeElasped ? CheckResultStatus.Up : CheckResultStatus.PerfomanceDegraded;
                    result.AdditionalInformation = string.Format("Sucessfull: {0}", response.Value);
                }
                else
                {
                    result.AdditionalInformation = string.Format("Error: {0}", response.Value);
                    result.Status = CheckResultStatus.Down;
                }
            }
            catch (Exception ex)
            {
                timer.Stop();
                result.TimeElasped           = Convert.ToDouble(timer.ElapsedMilliseconds);
                result.AdditionalInformation = string.Format("Error: {0}", ex.Message);
                result.Status = CheckResultStatus.Down;
            }

            if (customDetails.AfterCheckAction != null)
            {
                result = customDetails.AfterCheckAction.Invoke(customDetails, result);
            }

            return(result);
        }
        public ICheckResult Check(ICheckConfiguration checkDetails)
        {
            var networkDetails = checkDetails as INetworkConfiguration;

            ICheckResult result = new CheckResult()
            {
                Title = networkDetails.Title
            };

            //TODO: Network Check
            IPGlobalProperties ipProperties = IPGlobalProperties.GetIPGlobalProperties();

            IPEndPoint[] endPoints = ipProperties.GetActiveTcpListeners();
            TcpConnectionInformation[] tcpConnections = ipProperties.GetActiveTcpConnections();

            //Check Existing Connections
            bool connectionExists = false;

            foreach (var tcpConnection in tcpConnections)
            {
                if ((tcpConnection.LocalEndPoint.Address.Equals(IPAddress.Parse(networkDetails.HostName)) && tcpConnection.LocalEndPoint.Port == networkDetails.Port) ||
                    (tcpConnection.RemoteEndPoint.Address.Equals(IPAddress.Parse(networkDetails.HostName)) && tcpConnection.RemoteEndPoint.Port == networkDetails.Port))
                {
                    result.Status    = tcpConnection.State == TcpState.Established ? CheckResultStatus.Up : CheckResultStatus.Down;
                    connectionExists = true;
                    break;
                }
            }

            Stopwatch timer = new Stopwatch();

            //Attempt connection
            if (networkDetails.IsPersistentConnection && !connectionExists)
            {
                result.AdditionalInformation = "No Persistent connection found";

                result.Status = CheckResultStatus.Down;
            }
            else if (!networkDetails.DontAttemptConnection)
            {
                if ((networkDetails.SupportsMultipleConnections && connectionExists) || !connectionExists)
                {
                    using (var client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))
                    {
                        try
                        {
                            timer.Start();
                            client.Connect(networkDetails.HostName, networkDetails.Port);
                            timer.Stop();

                            result.TimeElasped = Convert.ToDouble(timer.ElapsedMilliseconds);

                            result.Status = networkDetails.ResponseTime > result.TimeElasped ? CheckResultStatus.Up : CheckResultStatus.PerfomanceDegraded;
                        }
                        catch (SocketException ex)
                        {
                            timer.Stop();
                            result.TimeElasped = Convert.ToDouble(timer.ElapsedMilliseconds);

                            result.AdditionalInformation = string.Format("{0} - {1}", ex.SocketErrorCode, ex.Message);

                            result.Status = CheckResultStatus.Down;
                        }
                    }
                }
            }

            if (networkDetails.AfterCheckAction != null)
            {
                result = networkDetails.AfterCheckAction.Invoke(networkDetails, result);
            }

            return(result);
        }
Beispiel #4
0
        public ICheckResult Check(ICheckConfiguration checkDetails)
        {
            var urlDetails = checkDetails as IUrlConfiguration;


            ICheckResult result = new CheckResult()
            {
                Title = urlDetails.Title
            };

            Stopwatch timer = new Stopwatch();



            try
            {
                //Open url
                HttpWebRequest request = HttpWebRequest.Create(urlDetails.Url) as HttpWebRequest;

                timer.Start();
                HttpWebResponse response = request.GetResponse() as HttpWebResponse;
                timer.Stop();

                result.TimeElasped = Convert.ToDouble(timer.ElapsedMilliseconds);

                if (response.StatusCode == HttpStatusCode.OK)
                {
                    result.Status = urlDetails.ResponseTime > result.TimeElasped ? CheckResultStatus.Up : CheckResultStatus.PerfomanceDegraded;
                }
                else
                {
                    result.AdditionalInformation = string.Format("{0} - {1}", response.StatusCode, response.StatusDescription);
                    result.Status = CheckResultStatus.Down;
                }
            }
            catch (WebException ex)
            {
                Trace.TraceInformation("Error Occured In URL check " + ex.Message + ex.StackTrace);
                timer.Stop();
                result.TimeElasped = Convert.ToDouble(timer.ElapsedMilliseconds);
                var response = ex.Response as HttpWebResponse;
                if (response != null)
                {
                    result.AdditionalInformation = string.Format("{0} - {1}", response.StatusCode, response.StatusDescription);
                }
                else
                {
                    result.AdditionalInformation = string.Format("Error: {0} - {1}", ex.Message, ex.Status);
                }
                result.Status = CheckResultStatus.Down;
            }

            if (urlDetails.AfterCheckAction != null)
            {
                result = urlDetails.AfterCheckAction.Invoke(urlDetails, result);
            }
            // Trace.TraceInformation("Return result " +result);


            return(result);
        }