Перейти к основному содержанию

Мониторинг логов в Zabbix

Zabbix

Zabbix-agent умеет читать файлы логов и отправлять их на Zabbix-server. Так что если вам лень постоянно заглядывать на сервер и просматривать нужные вам логи, то можете завести их на Zabbix. Поддерживаются логи как с ротацией журнала, так и без.

Дополнительно, можно будет настроить любые триггеры, реагирующие на то или иное событие, появившееся в логах.

Есть несколько моментов, которые нужно помнить:

  • Передача логов работает только через активные проверки.
  • Пользователю Zabbix потребуются права на чтение нужного вам лога.

Настройка элемента данных

Настройте элемент данных для мониторинга лога.

zabbix

Name — указываем любое нужное нам имя.

Type — Zabbix agent (Active). Поддерживаются только активные проверки.

Key — Есть несколько вариантов. Для обычного файла укажите:

log[/путь/к/файлу/имя_файла,<регулярное выражение>,<кодировка>,<макс. кол-во строк>,<режим>,<вывод>,<максзадержка>]

Для ротируемого лога:

logrt[/путь/к/файлу/регулярное_выражение_описывающее_шаблон_имени_файла,<регулярное выражение>,<кодировка>,<макс. кол-во строк>,<режим>,<вывод>,<максзадержка>]

Zabbix агент фильтрует записи из файла журнала по регулярному выражению, если оно указано.

Если требуется только количество совпадающих строк укажите:

log.count[/путь/к/файлу/имя_файла,<регулярное выражение>,<кодировка>,<макс. кол-во строк>,<режим>,< максзадержка >]

Для ротируемого лога:

logrt.count[/путь/к/файлу/регулярное_выражение_описывающее_шаблон_имени_файла,<регулярное выражение>,<кодировка>,<макс. кол-во строк>,<режим>,< максзадержка >]

Убедитесь, что у файла имеются права на чтение для пользователя zabbix, в противном случае состояние элемента данных будет unsupported.

Чуть углубимся в log.

log[file,<regexp>,<encoding>,<maxlines>,<mode>,<output>,<maxdelay>,<options>,<persistent_dir>]
  • file - полный путь и имя лог-файла
  • regexp - регулярное выражение, описывающее искомый шаблон
  • encoding - идентификатор кодовой страницы
  • maxlines - максимальное количество новых строк в секунду, которое агент будет отправлять на сервер Zabbix или прокси. Этот параметр переопределяет значение 'MaxLinesPerSecond' в файле zabbix_agentd.conf
  • mode - возможные значения: all (по умолчанию), skip - пропускать обработку старых данных (влияет только на вновь создаваемые элементы).
  • output - необязательный шаблон форматирования вывода. Управляющая последовательность \0 заменяется на совпавшую часть текста (от первого символа, где начинается совпадение, до символа, где оно заканчивается), а последовательность \N (где N=1...9) заменяется на N-ю совпавшую группу (или пустую строку, если N превышает количество захваченных групп).
  • maxdelay - максимальная задержка в секундах. Тип: float. Значения: 0 - (по умолчанию) никогда не игнорировать строки лог-файла; > 0.0 - игнорировать более старые строки, чтобы проанализировать самые свежие строки в пределах "maxdelay" секунд.
  • options - дополнительные опции: 
    • mtime-noreread - неуникальные записи, перечитывать только при изменении размера файла (игнорировать изменение времени модификации). (Этот параметр устарел с версии 5.0.2, так как теперь mtime игнорируется. До версии 5.0.2 файл по умолчанию перечитывался при изменении либо времени модификации, либо размера файла.)
  • persistent_dir (начиная с версии 5.0.18, только в zabbix_agentd на системах Unix; не поддерживается в Agent2) - абсолютный путь к каталогу для хранения постоянных файлов.

Примеры:

log[/var/log/syslog]
log[/var/log/syslog,error]
log[/home/zabbix/logs/logfile,,,100]
log[/app1/app.log,"task run [0-9.]+ sec, processed ([0-9]+) records, [0-9]+ errors",,,,\1]

В последнем случае результат совпадёт с записью лога 2015-11-13 10:08:26 task run 6.08 sec, processed 6080 records, 0 errors и отправит на сервер только 6080.

log[/app1/app.log,"([0-9 :-]+) task run ([0-9.]+) sec, processed ([0-9]+) records, ([0-9]+) errors",,,,"\1 RECORDS: \3, ERRORS: \4, DURATION: \2"]

Совпадёт с записью лога 2015-11-13 10:08:26 task run 6.08 sec, processed 6080 records, 0 errors и отправит на сервер изменённую запись 2015-11-13 10:08:26 RECORDS: 6080, ERRORS: 0, DURATION: 6.08.

Чуть углубимся в logrt.

