public async Task <IMonitoringObject> GetByNameAsync(string serviceName) { IMonitoringObject mObject = await _monitorObjectRepository.GetByNameAsync(serviceName) ?? await _apiMonitoringObjectRepository.GetByNameAsync(serviceName); return(mObject); }
public async Task UnmuteAsync(string serviceName) { IMonitoringObject mObject = await GetByNameAsync(serviceName); mObject.SkipCheckUntil = null; await InsertAsync(mObject); }
public async Task MuteAsync(string serviceName, int minutes) { IMonitoringObject mObject = await GetByNameAsync(serviceName); mObject.SkipCheckUntil = DateTime.UtcNow.AddMinutes(minutes); await InsertAsync(mObject); }
/// <summary>If api send any failing indicators, they are added to resilience output</summary> private void HandleResilience( ConcurrentBag <ApiHealthCheckError> issues, IEnumerable <IssueIndicatorObject> issueIndicators, IMonitoringObject mObject) { var indicators = _notifyingLimitSettings.CheckAndUpdateLimits(mObject.ServiceName, issueIndicators); if (indicators.Count == 0) { return; } string errorMessage = string.Join("; ", indicators.Select(o => o.Type + ": " + o.Value)); issues.Add(new ApiHealthCheckError() { Date = DateTime.UtcNow, LastError = errorMessage, ServiceName = mObject.ServiceName, }); _log.WriteMonitor( nameof(MonitoringJob), nameof(CheckAPIs), $"Service url check failed for {mObject.ServiceName} (URL:{mObject.Url}), reason: {errorMessage}!"); }
public async Task MonitorAsync(IMonitoringObject aObject) { aObject.LastTime = DateTime.UtcNow; await _apiMonitoringObjectRepository.InsertAsync(aObject); await _monitoringObjectRepository.InsertAsync(aObject); }
private void AppendMonitoringObject(IMonitoringObject mo) { ListViewItem lvi = lvwMonitor.Items.Add(String.Empty); lvi.SubItems.Add(mo.Name); lvi.SubItems.Add(String.Empty); lvi.Group = lvwMonitor.Groups[((MonitoringObjectCategory)mo.Category).ToString()]; lvi.ImageIndex = ImageIndexMonitoring; lvi.Tag = mo; lvi.UseItemStyleForSubItems = false; }
public async Task <MonitoringObjectModel> GetByServiceName([FromRoute] string serviceName) { IMonitoringObject mObject = await _monitoringService.GetByNameAsync(serviceName); return(new MonitoringObjectModel { LastPing = mObject.LastTime, ServiceName = mObject.ServiceName, SkipUntil = mObject.SkipCheckUntil, Version = mObject.Version, Url = mObject.Url }); }
private void GenerateError( ConcurrentBag <ApiHealthCheckError> errors, DateTime now, string errorMessage, IMonitoringObject mObject) { var error = new ApiHealthCheckError() { Date = now, LastError = errorMessage, ServiceName = mObject.ServiceName, }; errors.Add(error); _log.WriteMonitor( nameof(MonitoringJob), nameof(CheckAPIs), $"Service url check failed for {mObject.ServiceName}(URL:{mObject.Url}), reason: {errorMessage}!"); }
public Task RemoveByUrlAsync(string url) { IMonitoringObject objToDelete = null; foreach (var monitoringObject in _monitoringDictionary.Values) { if (monitoringObject.Url != url) { continue; } objToDelete = monitoringObject; break; } if (objToDelete != null) { _monitoringDictionary.TryRemove(objToDelete.ServiceName, out _); } return(Task.CompletedTask); }
private void UpdateMonitoring(bool reset) { lvwMonitor.SuspendLayout(); lvwMonitor.BeginUpdate(); bool isWarning = false; foreach (ListViewItem lvi in lvwMonitor.Items) { IMonitoringObject mo = (IMonitoringObject)lvi.Tag; if (reset) { mo.Reset(); } mo.Refresh(); ListViewItem.ListViewSubItem lvsi = lvi.SubItems[2]; lvsi.Text = mo.Value; if (mo.State == MonitoringObjectState.Warning) { lvsi.ForeColor = ColorWarning; } else if (mo.State == MonitoringObjectState.Idle) { lvsi.ForeColor = ColorDisabled; } if (mo.State == MonitoringObjectState.Warning) { isWarning = true; } } lvwMonitor.EndUpdate(); lvwMonitor.ResumeLayout(true); tabPageMonitor.ImageIndex = isWarning ? ImageIndexWarning : -1; }
private async Task InsertAsync(IMonitoringObject mObject) { await _monitorObjectRepository.InsertAsync(mObject); }
public async Task PingAsync(IMonitoringObject mObject) { await InsertAsync(mObject); }
/// <summary> /// Регистрирует объект мониторинга /// </summary> protected void RegisterMonitoringObject(IMonitoringObject monitoringObject) { _monitoringObjects.Add(monitoringObject); }
public Task InsertAsync(IMonitoringObject mObject) { _monitoringDictionary[mObject.ServiceName] = mObject; return(Task.CompletedTask); }