- FastAPI приложение для отправки мониторинговых алертов в мессенджеры - Поддержка Telegram и MAX/VK - Интеграция с Grafana, Zabbix, AlertManager - Автоматическое создание тикетов в Jira - Управление группами мессенджеров через API - Декораторы для авторизации и скрытия эндпоинтов - Подробная документация в папке docs/ Автор: Сергей Антропов Сайт: https://devops.org.ru
33 lines
1.4 KiB
Python
33 lines
1.4 KiB
Python
from prometheus_client import make_asgi_app, Counter, Gauge, CollectorRegistry, push_to_gateway # Добавляем метрики для прометея
|
|
from fastapi import Request
|
|
|
|
import os
|
|
|
|
#def add_middleware(app):
|
|
# # Обьявляем метрики, которые будем собирать
|
|
# registry = getMetricsRegistry()
|
|
# all_requests = Counter('tg_monitoring_gateway_all_requests_counter', 'Счетчик запросов', registry=registry)
|
|
# # Запускаем счетчик запросов
|
|
# @app.middleware("request_count")
|
|
# def request_count(request: Request, call_next):
|
|
# all_requests.inc()
|
|
# pushMetricsRegistry(registry, all_requests)
|
|
# response = call_next(request)
|
|
# return response
|
|
|
|
#def getMetricsRegistry():
|
|
# registry = CollectorRegistry()
|
|
# return(registry)
|
|
|
|
#def pushMetricsRegistry(registry, metric):
|
|
# pushgateway_url = os.getenv('PUSHGATEWAY_URL')
|
|
# pushgateway_job = os.getenv('PUSHGATEWAY_JOB')
|
|
# push_to_gateway(pushgateway_url, job=pushgateway_job, registry=registry)
|
|
# return(metric)
|
|
|
|
#def requestsCount(registry, endpoint):
|
|
# all_requests = Counter('tg_monitoring_gateway_api_requests_counter', 'Счетчик запросов к API', labelnames=['endpoint'], registry=registry)
|
|
# all_requests.labels(endpoint=endpoint).inc()
|
|
# pushMetricsRegistry(registry, all_requests)
|
|
# return(endpoint)
|