Мониторинг лог файла в Zabbix

Zabbix умет анализировать любой лог файл, сохранять его в свою базу, рассылать алерты по каким-то событиям. Я решил использовать эту возможность для анализа лог файла утилиты acpupsd для отправки оповещений об отключении электричества. Решается данная задача стандартным функционалом заббикса, описанного в документации.

Углубленный онлайн-курс по MikroTik

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном онлайн-курcе по администрированию MikroTik. Автор курcа – сертифицированный тренер MikroTik Дмитрий Скоромнов. Более 40 лабораторных работ по которым дается обратная связь. В три раза больше информации, чем в MTCNA.

Введение

Ранее я рассказывал об использовании утилиты управления упсами марки apc - apcupsd. Я показал, как установить apcupsd на hyper-v и xenserver для корректного завершения работы при отключении электричества. Рекомендую ознакомиться, если вас интересует этот вопрос. Его не всегда получается быстро и удобно решить. На помощь приходит apcupsd.

Указанные конфигурации у меня успешно работают, проверено годами. Я решил настроить отправку оповещений на почту через zabbix при пропадании электричества. Да и просто хочется хранить информацию об инцидентах в одном месте. Почтовые сообщения не всегда будут доставлены, нужно следить, чтобы на резервное питание были подключены все устройства, которые обеспечивают связь с интернетом. Частенько бывает, что при выключении электричества у провайдера так же выключается оборудование и связи нет. Либо ваш свитч, к которому подключен сервер, выключится и сообщение не будет доставлено.

Заранее позаботьтесь об этих вещах. Пишу об этом, потому что сам недавно на одном объекте все запитал от упсов, но забыл про свитч. В итоге об отключении электричества я узнал уже после того, как его вернули назад и сервера автоматически поднялись. Если у вас еще не настроен сервер мониторинга, рекомендую мою подробную статью с видео об установке и настройке zabbix на centos 9 или установка zabbix 3.4 на debian 9.

Настройка мониторинга логов

Для того, чтобы мониторить лог файл, на сервере должен быть установлен zabbix agent, а сам сервер добавлен в панель мониторинга. Я буду следить за логом программы apcupsd, который располагается по пути /var/log/apcupsd.events. Идем в веб интерфейс заббикса и добавляем новый итем к интересующему нас хосту. Если у вас таких будет несколько, то создавайте сразу шаблон. В моем случае у меня один сервер, поэтому я буду добавлять новый элемент сразу на него.

На всякий случай сообщаю, что вся настройка проходит на zabbix server версии 3.2. Но информация актуальна и для других версий, так как используется стандартный функционал, который поддерживают все версии заббикса.

Создаем новый итем со следующими параметрами:

Создание итема log

Name Имя нового итема. Можете указать любое название.
 Type Тип элемента. Обязательно выбираем Zabbix agent (active). По-умолчанию будет другой тип стоять.
 Key Ключ данных, log - тип, в квадратных скобках путь до лог файла.
Type of information  Указываем тип информации, поступающей в итем.

Остальные параметры оставляете на свое усмотрение. Рекомендую время обновления итема ставить поменьше, чтобы оперативно получить информацию об инциденте. У меня стоит 30 секунд.

После того, как вы сохраните новый итем, через несколько минут начнут поступать данные. Проверять их как обычно в Latest data. В данной конфигурации будут сохраняться все строки из файла. В моем случае это не страшно, так как записей будет очень мало. Они создаются только по событиям в электро сети, а они случаются редко, поэтому я не стал делать фильтр по строкам или словам.

Но это только пол дела. Мы стали собирать логи, теперь нам нужно настроить отправку оповещения при пропадании электричества.

Создание триггера на событие из лога

Мы будем слать оповещение не только в момент отключения электричества, но и тогда, когда оно снова появится. Так что в триггере будут два условия:

  1. Условие активации события.
  2. И условие его прекращения.

Открываем вкладку с триггерами хоста и добавляем туда новый триггер со следующими параметрами:

Добавление триггера по событию из лог файла

Name Имя триггера. Может быть любым.
Problem expression {xm-xen02:log[/var/log/apcupsd.events].str(Power failure.)}=1
Recovery expression {xm-xen02:log[/var/log/apcupsd.events].str(Power is back.)}=1

Рассказываю подробнее, что тут написано. xm-xen02 - имя сервера. Power failure. - строка в лог файле, которая появляется при отключении электричества. Когда оно возвращается, появляется запись Power is back. В общем виде лог выглядит примерно следующим образом:

