====== Использование Zabbix для мониторинга журналов, или, как не пропустить что-то неожиданное ======
* [[https://www.zabbix.com/documentation/6.0/ru/manual/config/items/itemtypes/log_items|Руководство по Zabbix Мониторинг файлов журналов]]
* [[https://www.zabbix.com/documentation/current/en/manual/regular_expressions]]
* [[https://habr.com/ru/articles/737058/|Логи из Linux в Zabbix. Подробнейшая инструкция]]
* [[https://www.zabbix.com/forum/zabbix-help/457279-trying-to-make-a-trigger-of-a-monitored-logfile|Trying to make a trigger of a monitored logfile]]
===== Реклама =====
* Однажды мы получили сообщение от пользователей, что "не открывается" некоторый корпоративный ресурс. Как обычно, "никто ничего не менял" (log secondary zone not axfr)
===== Техническое задание =====
*
===== Запись вебинара =====
* Тэги:
===== Шаг 1. Что у нас есть, для начала =====
===== Черновик =====
# ###apt install rsyslog
# cat /var/log/syslog | grep -i 'error'
# cat /var/log/syslog | egrep -v 'DHCPACK|DHCPREQUEST|Wrote.*leases|sessionclean|ALLOWED|run-parts.*report'
# cat /etc/zabbix/zabbix_agentd.conf
...
ServerActive=server
...
# usermod -aG adm zabbix
# hostname
abcd.corpX.un
# service zabbix-agent restart
Host: abcd.corpX.un
Item:
Name: Error log in syslog
Type: Zabbix Agent(active)
Key: log[/var/log/syslog,rror] или log[/var/log/syslog,(?i)error]
History: 1d
Item:
Name: Unknown log in syslog
Type: Zabbix Agent(active)
Key: log[/var/log/syslog]
Preprocessing:
Name: Does not match regular expression
Parameters: DHCPACK|DHCPREQUEST|Wrote.*leases|sessionclean|ALLOWED|run-parts.*report
Custom on fail: Discard Value
Trigger:
Name: Error|Unknown log in syslog on {HOST.NAME}
Severity: Warning
Expression: nodata(/Zabbix server/log[/var/log/syslog,rror],1m)=0
Expression: nodata(/Zabbix server/log[/var/log/syslog,(?i)error],1m)=0
Expression: nodata(/Zabbix server/log[/var/log/syslog],1m)=0
===== DeepSeek =====
Разбор текущей конфигурации:
1. Подготовка системы (bash команды)
bash
# ###apt install rsyslog
Установка rsyslog (обычно уже есть)
bash
# cat /var/log/syslog | grep -i 'error'
Ручной поиск ошибок (для проверки)
bash
# cat /var/log/syslog | egrep -v 'DHCPACK|DHCPREQUEST|Wrote.*leases|sessionclean|ALLOWED|run-parts.*report'
Просмотр syslog без "шумных" сообщений (DHCP, сессии и т.д.)
bash
# usermod -aG adm zabbix
Критически важно! Добавляем пользователя zabbix в группу adm, чтобы он мог читать /var/log/syslog (обычно права 640, root:adm)
2. Проблема в текущих Item'ах
У тебя два item'а, но в триггере почему-то три выражения:
Item 1:
text
Key: log[/var/log/syslog,rror]
Это ищет строки содержащие "rror" (опечатка? Должно быть "error"?)
Item 2:
text
Key: log[/var/log/syslog]
Preprocessing: Does not match regular expression
Это собирает ВСЕ строки, но отбрасывает те, что попадают под regex.
3. Оптимизированная версия
Вот как лучше настроить:
bash
# /etc/zabbix/zabbix_agentd.conf
# Убедись, что активные проверки включены
ServerActive=zabbix.server.com
Hostname=abcd.corpX.un
HostMetadata=linux
Лучше сделать один item:
text
Item:
Name: Syslog errors and warnings
Type: Zabbix Agent (active)
Key: log[/var/log/syslog,"(?i)(error|fail|critical|alert)",,,skip,,]
Type of information: Log
History: 7d
Или два отдельных (для разделения важности):
text
# Item для реальных ошибок
Item:
Name: Syslog - Errors
Type: Zabbix Agent (active)
Key: log[/var/log/syslog,"(?i)error|fail|critical",,,skip,,]
Type: Log
History: 7d
# Item для всего остального (с фильтрацией шума)
Item:
Name: Syslog - Other important messages
Type: Zabbix Agent (active)
Key: log[/var/log/syslog]
Preprocessing:
- Name: Does not match regular expression
Parameters: DHCPACK|DHCPREQUEST|Wrote.*leases|sessionclean|ALLOWED|run-parts.*report|cron.*CMD|systemd.*Started
- Name: Custom on fail
Parameters: Discard value
4. Правильный триггер
yaml
Trigger:
Name: Error in syslog on {HOST.NAME}
Severity: Average # или Warning
Expression: |
min(/Zabbix server/log[/var/log/syslog,"(?i)error|fail|critical"],5m) > 0
Или для обоих типов:
yaml
Trigger:
Name: New error in syslog on {HOST.NAME}
Severity: High
Expression: |
min(/Zabbix server/log[/var/log/syslog,"(?i)error"],5m) > 0
Trigger:
Name: New important message in syslog on {HOST.NAME}
Severity: Info
Expression: |
min(/Zabbix server/log[/var/log/syslog,"(?i)warn|unknown|invalid"],5m) > 0
and
min(/Zabbix server/log[/var/log/syslog,"(?i)error|fail|critical"],5m) = 0
5. Дополнительные полезные настройки
В zabbix_agentd.conf можно добавить:
bash
# Увеличить буфер для логов
BufferSize=1000
# Специфичные для логов параметры
LogRemoteCommands=0
HostInterface=abcd.corpX.un
Проверка прав:
bash
# После usermod нужно проверить:
id zabbix
# Должно показать: uid=... gid=... groups=...,adm
# Перезапуск агента
systemctl restart zabbix-agent
# Проверка лога агента
tail -f /var/log/zabbix/zabbix_agentd.log
Еще полезные regex для фильтрации:
text
# Исключить совсем уж шумные сообщения
DHCPACK|DHCPREQUEST|Wrote.*leases|sessionclean|ALLOWED|run-parts.*report|cron.*CMD|systemd.*Started|systemd.*Stopped|User Slice|Session|Removed