- FastAPI приложение для отправки мониторинговых алертов в мессенджеры - Поддержка Telegram и MAX/VK - Интеграция с Grafana, Zabbix, AlertManager - Автоматическое создание тикетов в Jira - Управление группами мессенджеров через API - Декораторы для авторизации и скрытия эндпоинтов - Подробная документация в папке docs/ Автор: Сергей Антропов Сайт: https://devops.org.ru
114 lines
4.1 KiB
Markdown
114 lines
4.1 KiB
Markdown
# Конфигурация Jira Mapping
|
||
|
||
## Формат конфигурации
|
||
|
||
Конфигурация маппинга Jira хранится в файле `config/jira_mapping.json`. Она определяет, какие тикеты создавать в Jira на основе алертов.
|
||
|
||
**Пример конфигурации:**
|
||
```json
|
||
{
|
||
"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 Kubernetes
|
||
- `alertname` - название алерта
|
||
- Любые другие метки из `commonLabels`
|
||
|
||
### Для Grafana:
|
||
- `state` - состояние алерта (alerting, ok, paused, pending, no_data)
|
||
- `ruleName` - название правила
|
||
- `tags` - теги алерта (объект с ключами и значениями)
|
||
|
||
### Для Zabbix:
|
||
- `status` - статус (PROBLEM, OK)
|
||
- `event-severity` - серьезность события
|
||
- `event-name` - название события
|
||
- `host-name` - имя хоста
|
||
|
||
**Примеры условий:**
|
||
```json
|
||
{
|
||
"conditions": {
|
||
"severity": "critical",
|
||
"namespace": "production"
|
||
}
|
||
}
|
||
```
|
||
|
||
```json
|
||
{
|
||
"conditions": {
|
||
"state": "alerting",
|
||
"tags": {
|
||
"environment": "production"
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
**Приоритет маппингов:**
|
||
1. Проверяются все маппинги в порядке их определения
|
||
2. Используется первый маппинг, условия которого совпадают с данными алерта
|
||
3. Если маппинг не найден, используются значения по умолчанию
|
||
|
||
## Автоматическое создание тикетов
|
||
|
||
При получении алерта, если интеграция с Jira включена и выполнены условия для создания тикета:
|
||
|
||
1. Приложение проверяет конфигурацию маппинга
|
||
2. Находит подходящий маппинг на основе условий алерта
|
||
3. Создает тикет в Jira с указанными параметрами
|
||
4. Добавляет кнопку в Telegram сообщение со ссылкой на созданный тикет
|
||
|
||
**Настройка переменных окружения:**
|
||
- `JIRA_ENABLED=true` - включить интеграцию с Jira
|
||
- `JIRA_URL=https://jira.example.com` - URL Jira сервера
|
||
- `JIRA_EMAIL=user@example.com` - Email пользователя Jira
|
||
- `JIRA_API_TOKEN=your_jira_api_token_here` - API токен Jira
|
||
- `JIRA_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
|
||
|