Назад | Перейти на главную страницу

проверка zabbix через скрипт всегда срабатывает

У меня есть сценарий на сервере, который либо выводит «OK - foobar buz foo», либо «ERROR - blah blah foo». В последнем случае я бы хотел, чтобы в zabbix срабатывала тревога.

Что я сделал до сих пор:

Я настроил UserParameter в zabbix следующим образом:

# cat /etc/zabbix/zabbix_agentd.d/userparameter_check_reposync.conf
UserParameter=spacewalk.reposync[*],/usr/local/sbin/check_reposync.py $1

Я перезагрузил агент zabbix, и следующая проверка работает должным образом:

# zabbix_agentd -t spacewalk.reposync[centos7-x86_64.log]
spacewalk.reposync[centos7-x86_64.log]        [t|OK: All good for the repository "centos7-x86_64"]

Теперь я создал элемент в веб-интерфейсе zabbix 3.2, который имеет тип «символ», и определил триггер как

{somehost.acme.org:spacewalk.reposync[centos7-x86_64.log].str("ERROR")}=1

Насколько я понимаю, поскольку zabbix_agentd не возвращает строку «ERROR», этот триггер не должен срабатывать. Однако у меня есть сигнал тревоги для этого триггера.

Что я неправильно настроил? Если это не удается, как я могу это отладить?

РЕШЕНИЕ:

После того, как я узнал о способах отладки и наиболее вероятной причине - проблеме с правами доступа - я изменил конфигурацию следующим образом:

Чтобы убедиться, что zabbix не ограничен разрешениями, я запускаю проверку от имени пользователя root через sudo:

# cat /etc/zabbix/zabbix_agentd.d/userparameter_check_reposync.conf
UserParameter=spacewalk.reposync[*],sudo /usr/local/sbin/check_reposync.py $1

А затем добавил необходимую конфигурацию sudo в /etc/sudoers.d/10_zabbix:

zabbix ALL=(root)  NOPASSWD:/usr/local/sbin/check_reposync.py *

Альтернативой может быть предоставление ACL, разрешающей проверку. Вероятно, это лучше с точки зрения безопасности. Однако с точки зрения эксплуатации подход sudo казался более простым и легким для отладки и восстановления.

Не используй -t или -p для проверки предметов. Как вы его запустили, он выполняется с разрешениями root пользователь. Даже если вы запустите его как пользователь Zabbix, среда и другие факторы будут отличаться. Использовать zabbix_get вместо этого протестировать против работающего агента. http://www.zabbixbook.com/2017/08/22/debugging-zabbix-userparameters/ идет поподробнее.

В этом случае, скорее всего, это ошибка разрешения.