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