예제 #1
0
        public IActionResult GetMetricsByPercentileFromAllCluster(
            [FromRoute] HddMetricGetByIntervalForClusterRequest request,
            [FromRoute] Percentile percentile)
        {
            _logger.LogDebug("Вызов метода. Параметры:" +
                             $" {nameof(request.FromTime)} = {request.FromTime}" +
                             $" {nameof(request.ToTime)} = {request.ToTime}" +
                             $" {nameof(percentile)} = {percentile}");

            var agents = _agentRepository.GetAllAgentsInfo();

            var response = new AllMetricsResponse <HddMetricDto>();

            foreach (var agent in agents.Agents)
            {
                var currentAgentMetrics = _repository.GetByTimeIntervalPercentile(agent.AgentId, request.FromTime, request.ToTime, percentile);

                foreach (var metric in currentAgentMetrics.Metrics)
                {
                    response.Metrics.Add(_mapper.Map <HddMetricDto>(metric));
                }
            }

            return(Ok(response));
        }
예제 #2
0
        public AllMetricsResponse <T> GetMetrics <T>(IMetricGetByIntervalRequestByClient request, ApiNames apiName)
        {
            var fromParameter = request.FromTime.UtcDateTime.ToString("O");
            var toParameter   = request.ToTime.UtcDateTime.ToString("O");
            var agentId       = request.AgentId.ToString();
            var httpRequest   = new HttpRequestMessage(
                HttpMethod.Get,
                $"{ManagerUri}/api/metrics/{apiNames[apiName]}/agent/{agentId}/from/{fromParameter}/to/{toParameter}");

            var response = new AllMetricsResponse <T>();

            try
            {
                HttpResponseMessage managerResponse = _httpClient.SendAsync(httpRequest).Result;

                var responseStream = managerResponse.Content.ReadAsStreamAsync().Result;
                var streamReader   = new StreamReader(responseStream);
                var content        = streamReader.ReadToEnd();

                var options = new JsonSerializerOptions()
                {
                    PropertyNameCaseInsensitive = true
                };
                response = JsonSerializer.Deserialize <AllMetricsResponse <T> >(content, options);
            }
            catch (Exception ex)
            {
                _logger.LogError(ex.Message);
            }

            return(response);
        }
        public virtual async Task <IActionResult> GetByTimePeriod([FromRoute] long fromTime, [FromRoute] long toTime)
        {
            _logger.LogInformation(string.Format("params: fromTime {0}; toTime {1}", fromTime, toTime));
            var responce = new AllMetricsResponse
            {
                Metrics = await _repository.GetAll()
                          .Where(item => item.Time > fromTime && item.Time < toTime)
                          .Select(item => _mapper.Map <MetricDto>(item))
                          .ToListAsync()
            };

            return(Ok(responce));
        }
예제 #4
0
        public IActionResult GetMetricsFromAgent([FromRoute] HddMetricGetByIntervalForAgentRequest request)
        {
            _logger.LogDebug("Вызов метода. Параметры:" +
                             $" {nameof(request.AgentId)} = {request.AgentId}" +
                             $" {nameof(request.FromTime)} = {request.FromTime}" +
                             $" {nameof(request.ToTime)} = {request.ToTime}");

            var metrics = _repository.GetByTimeInterval(request.AgentId, request.FromTime, request.ToTime);

            var response = new AllMetricsResponse <HddMetricDto>();

            foreach (var metric in metrics.Metrics)
            {
                response.Metrics.Add(_mapper.Map <HddMetricDto>(metric));
            }

            return(Ok(response));
        }