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); }
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); }