====== Использование 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