Как отслеживать показатели удаленной системы с помощью телеграфа?
Буду признателен за советы по архитектуре стека telegraf + InfluxDB + Grafana
контролировать набор машин.
Мой сценарий
Я успешно установил стек telegraf + InfluxDB + Grafana
в машине я назову "экземпляр мониторинга".
Моя система представляет собой API, состоящий из одного компьютера, на котором выполняется nodejs и экземпляр postgres.
Я могу собирать метрики из моей базы данных Postgresql (используя плагин ввода telegraf для postgres), а также из моего приложения (я показываю некоторые метрики в формате prometheus, которые телеграф использует, используя плагин ввода prometheus).
Мои вопросы и сомнения
- Каков наилучший способ отслеживания системных показателей (cpu, mem и т. Д.) Экземпляров узла и postgres? Должен ли я установить агент телеграф на этих машинах?
- Как отправить локальные данные в "экземпляр мониторинга"?
- Должны ли локальные агенты телеграфа писать напрямую в infxdb или они должны посылать метрики на телефрейм, установленный в "экземпляре мониторинга"?
Заранее спасибо.
2 ответа
Метрики системы / сервера должны собираться локально установленным телеграфом.
Вы можете отправлять метрики из системного телеграфа непосредственно на приток. Но это делает слушателей притока чувствительными к количеству данных, накачанных местными телеграфами. Это не масштабируется элегантно.
Вместо этого вы можете поместить очередь или Kafka между экземплярами системного телеграфа и притоком. Это сгладит любую неожиданную нагрузку и должно поддерживать постоянный приток слушателей. Между очередью /Kafka и притоком может быть набор выделенных экземпляров телеграфа, которые загружают данные из очереди /Kafka в приток. Они могут работать как группа потребителей Kafka и должны легко масштабироваться.
Система телеграф -> Кафка -> телеграф -> наплыв -> Графана
Вы должны иметь возможность связывать экземпляры телеграфа (отслеживаемое устройство -> устройство мониторинга -> приток), используя общий вывод средства записи гнезда и плагин ввода гнезда, учитывая, что вы настраиваете его в том же формате данных.
https://github.com/influxdata/telegraf/tree/master/plugins/outputs/socket_writer https://github.com/influxdata/telegraf/tree/master/plugins/inputs/socket_listener https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_INPUT.md
Благодаря общему входу сокетов telegrafs, поддерживающему формат InfluxDB, вы также можете развернуть беглый бит на контролируемом устройстве вместо telegraf. https://fluentbit.io/documentation/current/output/influxdb.html