Дано: Zabbix 1.8.1, n серверов, Zabbix агенты в режиме Active Checks (важно!)
Необходимо: мониторить лог ошибок php на предмет Fatal Error и уведомлять разработчиков текстом ошибки по e-mail и/или jabber.
С минимальными модификациями способ применим к логам любых сервисов.
Zabbix Server и Zabbix Agent уже настроены на мониторинг стандартных параметров серверов и сервисов. Т.е. это инструкция не для настройки с "нуля".
1. В Configuration -> Hosts создаем шаблон Template_Log и определяем его в группу.
2. В этом шаблоне создаем Item.
Host: Template_Log
Description: phpError
Type: Zabbix Agent (active)
Key: log["/var/log/php/php-error.log","PHP Fatal error","UTF-8",100].
Первый параметр указывает местоположение лога, конечно на всех серверах он должен быть одинаковый. Второй параметр - регулярное выражение для шаблона, нам же нужны записи определенного типа, плюс в купе с четвертым параметром (максимальное кол-во строк в секунду для передачи серверу) снижает нагрузку на сеть и сервер мониторинга.
Type of information: log
Подробнее о параметрах мониторинга логов.
3. Создаем Trigger
Name: PHP Fatal Error on {HOSTNAME}
Expression: {Template_Log:log["/var/log/php/php-error.log","PHP Fatal error","UTF-8",100].str(Fatal)}=1&{Template_Log:log["/var/log/php/php-error.log","PHP Fatal error","UTF-8",100].nodata(30)}=0
Триггер срабатывает при наличии строки Fatal в пересылаемых данных и отключается через 30 секунд отсутствия новых данных.
Подробнее о выражениях триггера.Event generation: Normal + Multiple TRUE events
Уведомления об ошибках мы уже получаем. Как получить текст ошибки?
4. В Configuration -> Actions создаем новое действие
Name: Log_Error
Event source: Triggers
В Default message дописываем: {ITEM.LASTVALUE}
Action conditions: Host template = "Template_Log"
PROFIT!
Исправления и дополнения принимаются.