Недавно довелось мне делать LLD для ceph-а, автодискверить пулы и статистику по ним.
Суть автодискавера сводится к получению json-а с названиями параметров и далее подстановке этих параметров в прототипы итемов. Когда разберёшься - ничего сложного.
Так вот, я уже написал скрипт для генерации этого json-а, соорудил темплейт, написал скрипт для выковыривания правильных данных из вывода команд ceph, но... автодискавер не происходило. Казалось бы, довольно простая операция, ошибки быть не должно, все данные валидные и тд. Включил дебаг-логи на агенте - что за ересь? запрос на дискавер просто не прилетает на агент. Адругие дискаверы прилетают. Дело осложняется тем, что на пути от сервера к агенту есть проксик, zabbix-proxy.
Можно было бы долго нырять в бутылку, пытаться переписать дискавер, найти в нём ошибку и всё в таком роде, поперезагружать сервисы, как это обычно советуют... Впрочем, сервисы я для порядка рестартовал, хотябы для того, чтобы включить дебаг-лог. Кстати, именно он помог отловить аномалию.
Дискавер в лице json-образного "конфига" прилетал на прокси, а вот с прокси он никуда не девался. Соответственно, подозрение пало на сам прокси. Первым делом rpm -qa|grep zabbix и тут я вижу, что проксик-то вообще версии 3.0.чего-то_там, а сервер 3.4.чего-то_там. Дай-ка, думаю, обновлю, коллеги против не должны быть.
Обновление через версию естественно гладко не проходит на моменте запуска, zabbix-proxy в лог пишет, что не осилил обновить БД. Печаль, но не критично, в данном случае ручное вмешательство вполне допустимо. Сказано-сделано: дропнул базу, создал новую, дал привелегий юзеру на базу, залил схему. Zabbix-proxy взлетел идеально.
И, буквально через несколько минут, всё задискаверилось. Версии заббикс-сервера, прокси, агента играют свой рояль. Если в некоторых случаях оно между минорными версиями работает, то это скорее недосмотр со стороны разработчиков, чем норма жизни. Прокси может не осливать что-то проксировать, агент может регулярно терять соединение с сервером, в результате чего на графиках образуются "дырки".