Exemplo n.º 1
0
        public async Task <IMonitoringObject> GetByNameAsync(string serviceName)
        {
            IMonitoringObject mObject = await _monitorObjectRepository.GetByNameAsync(serviceName) ??
                                        await _apiMonitoringObjectRepository.GetByNameAsync(serviceName);

            return(mObject);
        }
Exemplo n.º 2
0
        public async Task UnmuteAsync(string serviceName)
        {
            IMonitoringObject mObject = await GetByNameAsync(serviceName);

            mObject.SkipCheckUntil = null;
            await InsertAsync(mObject);
        }
Exemplo n.º 3
0
        public async Task MuteAsync(string serviceName, int minutes)
        {
            IMonitoringObject mObject = await GetByNameAsync(serviceName);

            mObject.SkipCheckUntil = DateTime.UtcNow.AddMinutes(minutes);
            await InsertAsync(mObject);
        }
Exemplo n.º 4
0
        /// <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;
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 10
0
        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;
        }
Exemplo n.º 11
0
 private async Task InsertAsync(IMonitoringObject mObject)
 {
     await _monitorObjectRepository.InsertAsync(mObject);
 }
Exemplo n.º 12
0
 public async Task PingAsync(IMonitoringObject mObject)
 {
     await InsertAsync(mObject);
 }
Exemplo n.º 13
0
 /// <summary>
 /// Регистрирует объект мониторинга
 /// </summary>
 protected void RegisterMonitoringObject(IMonitoringObject monitoringObject)
 {
     _monitoringObjects.Add(monitoringObject);
 }
        public Task InsertAsync(IMonitoringObject mObject)
        {
            _monitoringDictionary[mObject.ServiceName] = mObject;

            return(Task.CompletedTask);
        }