- FastAPI приложение для отправки мониторинговых алертов в мессенджеры - Поддержка Telegram и MAX/VK - Интеграция с Grafana, Zabbix, AlertManager - Автоматическое создание тикетов в Jira - Управление группами мессенджеров через API - Декораторы для авторизации и скрытия эндпоинтов - Подробная документация в папке docs/ Автор: Сергей Антропов Сайт: https://devops.org.ru
4.1 KiB
4.1 KiB
Конфигурация Jira Mapping
Формат конфигурации
Конфигурация маппинга Jira хранится в файле config/jira_mapping.json. Она определяет, какие тикеты создавать в Jira на основе алертов.
Пример конфигурации:
{
"alertmanager": {
"default_project": "MON",
"default_assignee": null,
"default_issue_type": "Bug",
"default_priority": "High",
"mappings": [
{
"conditions": {
"severity": "critical",
"namespace": "production"
},
"project": "MON",
"assignee": "devops-team@example.com",
"issue_type": "Bug",
"priority": "Highest",
"labels": ["critical", "production", "alertmanager"]
}
]
},
"grafana": {
"default_project": "MON",
"default_assignee": null,
"default_issue_type": "Bug",
"default_priority": "High",
"mappings": []
},
"zabbix": {
"default_project": "MON",
"default_assignee": null,
"default_issue_type": "Bug",
"default_priority": "High",
"mappings": []
}
}
Условия маппинга
Условия маппинга определяют, когда использовать конкретный маппинг. Поддерживаются следующие условия:
Для AlertManager:
status- статус алерта (firing, resolved)severity- критичность (critical, warning, info)namespace- namespace Kubernetesalertname- название алерта- Любые другие метки из
commonLabels
Для Grafana:
state- состояние алерта (alerting, ok, paused, pending, no_data)ruleName- название правилаtags- теги алерта (объект с ключами и значениями)
Для Zabbix:
status- статус (PROBLEM, OK)event-severity- серьезность событияevent-name- название событияhost-name- имя хоста
Примеры условий:
{
"conditions": {
"severity": "critical",
"namespace": "production"
}
}
{
"conditions": {
"state": "alerting",
"tags": {
"environment": "production"
}
}
}
Приоритет маппингов:
- Проверяются все маппинги в порядке их определения
- Используется первый маппинг, условия которого совпадают с данными алерта
- Если маппинг не найден, используются значения по умолчанию
Автоматическое создание тикетов
При получении алерта, если интеграция с Jira включена и выполнены условия для создания тикета:
- Приложение проверяет конфигурацию маппинга
- Находит подходящий маппинг на основе условий алерта
- Создает тикет в Jira с указанными параметрами
- Добавляет кнопку в Telegram сообщение со ссылкой на созданный тикет
Настройка переменных окружения:
JIRA_ENABLED=true- включить интеграцию с JiraJIRA_URL=https://jira.example.com- URL Jira сервераJIRA_EMAIL=user@example.com- Email пользователя JiraJIRA_API_TOKEN=your_jira_api_token_here- API токен JiraJIRA_PROJECT_KEY=MON- Ключ проекта Jira по умолчаниюJIRA_DEFAULT_ASSIGNEE=user@example.com- Исполнитель по умолчаниюJIRA_DEFAULT_ISSUE_TYPE=Bug- Тип задачи по умолчаниюJIRA_CREATE_ON_ALERT=true- Создавать тикет при алертеJIRA_CREATE_ON_RESOLVED=false- Создавать тикет при resolved