Ситуация: докер с 2-10 контейнерами, количество контейнеров изменяется динамически, в каждом контейнере развернуто одно и то же приложение, каждое приложение отдает один и тот же набор из одних и тех же пяти метрик. Простое горизонтальное масштабирование сервиса.
Проблема: надо собирать метрики и суммировать их по всем сервисам на выходе получая все тот же набор из 5 метрик, но только каждая метрика - сумма метрик полученных от приложений.
В общем как планирую решать задачу:
- сервисы уже отдают метрики через Prometheus, метрики в текстовом виде публикуются на localhost:8080/metrics
- сервисы надо будет научить авторегистрации в заббиксе: они будут регистрироваться при запуске приложения на сервере заббикса
- когда они будут регистрироваться, заббикс будет складывать их в специальную хост группу
- для данной хост группы будет настроен опрос метрик не чаще (важно) чем раз в 30 секунд
- так же будет сделана агрегация (суммирование) по метрикам в данной хост группе
- основная проблема, когда один из контейнеров сервиса динамически будет выключен: решаю при помощи триггера и действия,
- создам триггер который на базе функции nodata() будет с максимальной частотой (раз в 30 секунд) проверять были ли данные от инстанса микросервиса
- в действии укажу использовать ранее описанный триггер: когда триггер сработает хост будет удален из специальной хост группы
- суммирование будет уже идти по хост группе где нету "отвалившихся сервисов"
Выглядит как один огромный костыль.
Раскритикуйте, работоспособен ли такой подход, может есть что-то более правильное?
Проблема: надо собирать метрики и суммировать их по всем сервисам на выходе получая все тот же набор из 5 метрик, но только каждая метрика - сумма метрик полученных от приложений.
В общем как планирую решать задачу:
- сервисы уже отдают метрики через Prometheus, метрики в текстовом виде публикуются на localhost:8080/metrics
- сервисы надо будет научить авторегистрации в заббиксе: они будут регистрироваться при запуске приложения на сервере заббикса
- когда они будут регистрироваться, заббикс будет складывать их в специальную хост группу
- для данной хост группы будет настроен опрос метрик не чаще (важно) чем раз в 30 секунд
- так же будет сделана агрегация (суммирование) по метрикам в данной хост группе
- основная проблема, когда один из контейнеров сервиса динамически будет выключен: решаю при помощи триггера и действия,
- создам триггер который на базе функции nodata() будет с максимальной частотой (раз в 30 секунд) проверять были ли данные от инстанса микросервиса
- в действии укажу использовать ранее описанный триггер: когда триггер сработает хост будет удален из специальной хост группы
- суммирование будет уже идти по хост группе где нету "отвалившихся сервисов"
Выглядит как один огромный костыль.
Раскритикуйте, работоспособен ли такой подход, может есть что-то более правильное?
Comment