2016-11-07 23:17:23 +0300 Power failure.
2016-11-07 23:17:29 +0300 Running on UPS batteries.
2016-11-07 23:21:20 +0300 Mains returned. No longer on UPS batteries.
2016-11-07 23:21:20 +0300 Power is back. UPS running on mains.
2016-11-16 14:20:42 +0300 Power failure.
2016-11-16 14:20:48 +0300 Running on UPS batteries.
2016-11-16 14:20:51 +0300 Mains returned. No longer on UPS batteries.
2016-11-16 14:20:51 +0300 Power is back. UPS running on mains.

Становится понятно, почему я взял именно эти строки. На этом все. После сохранения триггера он начнет работать и следить за итемом, который собирает строки из лога. Как только появятся строки, попадающие под условие, вы получите оповещение.

Заключение

Отладить работу оповещения об отключении электричества достаточно трудно, так как дергать по этому поводу шнур с питанием не хочется. Я пошел другим путем. Во время отладки использовал общий лог файл /var/log/messages и останавливал службу chronyd. Во время остановки, она пишет информацию об этом в лог файл, а при запуске так же сообщает, что запустилась. Я просто настроил итем и триггер на нужные строки и убедился, что все работает как надо. После этого уже сделал по аналогии итемы и триггеры для apcupsd. Рекомендую поступить похожим образом и потестировать функционал.

Помогла статья? Подписывайся на telegram канал автора

Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.

Дополнительные материалы по Zabbix

Углубленный онлайн-курс по MikroTik.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном онлайн-курcе по администрированию MikroTik. Автор курcа – сертифицированный тренер MikroTik Дмитрий Скоромнов. Более 40 лабораторных работ по которым дается обратная связь. В три раза больше информации, чем в MTCNA.
Рекомендую полезные материалы по Zabbix:
Настройки системы
  • Установка 4.0
  • Обновление 3.0 -> 3.2
  • Обновление 3.4 -> 4.0
  • Установка Zabbix Proxy
  • Работа на NGINX
Видео и подробное описание установки и настройки Zabbix 4.0, а также установка агентов на linux и windows и подключение их к мониторингу.
Подробное описание обновления системы мониторинга zabbix версии 3.4 до новой версии 4.0.
Пошаговая процедура обновления сервера мониторинга zabbix 2.4 до 3.0. Подробное описание каждого шага с пояснениями и рекомендациями.
Подробное описание установки и настройки zabbix proxy для организации распределенной системы мониторинга. Все показано на примерах.
Подробное описание установки системы мониторинга Zabbix на веб сервер на базе nginx + php-fpm.
Мониторинг служб и сервисов
 
  • Температура процессора
  • Nginx и php-fpm
  • Mysql репликация
  • Службы Linux
  • Рейд mdadm
  • Транки Asterisk
  • Synology
Мониторинг температуры процессора с помощью zabbix на Windows сервере с использованием пользовательских скриптов.
Настройка полноценного мониторинга web сервера nginx и php-fpm в zabbix с помощью скриптов и пользовательских параметров.
Мониторинг репликации mysql с помощью Zabbix. Подробный разбор методики и тестирование работы.
Описание настройки мониторинга tcp служб с помощью zabbix и его инструмента простых проверок (simple checks)
Настройка мониторинга рейда mdadm с помощью zabbix. Подробное пояснение принципа работы и пошаговая инструкция.
Подробное описание мониторинга регистраций транков (trunk) в asterisk с помощью сервера мониторинга zabbix.
Подробная инструкция со скриншотами по настройке мониторинга по snmp дискового хранилища synology с помощью сервера мониторинга zabbix.
Мониторинг различных значений
  • Мониторинг сайта
  • Мониторинг бэкапов
  • Размер бэкапа
  • Делегирование домена
  • Значения из текстового файла
  • Мониторинг логов
Настройка мониторинга web сайта в zabbix. Параметры для наблюдения - доступность сайта, время отклика, скорость доступа к сайту.
Один из способов мониторинга бэкапов с помощью zabbix через проверку даты последнего изменения файла из архивной копии с помощью vfs.file.time.
Подробное описание настройки мониторинга размера бэкапов в Zabbix с помощью внешних скриптов.
Пример настройки мониторинга за временем делегирования домена с помощью Zabbix и внешнего скрипта. Все скрипты и готовый шаблон представлены.
Описание мониторинга лог файлов в zabbix на примере анализа лога программы apcupsd. Отправка оповещений по событиям из лога.

Автор Zerox

Владимир, системный администратор, автор сайта. Люблю настраивать сервера, изучать что-то новое, делиться знаниями, писать интересные и полезные статьи. Открыт к диалогу и сотрудничеству. Если вам интересно узнать обо мне побольше, то можете послушать интервью. Запись на моем канале - https://t.me/srv_admin/425 или на сайте в контактах.

