Всем здравствуйте.
Есть задача периодически снимать значение некой целочисленной метрики (в общем случае – по сети) у ряда машин с дальнейшим представлением исторических данных на графике (как это делает MRTG – за день, за неделю, за месяц, за год). Предполагаю связать своего колхозного агента с какой-л. системой мониторинга (с какой именно – выбор свободен).
Но есть вопрос выбора протокола взаимодействия, и здесь возникают нюансы.
- SNMP. Казалось бы, любая собака умеет взаимодействовать по SNMP, и с
аутентификацией там (в третьей версии протокола) всё хорошо, но вот почитал я,
как внедрить своего суб-агента
в
snmpd
через AgentX – и вижу, что это ни разу не просто. - Произвольный текстовый или бинарный протокол и интеграция с
inetd
/xinetd
. Очевидный плюс в простоте решения. Минусы:- невозможно навесить аутентификацию;
- не только лишь всякая система мониторинга сумеет снять данные, используя произвольный протокол. Кажется, здесь получится использовать лишь MRTG, т. е. это «восход солнца вручную».
- NRPE. Хорош своей популярностью (едва ли не второе место после SNMP; поддерживают, как минимум, Nagios, Icinga и OpenNMS), но позволяет передавать лишь данные вида «всё хорошо»/«почти хорошо»/«плохо»/«совсем плохо». Т. е. не годится.
- HTTP. Прекрасен всем, но не хотелось бы на каждой машине поднимать
httpd
с CGI. Хотя есть вариант embedded-сервера, как это сделано, напр., в API агентов для Prometheus (тамtext/plain
поверх HTTP). Данные в формате Prometheus могут «читать» и другие инструменты, напр., OpenNMS и Zabbix. - SSH. SSH есть везде, и это хорошо. Но снять данные, используя вывод команды
ssh remote-host agent-command
, кажется, возможно лишь в MRTG. А при наличии M машин с N метрик вручную описывать M x N графиков вmrtg.cfg
не хотелось бы (т. е. хотелось бы ещё какой-л. аналог service/MIB discovery, как в SNMP).
Что посоветуете?