Уведомления от ELK или настройка плагина KAAE watcher

Всем стек ELK хорош, но вот не хватает мне обратной связи от него, а именно уведомлений на почту о каких-то аномальных событиях. Можно конечно в конфиг Logstash заложить отправку письма по определенному событию, но на этом всем возможности и заканчиваются. А хочется, например, получить уведомления, если вырос объем логов от какого-то устройства/сервиса.
Мне удалось найти два плагина для Kibana реализующих такой функционал:
О втором и пойдет речь.
Устанавливаем его на наш ELK сервер:
# /opt/kibana/bin/kibana plugin —install kaae -u https://github.com/elasticfence/kaae/releases/download/snapshot/kaae-latest.tar.gz
Перемещаем конфиг файл kaae.json из /opt/kibana/installedPlugins/kaae в /etc/
И редактируем его:
{
  «es»: {
  «timefield»: «@timestamp»,
  «default_index»: «watcher»,
  «type»: «watch»,
  «alarm_index»: «watcher_alarms»
  },
  «kaae»: {
  «history»: 20,
  «results»: 50
  },
  «settings» : {
  «email» : {
  «user»: «user@domen.ru»,
  «password»: «пароль»,
  «host»: «ip_почтового_сервера»,
  «port»: «25»,
  «ssl»: false,
  «tls»: true,
  «active»: true
  },
  «slack» : {
  «username»: «KAAE»,
  «hook»: «https://hooks.slack.com/services/<token>»,
  «channel»: «#kaae»,
  «active»: false
  },
  «report» : {
  «tmp_path» : «/tmp/»,
  «active»: true
  },
  «pushapps» : {
  «api_key» : «<pushapps API Key>»,
  «active»: false
  }
  }
}
В моем примере я включил отправку уведомлений по почте в Exchange (для этого задействуется emailjs, который поддерживает и авторизацию и tls, и ssl) и формирование отчетов. Так же можно задействовать Slack и пуши в приложение.
После перезагружаем наш сервер и заходим в WEB интерфейс Kibana. И видим новый значок вверху, позволяющий переключаться между приложениями.
kaae_01
Зайдем в KAAE и настроим первый, тестовый Alert:
kaae_02
У меня он выглядит так:
{
  «_index»: «watcher»,
  «_type»: «watch»,
  «_id»: «new»,
  «_score»: 1,
  «_source»: {
    «trigger»: {
      «schedule»: {
        «later»: «every 1 minutes»
      }
    },
    «input»: {
      «search»: {
        «request»: {
          «index»: [
            «<syslog-{now/d}>»,
            «<syslog-{now/d-1d}>»
          ],
          «body»: {}
        }
      }
    },
    «condition»: {
      «script»: {
        «script»: «payload.hits.total > 100»
      }
    },
    «transform»: {
      «script»: {
        «script»: «payload.hits.total += 100»
      }
    },
    «actions»: {
      «email_admin»: {
        «throttle_period»: «1m»,
        «email»: {
          «from»: «user@domen.ru»,
          «to»: «user2@domen.ru»,
          «subject»: «KaaE Alarm»,
          «priority»: «high»,
          «body»: «Found {{payload.hits.total}} Events»
        }
      }
    }
  }
}
Как можно заметить он состоит из блоков:
Trigger
— Schedule
— Input
  — Search
— Condition
  — Script
— Transform
  — Script
— Action
  — Actions
В моем случае раз в минуту с перерывом в минуту (масло… =) ) проверяется количество событий в индексе syslog и если их больше 100, то приходит уведомление на почту.
На этом пока все, продолжаю осваивать ELK и сопутствующую информацию.
P.s. Если письма на почту не приходят смотрите messages лог, я сталкивался со следующими событиями:
Error: message is not a valid Message instance at Object.Client.send — не хватало поле from в скрипте.
Unhandled rejection Error: spawn phantomjs ENOENT — нужно было установить phantomjs
«error»,»message»:»timedout while connecting to smtp server» — неправильно настроены параметры сервера в kaae.json

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *