У меня есть сценарий на сервере, который либо выводит «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/ идет поподробнее.
В этом случае, скорее всего, это ошибка разрешения.