44 lines
2.3 KiB
TypeScript
44 lines
2.3 KiB
TypeScript
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();
|
||
}
|
||
} |