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

Мониторинг логов в 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

Теги

 

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