Files
MessageGateway/docs/jira-mapping.md
Sergey Antropov b90def35ed Initial commit: Message Gateway project
- FastAPI приложение для отправки мониторинговых алертов в мессенджеры
- Поддержка Telegram и MAX/VK
- Интеграция с Grafana, Zabbix, AlertManager
- Автоматическое создание тикетов в Jira
- Управление группами мессенджеров через API
- Декораторы для авторизации и скрытия эндпоинтов
- Подробная документация в папке docs/

Автор: Сергей Антропов
Сайт: https://devops.org.ru
2025-11-12 20:25:11 +03:00

114 lines
4.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Конфигурация 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