Esempio n. 1
0
        public Task Execute(IJobExecutionContext context)
        {
            _logger.LogDebug("== RamMetricJob START - " +
                             $"Time {DateTimeOffset.UtcNow}");

            var request = new RamMetricGetByIntervalRequestByClient()
            {
                AgentId  = _allRamMetrics.AgentId,
                FromTime = _allRamMetrics.LastTime,
                ToTime   = DateTimeOffset.UtcNow,
            };

            var response = _client.GetMetrics <RamMetricDto>(request, ApiNames.Ram);

            // Перекладываем данные из Response в модели метрик
            var metrics = new List <RamMetric>();

            foreach (var metricDto in response.Metrics)
            {
                metrics.Add(new RamMetric
                {
                    Time  = metricDto.Time,
                    Value = metricDto.Value
                });
            }

            _allRamMetrics.AddMetrics(metrics);

            _logger.LogDebug("!= RamMetricJob END - " +
                             $"Time {DateTimeOffset.UtcNow}");
            return(Task.CompletedTask);
        }
Esempio n. 2
0
        public Task Execute(IJobExecutionContext context)
        {
            _logger.LogDebug("== RamMetricJob START - " +
                             $"Time {DateTimeOffset.UtcNow}");
            //Получаем из репозитория агентов список всех агентов
            var allAgentsInfo = _agentsRepository.GetAllAgentsInfo();

            //Обрабатываем каждого агента в списке
            foreach (var agentInfo in allAgentsInfo.Agents)
            {
                //Временная метка, когда для текущего агента была снята последняя метрика
                var lastTime = _repository.GetLast(agentInfo.AgentId);

                // Создаем запрос для получения от текущего агента метрик за период времени
                // от последней проверки до текущего момента
                var request = new RamMetricGetByIntervalRequestByClient()
                {
                    AgentUri = agentInfo.AgentUri,
                    FromTime = lastTime,
                    ToTime   = DateTimeOffset.UtcNow,
                };

                // Делаем запрос к Агенту метрик и получаем список метрик
                var response = _client.GetMetrics <RamMetricFromAgentDto>(request, ApiNames.Ram);

                if (response != null)
                {
                    // Убираем из выборки первую метрику если она совпадает с последней сохраненной в базе
                    // для исключения дублирования данных в базе
                    if (response.Metrics[0].Time == lastTime)
                    {
                        response.Metrics.RemoveAt(0);
                    }

                    // Перекладываем данные из Response в модели метрик
                    var recievedMetrics = new AllMetrics <RamMetric>();
                    foreach (var metricDto in response.Metrics)
                    {
                        recievedMetrics.Metrics.Add(new RamMetric
                        {
                            AgentId = agentInfo.AgentId,
                            Time    = metricDto.Time,
                            Value   = metricDto.Value
                        });
                    }
                    _repository.Create(recievedMetrics);
                }
            }
            _logger.LogDebug("!= RamMetricJob END - " +
                             $"Time {DateTimeOffset.UtcNow}");
            return(Task.CompletedTask);
        }