public Task Execute(IJobExecutionContext context) { var allAgentsInfo = _agentsRepository.GetAllAgentsInfo(); foreach (var agentInfo in allAgentsInfo) { var last = _repository.GetLast(agentInfo.AgentId); var request = new GetAllCpuMetricsApiRequest() { AgentUrl = agentInfo.AgentUrl, FromTime = last, ToTime = DateTimeOffset.UtcNow, }; var response = _client.GetCpuMetrics(request); if (response != null) { if (response.Metrics[0].Time == last) { response.Metrics.RemoveAt(0); } foreach (var metric in response.Metrics) { var formatedMetric = _mapper.Map <CpuMetric>(metric); formatedMetric.AgentId = agentInfo.AgentId; _repository.Create(formatedMetric); } } } return(Task.CompletedTask); }
public Task Execute(IJobExecutionContext context) { _logger.LogDebug("== HddMetricJob START - " + $"Time {DateTimeOffset.UtcNow}"); //Получаем из репозитория агентов список всех агентов var allAgentsInfo = _agentsRepository.GetAllAgentsInfo(); //Обрабатываем каждого агента в списке foreach (var agentInfo in allAgentsInfo.Agents) { //Временная метка, когда для текущего агента была снята последняя метрика var lastTime = _repository.GetLast(agentInfo.AgentId); // Создаем запрос для получения от текущего агента метрик за период времени // от последней проверки до текущего момента var request = new HddMetricGetByIntervalRequestByClient() { AgentUri = agentInfo.AgentUri, FromTime = lastTime, ToTime = DateTimeOffset.UtcNow, }; // Делаем запрос к Агенту метрик и получаем список метрик var response = _client.GetMetrics <HddMetricFromAgentDto>(request, ApiNames.Hdd); if (response != null) { // Убираем из выборки первую метрику если она совпадает с последней сохраненной в базе // для исключения дублирования данных в базе if (response.Metrics[0].Time == lastTime) { response.Metrics.RemoveAt(0); } // Перекладываем данные из Response в модели метрик var recievedMetrics = new AllMetrics <HddMetric>(); foreach (var metricDto in response.Metrics) { recievedMetrics.Metrics.Add(new HddMetric { AgentId = agentInfo.AgentId, Time = metricDto.Time, Value = metricDto.Value }); } _repository.Create(recievedMetrics); } } _logger.LogDebug("!= HddMetricJob END - " + $"Time {DateTimeOffset.UtcNow}"); return(Task.CompletedTask); }
public IActionResult GetMetricsFromAllCluster([FromRoute] HddMetricGetByIntervalForClusterRequest request) { _logger.LogDebug("Вызов метода. Параметры:" + $" {nameof(request.FromTime)} = {request.FromTime}" + $" {nameof(request.ToTime)} = {request.ToTime}"); var agents = _agentRepository.GetAllAgentsInfo(); var response = new AllMetricsResponse <HddMetricDto>(); foreach (var agent in agents.Agents) { var currentAgentMetrics = _repository.GetByTimeInterval(agent.AgentId, request.FromTime, request.ToTime); foreach (var metric in currentAgentMetrics.Metrics) { response.Metrics.Add(_mapper.Map <HddMetricDto>(metric)); } } return(Ok(response)); }
public IActionResult GetMetricsFromAllCluster([FromRoute] DateTimeOffset fromTime, [FromRoute] DateTimeOffset toTime) { _logger.LogDebug($"GetMetricsFromAllCluster : fromTime = {fromTime}; toTime = {toTime}"); var agents = _agentRepository.GetAllAgentsInfo(); var response = new AllRamMetricsResponse() { Metrics = new List <RamMetricDto>() }; foreach (var agent in agents) { var metrics = _repository.GetInTimePeriod(agent.AgentId, fromTime, toTime);; foreach (var metric in metrics) { response.Metrics.Add(_mapper.Map <RamMetricDto>(metric)); } } return(Ok(response)); }
public IActionResult Read() { _logger.LogDebug("Вызов метода"); var allAgentsInfo = _repository.GetAllAgentsInfo(); var response = new AllAgentsInfoResponse(); foreach (var agentInfo in allAgentsInfo.Agents) { response.Agents.Add(_mapper.Map <AgentInfoDto>(agentInfo)); } return(Ok(response)); }
public IActionResult ReadRegisteredAgents() { _logger.LogInformation("NLog вызван в ReadRegisteredAgents"); var allAgentsInfo = _repository.GetAllAgentsInfo(); var response = new AllAgentsInfoResponse() { Agents = new List <AgentInfoDto>() }; foreach (var agentInfo in allAgentsInfo) { response.Agents.Add(_mapper.Map <AgentInfoDto>(agentInfo)); } return(Ok(response)); }