trust-module-backend/src/metrics.controller.ts

44 lines
2.3 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

import { Controller, Get, Query } from '@nestjs/common';
import { PrometheusService } from './prometheus.service';
import { ApiTags, ApiOperation, ApiResponse, ApiQuery } from '@nestjs/swagger';
@ApiTags('Metrics - HTTP')
@Controller('metrics')
export class MetricsController {
constructor(private readonly prometheusService: PrometheusService) { }
@Get()
@ApiOperation({ summary: 'Получиние данных по конкретной метрике' })
@ApiQuery({ name: 'metric', required: true, description: 'Имя метрики для извлечения' })
@ApiQuery({ name: 'start', required: false, description: 'Начальная временная метка для запроса диапазона' })
@ApiQuery({ name: 'end', required: false, description: 'Конечная временная метка для запроса диапазона' })
@ApiQuery({ name: 'step', required: false, description: 'Размер шага для запроса диапазона' })
@ApiResponse({ status: 200, description: 'Успешно получены метрические данные' })
@ApiResponse({ status: 400, description: 'Указанные недопустимые параметры' })
@ApiResponse({ status: 500, description: 'Внутренняя ошибка сервера' })
async getMetrics(
@Query('metric') metric: string,
@Query('start') start: number,
@Query('end') end: number,
@Query('step') step: number,
) {
if (start && end && step) {
return this.prometheusService.fetchMetricsRange(metric, start, end, step);
}
return this.prometheusService.fetchMetrics(metric);
}
@Get('/all')
@ApiOperation({ summary: 'Получение списка всех метрик' })
@ApiResponse({ status: 200, description: 'Список извлеченных метрик' })
async getAllMetrics() {
return this.prometheusService.fetchAllMetrics();
}
@Get('/all-values')
@ApiOperation({ summary: 'Получение списка всех метрик и их значения' })
@ApiResponse({ status: 200, description: 'Все метрики с полученными значениями' })
async getAllMetricsWithValues() {
return this.prometheusService.fetchAllMetricsWithValues();
}
}