33 комментария

  1. Михаил

    Добрый день!
    Нигде не могу найти ответ, подскажите пожалуйста.
    Есть ключ
    logrt["/var/log/proga/^Proga_[0-9]{1,8}.log$","\[(WRN|ERR)\]",,100]
    Он выводит из всех файлов логов в папке строки с WRN или ERR
    Как сюда добавить исключение?
    Например, чтобы выводились все строки, содержащие WRN или ERR, но не выводились те, что одновременно содержат WRN и XXX или XXX и ERR?

  2. А как сделать аналогичный триггер в версии 5.4?

  3. Владимир, добрый день.
    Спасибо Вам за статьи, изучаю Zabbix и очень полезный материал описываете =)
    У меня такой вопрос: пытаюсь настроить мониторинг лога линукс-машины, попробовал Ваш шаблон, описанный в статье. Пробую тестировать, подключаясь по ssh к линукс-машине, в логах tail-ом вывожу записи о подключении по SSH, но триггер так и не срабатывает, увы. Включаю tail-ом лог заббикс-сервера и заббикс-клиента, но на 3 уровне логирования ничего не вижу. На 4 уже начинает сыпаться море логов.

    Настраивал айтем так:
    Имя: SSH auth
    Тип: Zabbix агент (активный)
    Ключ: log[/var/log/secure,"^.*sshd.*(Accepted|closed).*"]
    Тип информации: Журнал (лог)
    Группы элементов данных: Authentication control (кастомная)

    Триггер:
    Имя: SSH Authentication
    Важность: Чрезвычайная
    Выражение: {Custom Linux Security Template:log[/var/log/secure,"^.*sshd.*(Accepted|closed).*"].str(Accepted,1)}=1

    Версия заббикс-сервера и заббикс-агента 5.0.10. Они установлены на разных машинах, сервер на CentOS7, а агент на Kali Linux.

  4. Выражение восстановления не будет работать.

    Т.к. для закрытия требуется выполнение условий:

    Выражение проблемы - ЛОЖЬ

    Восстанавливающее выражение - ИСТИНА

    https://www.zabbix.com/documentation/4.4/ru/manual/config/triggers/expression

    • В таком виде будет работать. Много где настраивал. Если выражение для восстановления появляется, триггер закрывается.

  5. Александр

    Здравствуйте, поступила задача настроить логирование на WINDOWS Server 2019. Я посмотрел что должен быть установлен шаблон active. В добавок необходимо создать новые элементы с log для считывания.

    Я создал заббикс с версии 5 по вашей статье установил zabbix клиента zabbix_agent-5.0.4-windows-amd64-openssl. Поставил сначала шаблон обычный, он заработал, потом поменял на active и мне пишет ошибку Zabbix agent is not available (or nodata for 30m). Я не понимаю почему так происходит. Объясните пожалуйста что мне нужно сделать ?

    • Александр

      В настройках я указал ServerActive=172.22.145.252 Server=172.22.145.252

    • Александр

      Ошибка выглядит вот так 11324:20201211:095633.428 no active checks on server [172.22.145.252:10051]: host [FSO-19015] not found

    • Сергей

      Если ещё актуально - посмотрите, есть ли доступ с вашего Windows-сервера до Zabbix по порту 10051 (на Windows-машине выполнить telnet zabbix_host_IP 10051).

  6. Добрый день.
    Подскажите как правильно создать триггер на OID. Настраиваю отлов петель при симуляции петли есть следующая строчка:
    .1.3.6.1.4.1.40418.0.157 Normal "General event" 10.30.90.61 - ZBXTRAP 10.30.90.61 Port Ethernet1/0/11 vlan 1 is a loopback device $2 $3

    Ни как не могу правильно написать выражение в тригере, чтобы он отрабатывал на OID. Подскажите как правильно это написать?

    • Не понял, что значит триггер отрабатывал на oid? Вам нужно создать айтем для сбора данных с этого oid. Тип данных будет текстовый. Дальше в триггере делаете проверку строки на слово, к примеру, "loopback". Если такое слово есть, триггер срабатывает.

      • В итеме тип выставил "Zabbix траппер", ключ "snmptraps", тип информации "текст"

        само выражение после создания триггера выглядит так: (({Loop SNR:snmptraps.regexp(loopback)})0)

        я все правильно сделал? Просто при появлении записей о петлях, триггер не отрабатывает

  7. Александр

    Добрый день.
    Подскажите пожалуйста, возможно ли отправлять в уведомлении всю строку из лог файла (т.е. её содержимое).
    А в качестве триггера использовать только определенную её часть.
    Т.е. если строка содержит определенный текст, то отправить уведомлением всю строку целиком.

  8. Добрый день, если сталкивались с задачей мониторинга событий в Windows системах в нестандартных логах, а логах служб (пример TaskScheduler/Operational), не могли бы вы освятить это вопрос. Ключ eventlog не подходит и evtx-файлы никак не получается заставить понимать (Zabbix 5). спасибо заранее

    • Для хранения и анализа логов, тем более из Windows, Zabbix не очень подходит. Смотрите в сторону ELK. У меня есть статьи.

      • Спасибо за ответ - но цель сделать мониторинг в рамках одной системы (в данном случае Zabbix)) ). Отвечаю на свой же вопрос: задача решена через UserParameter, к сожалению из коробки такого функционала нет.

  9. Владимир, приветствую!
    Если log-большой, но нужно снимать только появление определённой строки, каким образом сразу настроить фильтры? Серверов планируется множество (более 500шт), не хотелось бы лить с каждого из них логи на сервер

    • Zabbix не подходит для таких задач - большой лог и 500 шт серверов. Нужно что-то другое рассматривать. Самый простой случай - каким-то образом анализировать логи на серверах и слать сообщение на zabbix сервер при появлении нужной строки. Анализировать можно хоть bash скриптом и слать через zabbix_sender. Но это не очень для 500 серверов. По хорошему, вам нужно полноценное хранилище логов, типа ELK. Там уже их анализировать и выполнять какие-то действия.

    • Сергей

      Павел, а большой лог это какой порядок?
      Мегабайты / гигабайты? И какая скорость записи в строках в секунду?
      Если скорость записи в файл велика - потребуется тюнить Zabbix agent, чтобы он успевал обрабатывать логи. Если очень велика - и это не поможет.

      Если нужно извлекать только строки по шаблону - для этого можно создать item'ы с определёнными регулярками. Что-то типа того: log[/path/to/the/file,"large result buffer allocation.*Entries: ([0-9]+)",,,,\1]. Т.е. можно извлекать как всю строку, попадающую под шаблон, так и определённые её части (В примере из строки извлекается только цифра)

      Агенты можно настроить на авторегистрацию в системе мониторинга Zabbix. Т.е. разливать агенты на 500 серверов (например через Ansible), а они будут автоматом будут цеплятся к Zabbix и появляться в веб-интерфейсе.

      Всё зависит от конкретной задачи и отдельных тонкостей вашей среды. Какой-то мониторинг лог-файлов организовать можно. Может быть, он вас даже устроит.

      Но полностью согласен с Zerox - ELK-стек для таких задач несравнимо адекватнее и удобнее. Обработка логов в Zabbix по сравнению с ним - беспросветное (и крайне ограниченное) уныние...

  10. Добрый день!
    Я так понимаю, что при помощи данной инструкции можно мониторить win сервера.
    Только я не совсем понял, как настроить агент....
    Если не сложно и/или есть уже у Вас данная инструкция, буду признателен, на тыканье носом.

    Заранее благодарен.

    • Более внимателено почитал документацию к агенту, и нашел такой интересный параметр "UserParameter=" в нем указал, нужные мне действия, взял из шаблона, прописал, путь, в квадратных скобках , но служба не стратует.... Может есть идеи, что я пропустил, или не так сделел.

      Заранее благодарен.

  11. Здравствуйте! Спасибо за статью. Как мониторить syslog файлы на удаленном сервере syslog? Чтобы не тащить syslogi с множества железа и сетевых служб.

  12. Здравствуйте. Спасибо за статью! Можете подсказать, нужно настроить тригер что бы он срабатывал при появлении в логе сообщения "changed state to DOWN" более четырех раз в течении 5 секунд. Нужно использовать функцию count()?

  13. Жамшид

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

  14. Добрый день! А есть ли готовые templates для мониторинга mikrotik-ов под zabbix 3.x. И какие используете Вы?

  15. Добрый день, а не могли бы написать статью как отправлять алерты по смс без gsm модуля?

    • Я сам не настраивал никогда, не было надобности. В интернете есть сервисы, которые пересылают на смс сообщения, отправленные на email. Так что просто регистрируетесь в таком сервисе, там дают емейл, его надо указать в качестве получателя уведомлений в заббиксе. И все, сообщения полетят в виде смс. Никаких особых настроек не надо.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.
Используешь Telegram? Подпишись на канал автора →
This is default text for notification bar