public Task Execute(IJobExecutionContext context) { _logger.LogDebug("== CpuMetricJob START - " + $"Time {DateTimeOffset.UtcNow}"); var request = new CpuMetricGetByIntervalRequestByClient() { AgentId = _allCpuMetrics.AgentId, FromTime = _allCpuMetrics.LastTime, ToTime = DateTimeOffset.UtcNow, }; var response = _client.GetMetrics <CpuMetricDto>(request, ApiNames.Cpu); // Перекладываем данные из Response в модели метрик var metrics = new List <CpuMetric>(); foreach (var metricDto in response.Metrics) { metrics.Add(new CpuMetric { Time = metricDto.Time, Value = metricDto.Value }); } _allCpuMetrics.AddMetrics(metrics); _logger.LogDebug("!= CpuMetricJob END - " + $"Time {DateTimeOffset.UtcNow}"); return(Task.CompletedTask); }
public Task Execute(IJobExecutionContext context) { _logger.LogDebug("== CpuMetricJob START - " + $"Time {DateTimeOffset.UtcNow}"); //Получаем из репозитория агентов список всех агентов var allAgentsInfo = _agentsRepository.GetAllAgentsInfo(); //Обрабатываем каждого агента в списке foreach (var agentInfo in allAgentsInfo.Agents) { //Временная метка, когда для текущего агента была снята последняя метрика var lastTime = _repository.GetLast(agentInfo.AgentId); // Создаем запрос для получения от текущего агента метрик за период времени // от последней проверки до текущего момента var request = new CpuMetricGetByIntervalRequestByClient() { AgentUri = agentInfo.AgentUri, FromTime = lastTime, ToTime = DateTimeOffset.UtcNow, }; // Делаем запрос к Агенту метрик и получаем список метрик var response = _client.GetMetrics <CpuMetricFromAgentDto>(request, ApiNames.Cpu); if (response != null) { // Убираем из выборки первую метрику если она совпадает с последней сохраненной в базе // для исключения дублирования данных в базе if (response.Metrics[0].Time == lastTime) { response.Metrics.RemoveAt(0); } // Перекладываем данные из Response в модели метрик var recievedMetrics = new AllMetrics <CpuMetric>(); foreach (var metricDto in response.Metrics) { recievedMetrics.Metrics.Add(new CpuMetric { AgentId = agentInfo.AgentId, Time = metricDto.Time, Value = metricDto.Value }); } _repository.Create(recievedMetrics); } } _logger.LogDebug("!= CpuMetricJob END - " + $"Time {DateTimeOffset.UtcNow}"); return(Task.CompletedTask); }