Initial commit: Message Gateway project

- FastAPI приложение для отправки мониторинговых алертов в мессенджеры
- Поддержка Telegram и MAX/VK
- Интеграция с Grafana, Zabbix, AlertManager
- Автоматическое создание тикетов в Jira
- Управление группами мессенджеров через API
- Декораторы для авторизации и скрытия эндпоинтов
- Подробная документация в папке docs/

Автор: Сергей Антропов
Сайт: https://devops.org.ru
This commit is contained in:
2025-11-12 20:25:11 +03:00
commit b90def35ed
72 changed files with 10609 additions and 0 deletions

105
docs/api/debug.md Normal file
View File

@@ -0,0 +1,105 @@
# API для отладки
**Важно:** Эндпоинт `/api/v1/debug/dump` скрыт из Swagger UI для безопасности, но остается доступным для прямых запросов. Используйте его только для отладки.
## Сохранение JSON данных для отладки
```bash
POST /api/v1/debug/dump
Content-Type: application/json
{
"test": "data",
"timestamp": "2024-01-01T00:00:00Z",
"source": "grafana",
"alert": {
"title": "Test alert",
"state": "alerting"
}
}
```
**Пример ответа:**
```json
{
"status": "ok",
"message": "Данные сохранены в dump.json",
"data": {
"test": "data",
"timestamp": "2024-01-01T00:00:00Z",
"source": "grafana",
"alert": {
"title": "Test alert",
"state": "alerting"
}
}
}
```
## Примечания
- Используется для отладки входящих webhook запросов
- Данные сохраняются в файл `/app/app/dump.json` в контейнере
- Файл можно просмотреть через `make shell` или `make docker shell`
- Полезно для анализа формата данных от различных источников
- **Эндпоинт скрыт из Swagger UI** с помощью декоратора `@hide_from_api` для безопасности
- Эндпоинт не требует авторизации (API ключ не нужен)
- Используется только для внутренней отладки
## Примеры использования
### Сохранение данных из Grafana
```bash
curl -X POST "http://your-gateway-url/api/v1/debug/dump" \
-H "Content-Type: application/json" \
-d '{
"source": "grafana",
"alert": {
"title": "Test alert",
"state": "alerting"
}
}'
```
### Сохранение данных из Zabbix
```bash
curl -X POST "http://your-gateway-url/api/v1/debug/dump" \
-H "Content-Type: application/json" \
-d '{
"source": "zabbix",
"event": {
"event-id": "8819711",
"event-name": "High CPU utilization",
"status": "PROBLEM"
}
}'
```
### Сохранение данных из AlertManager
```bash
curl -X POST "http://your-gateway-url/api/v1/debug/dump" \
-H "Content-Type: application/json" \
-d '{
"source": "alertmanager",
"status": "firing",
"commonLabels": {
"alertname": "HighCPUUsage",
"severity": "critical"
}
}'
```
## Просмотр сохраненных данных
```bash
# Через make shell
make shell
cat /app/app/dump.json
# Или напрямую через docker
docker exec -it message-gateway cat /app/app/dump.json
```