ElastAlert 2 — активно развиваемый форк оригинального ElastAlert с расширенным набором функций и поддержкой современных версий Elasticsearch/OpenSearch.
Предварительные требования
- ElastAlert 2 версии 2.0 или выше.
- API-токен команды из раздела Токены.
Эндпоинт
POST https://sereno.systems/api/v1/alerts/create?source=elastalert2
Настройка правила
ElastAlert 2 поддерживает два типа HTTP-оповещений: http_post (унаследован от ElastAlert) и http_post2 (новый, с Jinja2-шаблонами). Для интеграции с Sereno OnCall используйте http_post — он позволяет явно задать нужную структуру payload через http_post_payload.
В файле правила (например, my_rule.yaml) укажите тип оповещения http_post и параметры подключения:
name: My Sereno Alert Rule
type: any
# Подключение к Elasticsearch
es_host: localhost
es_port: 9200
index: logs-*
# Фильтр
filter:
- term:
level: error
# Оповещение через http_post
alert: http_post
http_post_url: 'https://sereno.systems/api/v1/alerts/create?source=elastalert2'
http_post_headers:
Authorization: 'Bearer <токен>'
Content-Type: 'application/json'
http_post_payload:
rule_name: '%(name)s'
alert_time: '%(alert_time)s'
num_matches: '%(num_matches)s'
alert_info:
type: '%(type)s'
matches: '%(matches)s'
http_post_all_values: false
Формат payload
Sereno OnCall ожидает следующую структуру:
{
"rule_name": "My Alert Rule",
"alert_time": "2026-01-01T12:00:00Z",
"num_matches": 42,
"alert_info": {
"type": "RESOLVED"
},
"matches": [
{
"host": "web-01",
"service": "nginx",
"message": "Connection refused",
"status": "error"
}
]
}
Отличия от ElastAlert
| Параметр | ElastAlert | ElastAlert 2 |
|---|---|---|
?source= | elastalert | elastalert2 |
| Число совпадений | num_hits | num_matches |
Поле match_time | есть | нет |
Поля из каждого объекта matches, перечисленные ниже, попадают в лейблы алерта; остальные — в аннотации:
action, count, endpoint, host, ip, latency, service, status, type, user
Для отладки запустите ElastAlert 2 с флагом
--debug— в консоли будут выведены тела отправляемых запросов.