Всем привет!
Проблема в следующем. Есть Zabbix-server и масса агентов. На сервере поменяли имя узла(примерно на более 300 узлах, но не везде), и теперь поле {HOST.NAME} и "Hostname=..." не совпадают(хотя узел горит зеленым и мониторится).
Попытался составить триггер для проверки этого, поскольку в логах вижу:
no active checks on server [:10051]: host [] not found
Попытки составить триггер были следующими:
{:agent.hostname.regexp({HOST.NAME},5m)}=0
{:agent.hostname.nodata(5m)}=0
Но при таком раскладе, триггер стал срабатывать и на те узлы, где {HOST.NAME} и "Hostname=..." совпадают. Понимаю, что триггеры составлены не верно.
Пожалуйста, подскажите или дайте наводку как массово обнаружить такие узлы? Или где можно почитать более подробно про корректное составление триггеров для Zabbix? В оф. документации об этом написано довольно скудно, по крайней мере я не смог разобраться.
Спасибо!
А какая проблема изначально решается? Почему плохо, когда два эти хостнейма отличаются? Я никогда не слежу за тем, чтобы они совпадали.
А какая проблема изначально решается?
Как сделать так, чтобы хостнеймы совпадали.
Почему плохо, когда два эти хостнейма отличаются?
В целом не плохо, но в логах тонны ошибок по этому поводу, как у агента так и у сервера.
Можно hostname в агенте вообще не указывать, он возьмется из системы. Но это не мой случай, к сожалению!
Ааа, я теперь понял, в чем проблема. Изначально решил, что нужно, чтобы совпадало системное имя сервера и имя в zabbix. А так да, если в настройках агента и на сервере отличаются имена хостов, то будут проблемы.
По идее, можно из лога zabbix-server собрать эту информацию и обработать в удобочитаемый вид.
По идее, можно из лога zabbix-server собрать эту информацию и обработать в удобочитаемый вид.
Да, можно. Но хотелось бы иметь некий триггер. Не подскажите в какую сторону копать?
Триггер не знаю, как сделать, так как не знаю переменную, в которой хранится информация о hostname на агенте.
Визуально можно на дашборде вывести виджет типа Обзор данных, выбрать все узлы, группу элементов данных указать Zabbix agent. Так глазами можно увидеть хосты, где имя узла в заббиксе отличается от того, что приходит из агента.
Когда это сделал, понял, как триггер собрать :) Надо сравнивать {HOST.NAME} и информацию из итема от заббикс агента об имени хоста. Итем называется Host name of zabbix_agentd running и ключ agent.hostname.
Надо сравнивать
Дак вот как это "сравнить"? :-) Про {HOST.NAME} и agent.hostname я разобрался, еще в первом посте указал.
{:agent.hostname.regexp({HOST.NAME})}<>{:agent.hostname}
Примерно так.
Что-то как то крутил вертел, получилось:
{:agent.hostname.last(0)}<>{:agent.hostname.regexp({HOST.NAME})}
Но не то. Блин, как то все сложно. Вроде задача тривиальная. Сравнить 2 строки.
Она реально тривиальная, у вас, судя по всему, не хватает понимания, как это работает. Я вечером посмотрю и напишу рабочий вариант.
Как оказалось у этой тривиальной задачи совсем не тривиальное решение, если оно вообще есть.
Покурив маны, форумы и различные хаки - пришел к выводу, что нормального сравнения строковых ЭД в Zabbix почему то нет!
Вот похожий случай, топик совсем свежий и здравого решения в итоге ... увы и ах.
P.S. Задачу решил, написав анализатор логов и вытащив необходимые мне узлы, но все же очень странно почему такого, казалось бы простого функционала нет в такой мощной системе мониторинга.
Анализ строковых значений там точно есть, я его использую в триггерах. Сравнивать, конечно, не приходилось, но по идее и сравнение должно работать, если работает поиск по строкам. Я заболел, так что сам ничего не проверял.
Задача решена в итоге, но как я ни крутил и не пытался - сравнить не смог корректно. Как увидел позже - люди тоже с таким столкнулись, и либо преобразования с маппингом либо "лечение зубов через попу".
Все равно спасибо, отличный ресурс и очень толковый материал в статьях.
Выздоравливайте!