- FastAPI приложение для отправки мониторинговых алертов в мессенджеры - Поддержка Telegram и MAX/VK - Интеграция с Grafana, Zabbix, AlertManager - Автоматическое создание тикетов в Jira - Управление группами мессенджеров через API - Декораторы для авторизации и скрытия эндпоинтов - Подробная документация в папке docs/ Автор: Сергей Антропов Сайт: https://devops.org.ru
4.2 KiB
4.2 KiB
Конфигурация групп
Формат конфигурации
Конфигурация групп хранится в файле config/groups.json.
Пример конфигурации:
{
"monitoring": {
"messenger": "telegram",
"chat_id": -1001234567890,
"thread_id": 0,
"config": {}
},
"alerts_max": {
"messenger": "max",
"chat_id": "123456789",
"thread_id": null,
"config": {
"access_token": "optional_override_max_token",
"api_version": "5.131"
}
}
}
Поля конфигурации:
messenger- тип мессенджера (telegram,max)chat_id- ID чата (может быть числом для Telegram или строкой для MAX/VK)thread_id- ID треда в группе (только для Telegram,0для основной группы,nullдля MAX/VK)config- дополнительная конфигурация для мессенджера (например,access_tokenдля MAX/VK)
Управление группами через API
Управление группами доступно через REST API с защитой API ключом.
Получение списка поддерживаемых мессенджеров
GET /api/v1/groups/messengers
Пример ответа:
{
"status": "ok",
"messengers": [
{
"type": "telegram",
"name": "Telegram",
"supports_threads": true,
"enabled": true
},
{
"type": "max",
"name": "MAX/VK",
"supports_threads": false,
"enabled": false
}
]
}
Получение списка групп
# Без API ключа (только названия)
GET /api/v1/groups
# С API ключом (полная информация)
GET /api/v1/groups
Headers: X-API-Key: your_api_key_here
Пример ответа (без API ключа):
{
"status": "ok",
"groups": [
{"name": "monitoring", "chat_id": null},
{"name": "alerts", "chat_id": null}
],
"count": 2
}
Пример ответа (с API ключом):
{
"status": "ok",
"groups": [
{
"name": "monitoring",
"messenger": "telegram",
"chat_id": -1001234567890,
"thread_id": 0
},
{
"name": "alerts_max",
"messenger": "max",
"chat_id": "123456789",
"thread_id": null
}
],
"count": 2
}
Создание группы
POST /api/v1/groups
Headers:
Content-Type: application/json
X-API-Key: your_api_key_here
{
"group_name": "monitoring",
"messenger": "telegram",
"chat_id": -1001234567890,
"thread_id": 0
}
Пример запроса для MAX/VK:
POST /api/v1/groups
Headers:
Content-Type: application/json
X-API-Key: your_api_key_here
{
"group_name": "max_alerts",
"messenger": "max",
"chat_id": "123456789",
"thread_id": 0,
"config": {
"access_token": "your_max_access_token"
}
}
Пример ответа:
{
"status": "ok",
"message": "Группа 'monitoring' создана с мессенджером 'telegram' и ID -1001234567890"
}
Обновление группы
PUT /api/v1/groups/{group_name}
Headers:
Content-Type: application/json
X-API-Key: your_api_key_here
{
"messenger": "telegram",
"chat_id": -1001234567891,
"thread_id": 0
}
Пример ответа:
{
"status": "ok",
"message": "Группа 'monitoring' обновлена"
}
Удаление группы
DELETE /api/v1/groups/{group_name}
Headers: X-API-Key: your_api_key_here
Пример ответа:
{
"status": "ok",
"message": "Группа 'monitoring' удалена"
}
API ключ для управления группами:
- Настраивается в переменной окружения
API_KEY - Без API ключа можно только просматривать названия групп
- С API ключом доступны все операции (создание, обновление, удаление)
- API ключ передается в заголовке:
X-API-Key: your_api_key_here