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);
        }
Example #2
0
        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);
        }
Example #3
0
        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));
        }