public override async Task<State> Poll() { bool running = await Task.Run(async () => { await Task.Delay(0); return IsRunning(); }); _state = new State() { Url = string.Concat(this.ServiceName, "@", this.Server.Name) }; if (!running)//need to move this code out of here { this.Restart(); if (!IsRunning()) { _state.Status =_unableToRestartMessage ; } else { _state.Status = _stopedButRestartedMessage ; } } else { _state.Status = "OK"; } return _state; }
public async Task<State> PollAsync() { State state = new State(); state = await Resource.Poll(); return state; }
public override async Task<State> Poll() { var ping = new Ping(); var data = "B".PadRight(32, 'B'); var buffer = Encoding.ASCII.GetBytes(data); PingReply reply = await ping.SendPingAsync(ServerName, pingTimeout , buffer, new PingOptions(128,true)); _state = new State(); _state.Url = string.Concat(this.Name, "-", reply.Address.ToString()); _state.Status = reply.Status == IPStatus.Success ? "OK" : GetPingMessage(reply); return _state; }
public override async Task<State> Poll() { HttpResponseMessage response; using (var handler = new HttpClientHandler { UseDefaultCredentials = true }) using (var client = new HttpClient(handler)){ client.DefaultRequestHeaders.Accept.Clear(); client.Timeout = TimeSpan.FromSeconds(100); response = await client.GetAsync(this.Url,HttpCompletionOption.ResponseHeadersRead); if(response.StatusCode == System.Net.HttpStatusCode.Unauthorized) { response = await client.GetAsync(this.Url,HttpCompletionOption.ResponseHeadersRead); } _state = new State() { Status = response.StatusCode.ToString(), Url = this.Url }; } return _state; }
public override async Task<State> Poll() { ServerManager server = null; ObjectState stateResult = ObjectState.Unknown; State state = default(State); try { server = ServerManager.OpenRemote(serverInstance.Name) ; if (server != null&& this.Exist()) { state = new State(); state.Url = string.Concat(this.Name, "@", serverInstance.Name); stateResult = server.ApplicationPools[Name].State; if (stateResult == ObjectState.Started) { if (server.ApplicationPools[Name].WorkerProcesses.Count > 0) { WorkerProcess wp = server.ApplicationPools[Name].WorkerProcesses .Where(p => p .AppPoolName.ToLowerInvariant() == Name.ToLowerInvariant()) .FirstOrDefault(); PerformanceCounter cpuCounter = new PerformanceCounter("Process" , "% Processor Time" , Process.GetProcessById(wp.ProcessId, serverInstance.Name).ProcessName , serverInstance.Name); cpuPercent = cpuCounter.NextValue(); await Task.Delay(2000); cpuPercent = cpuCounter.NextValue(); await Task.Delay(30000); //the requests interval time is now 30000 int numOfRequests = wp.GetRequests(30000).Count; float cpuPercentAfterThirthySeconds = cpuCounter.NextValue(); if (cpuPercent >= _cpuAlertTreshold && cpuPercentAfterThirthySeconds >= _cpuAlertTreshold) { state.Status = "High CPU Load"; state.Description =string.Format("The CPU for app pool {0} on {1} has reach {2}% and may cause HTTP 503 errors", Name, serverInstance.Name, cpuPercent); state = GetCommonState(server, state, numOfRequests); } else { state.Status = _positiveStatusCode; } if (!string.IsNullOrEmpty(state.Status)) { server.Dispose(); cpuCounter.Close(); cpuCounter.Dispose(); } } else { state.Status = _positiveStatusCode; } return state; } else { state.Description = stateResult == ObjectState.Started ? string.Format("The app pool on server {0} is in the following in {1} state, the number of worker processes is {2}", serverInstance.Name, stateResult.ToString(), server.ApplicationPools[Name].WorkerProcesses.Count) : "Unavailable"; state.Status = stateResult == ObjectState.Started ? _positiveStatusCode: "App Pool Not Started"; state = GetCommonState(server, state, 0); if (stateResult == ObjectState.Stopped) { server.ApplicationPools[Name].Start(); state.Description += server.ApplicationPools[Name].State == ObjectState.Started ? "\rResolution: The appPool was started" : state.Description; } } } } catch(Exception ex) { state.Status = ex.GetType().Name; state.Description = "'polling failed with" + ex.Message; state.Url = string.Concat(this.Name, "@", serverInstance.Name); return state; } return state; }
private State GetCommonState(ServerManager server, State state, int numOfRequests) { StringBuilder builder = new StringBuilder(); builder.AppendLine(state.Status); state.Status = builder.ToString(); return state; }
public static void Print(State t, string taskStatus) { Console.WriteLine("|"); Console.WriteLine("--{0} : {1} - {2} \n{3}", taskStatus, t.Url, t.Status, t.Description); }
private static void Print(State state , string taskStatus) { StateLogger.Print(state, taskStatus); }