ElastAlert — инструмент для алертинга на основе данных из Elasticsearch.
Интеграция с Sereno OnCall использует тип оповещения http_post, который отправляет данные алерта на произвольный HTTP-эндпоинт.
Предварительные требования
- ElastAlert версии 0.1.0 или выше (оригинальный, не ElastAlert2).
- API-токен команды из раздела Токены.
Эндпоинт
POST https://sereno.systems/api/v1/alerts/create?source=elastalert
Настройка правила
В файле правила (например, 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=elastalert'
http_post_headers:
Authorization: 'Bearer <токен>'
Content-Type: 'application/json'
http_post_payload:
rule_name: '%(name)s'
alert_time: '%(alert_time)s'
num_hits: '%(num_hits)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",
"match_time": "2026-01-01T11:59:00Z",
"num_hits": 42,
"alert_info": {
"type": "RESOLVED"
},
"matches": [
{
"host": "web-01",
"service": "nginx",
"message": "Connection refused",
"status": "error"
}
]
}
Поля из каждого объекта matches, перечисленные ниже, попадают в лейблы алерта; остальные — в аннотации:
action, count, endpoint, host, ip, latency, service, status, type, user
Для отладки запустите ElastAlert с флагом
--debug— в консоли будут выведены тела отправляемых запросов.