Getting metrics from logs in Elasticsearch

Мне по работе надо получать события когда в логах приложений (логи у нас попадают в elasticsearch) появляются определённые сообщения. Zabbix умеет делать запросы по http. Но у нас Victoriametrics (ибн Prometheus) и хотелось бы, что бы alertmanager генерировал алерты. Но для того, что бы он смог это сделать, нужно что бы соответствующая метрика появилась в victoriametrics. Грубо говоря, нужно что бы Prometheus (или что на него похожее — vmagent) обратился к elasticsearch с определённым запросом и создал метрику. Но он зараза такое не умеет :(.

Да, можно попросить программеров, что бы они сделали нужную нам метрику у приложения. Но это хорошо когда программеры рядом и идут на встречу. Если их нет или это какое то старое приложение то ФСЁ — приплыли и рядом с victoriametrics надо ставить zabbix или что то такое…

Я честно искал приложение, которое может посылать необходимые мне запросы в elasticsearch и генерить метрики Prometheus. Но не нашёл. Возможно я плохо искал?

Вобщем мне надоело искать и я вспомнил, что нормальный сисадмин должен уметь писать вспомогательные утилиты. Я же типа нормальный сисадмин? 🙂

Заодно решил подучить go. Учить язык надо на каком то живом задании. Собственно вот, задание:

  • Приложение должно уметь посылать запросы в elasticsearch и генерировать метрики в формате Prometheus.
  • Это должен быть контейнер.
  • Должна быть горизонтальная масштабируемость. Запросов ожидается много.
  • Мы должны легко жить в kubernetes.

Итого. Программисты, не бейте меня ногами. Вы такого не написали, а мне очень надо. Поэтому родилась вот такая утилита: https://github.com/BigKAA/metrics-from-logs

Это первая версия, написанная по быстрому, на коленке. Там ещё много чего надо дописывать. Научится нормально работать с Redis и много ещё чего.