Перейти к содержимому

Документация

ElastAlert

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 — в консоли будут выведены тела отправляемых запросов.

Документация ElastAlert