public Task Execute(IJobExecutionContext context) { var allAgentsInfo = _agentsRepository.GetAllAgentsInfo(); foreach (var agentInfo in allAgentsInfo) { var last = _repository.GetLast(agentInfo.AgentId); var request = new GetAllRamMetricsApiRequest() { AgentUrl = agentInfo.AgentUrl, FromTime = last, ToTime = DateTimeOffset.UtcNow, }; var response = _client.GetAllRamMetrics(request); if (response != null) { if (response.Metrics[0].Time == last) { response.Metrics.RemoveAt(0); } foreach (var metric in response.Metrics) { var formatedMetric = _mapper.Map <RamMetric>(metric); formatedMetric.AgentId = agentInfo.AgentId; _repository.Create(formatedMetric); } } } return(Task.CompletedTask); }
public IActionResult GetAvaliableRam() { var metrics = _repository.GetLast(); var response = _mapper.Map <RamMetricsGetLastResponse>(metrics); _logger.LogInformation($"GET"); return(Ok(response)); }
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); }