Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Читаем логи: elastalert

Evgenii Terechkov
October 18, 2018
38

Читаем логи: elastalert

Evgenii Terechkov

October 18, 2018
Tweet

Transcript

  1. 3 slurm.io Зачем оно ? • Часто смотрите в Kibana?

    • Регулярно ловите похожие проблемы в логах? Elastalert это способ зафиксировать знания об этих проблемах и автоматизировать оповещения об их появлении
  2. 4 slurm.io Что такое Elastalert? • Анализатор логов в ElasticSearch

    • Алертилка в почту/телеграмм/и т. д. Сайт проекта Документация
  3. 5 slurm.io Установка Элементарно (и бесполезно): # helm install stable/elastalert

    Не так-то просто (установка/обновление): # helm upgrade --install -f values.yaml stable/ elastalert написав values.yaml с осмысленным правилами алертинга :-\
  4. 6 slurm.io Пишем values.yaml • Полезно начать с дефолтных значений:

    helm inspect values stable/elastalert > values.yaml • Стандартные секции для чарта: image (фиксируем версию), resources (requests.memory: 1Gi, limits.memory:2Gi) • Общая конфигурация ES (секция elasticsearch): host/port/ useSsl/username/password/verifyCerts • Правила и алерты (секция rules): правила в YAML, по файлу на правило. Можно указывать свой ES (см документацию). • Далее до/переписываем правила в values.yaml и устанавливаем/обновляем той же командой helm-а
  5. 7 slurm.io Пример values.yaml revisionHistoryLimit: 5 runIntervalMins: 1 bufferTimeMins: 15

    alertRetryLimitMins: 2880 realertIntervalMins: "" writebackIndex: elastalert_status image: repository: jertel/elastalert-docker tag: 0.1.35 pullPolicy: IfNotPresent resources: requests: memory: 1Gi limits: memory: 2Gi elasticsearch: host: "logging-es" port: 9200 useSsl: "False" username: "" password: "" verifyCerts: "True" rules: bgp_peer_down: |- --- owner: e.tereshkov name: BGP peer down description: "BGP peer down messages" index: logstash*%Y.%m.%d use_strftime_index: True type: any filter: - query: query_string: query: "bgp peer down" alert_text: "" alert: telegram telegram_bot_token: XXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXX_XX telegram_room_id: "-YYYYYYYYYY" nodeSelector: {} tolerations: [] https://gitlab.slurm.io/slurm3/slurm/blob/m aster/practice/8.elastalert/values.yaml
  6. 8 slurm.io Логика работы • Для каждого правила, сделать выборку

    из индекса index ES (используя filter), с последней точки • Если надо, сохранить промежуточный результат в ES (индекс elastalert_status) • Сохранить точку, до которой дочитали, в ES (elastalert_status) • Если произошло срабатывание правила (rule), отправить алерт (alert) • Повторить сначала
  7. 9 slurm.io Фильтры Их несколько видов, самый полезный - формат

    запроса Lucene filter: - query: query_string: query: "NOT kubernetes.namespace:kube-system" Т.е. всё то же самое, что вы пишете в Kibana Остальное в документации
  8. 11 slurm.io Примеры правил name: Logs_not_flows is_enabled: True type: flatline

    index: logstash*%Y.%m.%d use_strftime_index: True threshold: 1 timeframe: minutes: 5 filter: - query: query_string: query: "*" aggregation: minutes: 10 name: Strange_logs_spikes is_enabled: True type: spike index: logstash*%Y.%m.%d use_strftime_index: True spike_height: 4 spike_type: both threshold_ref: 100 threshold_cur: 100 query_key: kubernetes.container.name timeframe: minutes: 60 filter: - query: query_string: query: "NOT kubernetes.namespace:kube-system" aggregation: minutes: 10
  9. 12 slurm.io Алерты alert: telegram telegram_bot_token: XXXXXXXXX:XXXXXX_XX telegram_room_id: "-YYYYYYYY" alert:

    - email - debug smtp_host: smtp from_addr: [email protected] alert_subject: "K8S_{0}@{1}_WARNING" alert_subject_args: - name - kubernetes.container.name alert_text_type: exclude_fields alert_text: "Logs spike detected for container {0}/{1} at time: {2} (index:{3})" alert_text_args: - kubernetes.namespace - kubernetes.container.name - "@timestamp" - _index email: - "[email protected]" - "[email protected]" Много разных , пара примеров:
  10. 13 slurm.io Примеры оповещений Logs_not_flows An abnormally low number of

    events occurred around 2018-08-31 00:54 UTC. Between 2018-08-31 00:49 UTC and 2018- 08-31 00:54 UTC, there were less than 1 events. Strange_logs_spikes@myapp on k8s.slurm.io Logs spike detected for container stage/myapp at time: 2018-09- 28T16:53:46.433Z (index:filebeat-stage- 2018.09.28) An abnormal number (120) of events occurred around 2018-09-28 16:53 UTC. Preceding that time, there were only 497 events within 1:00:00
  11. 14 slurm.io Проблемы • Нет сигнала "отбоя", elastalert не хранит

    состояние алертов • Оповещение на каждое правило, много copy/paste • Бывает неочевидна логика срабатывания • Неочевидная документация (десятки параметров)