logrt[file_regexp,<regexp>,<encoding>,<maxlines>,<mode>,<output>,<maxdelay>,<options>,<persistent_dir>]
  • file_regexp - абсолютный путь к файлу и имя файла, заданное регулярным выражением. Обратите внимание, что регулярное выражение применяется только к имени файла.
  • regexp - регулярное выражение, описывающее искомый шаблон содержимого.
  • encoding - идентификатор кодовой страницы.
  • maxlines - максимальное количество новых строк в секунду, которое агент будет отправлять на сервер Zabbix или прокси. Этот параметр переопределяет значение MaxLinesPerSecond в файле zabbix_agentd.conf.
  • mode (начиная с версии 2.0) - возможные значения: all (по умолчанию), skip — пропускать обработку старых данных (влияет только на вновь создаваемые элементы).
  • output (начиная с версии 2.2) - необязательный шаблон форматирования вывода. Управляющая последовательность \0 заменяется на совпавшую часть текста (от первого символа, где начинается совпадение, до символа, где оно заканчивается), а последовательность \N (где N=1...9) заменяется на N-ю совпавшую группу (или пустую строку, если N превышает количество захваченных групп).
  • maxdelay (начиная с версии 3.2) - максимальная задержка в секундах. Тип: float. Значения: 0 — (по умолчанию) никогда не игнорировать строки лог-файла; > 0.0 — игнорировать более старые строки, чтобы проанализировать самые свежие строки в пределах maxdelay секунд. 
  • options (начиная с версии 4.0; опции mtime-reread, mtime-noreread - с версии 4.4.7) - тип ротации лог-файла и другие опции. Возможные значения:
    • rotate (по умолчанию),
    • copytruncate - обратите внимание, что copytruncate нельзя использовать вместе с maxdelay. В этом случае maxdelay должен быть равен 0 или не указан; см. примечания по copytruncate,
    • mtime-reread — неуникальные записи, перечитывать при изменении времени модификации или размера файла (по умолчанию),
    • mtime-noreread — неуникальные записи, перечитывать только при изменении размера файла (игнорировать изменение времени модификации).
  • persistent_dir (начиная с версии 5.0.18, только в zabbix_agentd на Unix-системах; не поддерживается в Agent2) - абсолютный путь к каталогу для хранения постоянных файлов. См. также дополнительные примечания о постоянных файлах.

Ротация логов осуществляется на основе времени последней модификации файлов.

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

Примеры:

logrt["/home/zabbix/logs/^logfile[0-9]{1,3}$",,,100] 

Совпадёт с файлом вида "logfile1" (не совпадёт с ".logfile1").

logrt["/home/user/^logfile_.*_[0-9]{1,3}$","pattern_to_match","UTF-8",100]

Будет собирать данные из файлов типа "logfile_abc_1" или "logfile__001".

Использование параметра output для извлечения числа из записи лога:

logrt[/app1/^test.*log$,"task run [0-9.]+ sec, processed ([0-9]+) records, [0-9]+ errors",,,,\1]

Совпадёт с записью лога 2015-11-13 10:08:26 task run 6.08 sec, processed 6080 records, 0 errors и отправит на сервер только 6080. Поскольку отправляется числовое значение, для этого элемента можно установить «Тип информации» как «Числовой (целый положительный)» и использовать значение в графиках, триггерах и т.д.

Использование параметра output для переформатирования записи лога перед отправкой на сервер:

logrt[/app1/^test.*log$,"([0-9 :-]+) task run ([0-9.]+) sec, processed ([0-9]+) records, ([0-9]+) errors",,,,"\1 RECORDS: \3, ERRORS: \4, DURATION: \2"]

Совпадёт с записью лога 2015-11-13 10:08:26 task run 6.08 sec, processed 6080 records, 0 errors и отправит на сервер изменённую запись 2015-11-13 10:08:26 RECORDS: 6080, ERRORS: 0, DURATION: 6.08.

Type of information — Log.

Остальные параметры оставляете на свое усмотрение. Рекомендуется время обновления ставить поменьше.

На этом настройка завершена. Через некоторое время начнут приходить данные.

zabbix

Теги

 

Похожие материалы

Zabbix шаблон для мониторинга сервиса 1C Enterprise 8.3

Написал простой шаблон для мониторинга сервиса 1С. Всего один элемент данных и один триггер. Проверяю статус сервиса Агент сервера 1С:Предприятия 8.3 (x86-64).

Теги

Zabbix — срок действия SSL сертификата (2)

Сегодня напишем скрипт для мониторинга срока действия SSL сертификатов наших сайтов. Этот мониторинг пригодится многим. Системным администраторам в крупных компаниях, чтобы не пропустить момент перевыпуска сертификатов. Особенно, если количество сайтов — сотни. Владельцам собственных сайтов. Многие пользуются сервисом Let's Encrypt, особенностью сертификатов которого является короткий срок жизни. Если автоматика обновления сертификатов выйдет из строя, то мониторинг SSL сертификатов поможет выявить проблему до того, как она себя проявит.

Теги

Zabbix шаблон для мониторинга RAID контроллеров LSI, 4-я версия

Сижу я вечером дома после работы, вдруг, понимаю как вытащить данные о температуре и ошибках физических дисков контроллеров LSI.