Home »

Как правильно соста...
 

Как правильно составить триггер

13 Записи
2 Пользователи
0 Likes
3,170 Просмотры
(@wasice)
Active Member
Присоединился: 4 года назад
Записи: 12
Создатель темы  

Всем привет!

Проблема в следующем. Есть 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? В оф. документации об этом написано довольно скудно, по крайней мере я не смог разобраться.

 

Спасибо!

 


   
ОтветитьЦитата
Метки темы
(@zerox)
Prominent Member Admin
Присоединился: 10 лет назад
Записи: 901
 

А какая проблема изначально решается? Почему плохо, когда два эти хостнейма отличаются? Я никогда не слежу за тем, чтобы они совпадали.


   
ОтветитьЦитата
(@wasice)
Active Member
Присоединился: 4 года назад
Записи: 12
Создатель темы  
От: @zerox

А какая проблема изначально решается?

Как сделать так, чтобы хостнеймы совпадали.

От: @zerox

Почему плохо, когда два эти хостнейма отличаются?

В целом не плохо, но в логах тонны ошибок по этому поводу, как у агента так и у сервера.

Можно hostname в агенте вообще не указывать, он возьмется из системы. Но это не мой случай, к сожалению!


   
ОтветитьЦитата
(@zerox)
Prominent Member Admin
Присоединился: 10 лет назад
Записи: 901
 

Ааа, я теперь понял, в чем проблема. Изначально решил, что нужно, чтобы совпадало системное имя сервера и имя в zabbix. А так да, если в настройках агента и на сервере отличаются имена хостов, то будут проблемы. 

По идее, можно из лога zabbix-server собрать эту информацию и обработать в удобочитаемый вид. 


   
ОтветитьЦитата
(@wasice)
Active Member
Присоединился: 4 года назад
Записи: 12
Создатель темы  
От: @zerox

По идее, можно из лога zabbix-server собрать эту информацию и обработать в удобочитаемый вид. 

Да, можно. Но хотелось бы иметь некий триггер. Не подскажите в какую сторону копать?


   
ОтветитьЦитата
(@zerox)
Prominent Member Admin
Присоединился: 10 лет назад
Записи: 901
 

Триггер не знаю, как сделать, так как не знаю переменную, в которой хранится информация о hostname на агенте. 

Визуально можно на дашборде вывести виджет типа Обзор данных, выбрать все узлы, группу элементов данных указать Zabbix agent. Так глазами можно увидеть хосты, где имя узла в заббиксе отличается от того, что приходит из агента.

Когда это сделал, понял, как триггер собрать :) Надо сравнивать {HOST.NAME} и информацию из итема от заббикс агента об имени хоста. Итем называется Host name of zabbix_agentd running и ключ agent.hostname.


   
ОтветитьЦитата
(@wasice)
Active Member
Присоединился: 4 года назад
Записи: 12
Создатель темы  
От: @zerox

Надо сравнивать

Дак вот как это "сравнить"? :-)  Про {HOST.NAME} и agent.hostname я разобрался, еще в первом посте указал.


   
ОтветитьЦитата
(@zerox)
Prominent Member Admin
Присоединился: 10 лет назад
Записи: 901
 

{:agent.hostname.regexp({HOST.NAME})}<>{:agent.hostname}

Примерно так.


   
ОтветитьЦитата
(@wasice)
Active Member
Присоединился: 4 года назад
Записи: 12
Создатель темы  

Что-то как то крутил вертел, получилось:

{:agent.hostname.last(0)}<>{:agent.hostname.regexp({HOST.NAME})}

Но не то. Блин, как то все сложно. Вроде задача тривиальная. Сравнить 2 строки.

 


   
ОтветитьЦитата
(@zerox)
Prominent Member Admin
Присоединился: 10 лет назад
Записи: 901
 

@wasice

Она реально тривиальная, у вас, судя по всему, не хватает понимания, как это работает. Я вечером посмотрю и напишу рабочий вариант.


   
ОтветитьЦитата
(@wasice)
Active Member
Присоединился: 4 года назад
Записи: 12
Создатель темы  

Как оказалось у этой тривиальной задачи совсем не тривиальное решение, если оно вообще есть.

Покурив маны, форумы и различные хаки - пришел к выводу, что нормального сравнения строковых ЭД в Zabbix почему то нет!

Вот похожий случай, топик совсем свежий и здравого решения в итоге ... увы и ах.

P.S. Задачу решил, написав анализатор логов и вытащив необходимые мне узлы, но все же очень странно почему такого, казалось бы простого функционала нет в такой мощной системе мониторинга.


   
ОтветитьЦитата
(@zerox)
Prominent Member Admin
Присоединился: 10 лет назад
Записи: 901
 

Анализ строковых значений там точно есть, я его использую в триггерах. Сравнивать, конечно, не приходилось, но по идее и сравнение должно работать, если работает поиск по строкам. Я заболел, так что сам ничего не проверял. 


   
ОтветитьЦитата
(@wasice)
Active Member
Присоединился: 4 года назад
Записи: 12
Создатель темы  

@zerox

Задача решена в итоге, но как я ни крутил и не пытался - сравнить не смог корректно. Как увидел позже - люди тоже с таким столкнулись, и либо преобразования с маппингом либо "лечение зубов через попу".

Все равно спасибо, отличный ресурс и очень толковый материал в статьях.

Выздоравливайте!


   
ОтветитьЦитата
Используешь Telegram? Подпишись на канал автора →
This is default text for notification bar