Zabbix-agent умеет читать файлы логов и отправлять их на Zabbix-server. Так что если вам лень постоянно заглядывать на сервер и просматривать нужные вам логи, то можете завести их на 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.
Остальные параметры оставляете на свое усмотрение. Рекомендуется время обновления ставить поменьше.
На этом настройка завершена. Через некоторое время начнут приходить данные.

