Настало время записать настройку позволяющую принимать логи на наш Zabbix сервер (как минимум) и делать триггеры на их основе (для продвинутых). Пройдемте под кат
Для начала убедимся что у нас установлен Rsyslog и что он запущен и работает
dpkg -l | grep rsyslog #проверка наличия установленного пакета
apt update && sudo apt install rsyslog #установка пакета если его нет
systemctl status rsyslog #проверить что служба запущена
systemctl enable rsyslog #включить службу
Теперь правим конфигурационный файл rsysloog
mcedit /etc/rsyslog.conf
Раскомментируем строчки:
module(load=»imudp») #модуль для приема логов по udp.
input(type=»imudp» port=»514″) #udp порт который будет слушать наш rsyslog.
Добавим в конец конфига rsyslog следующую строку
if $fromhost-ip contains ‘IP-address-your-log-source’ then /var/log/your-log-source.log
Здесь говориться если у хоста ip=IP-address-your-log-source то его логи записываем в файл /var/log/your-log-source.log
systemctl restart rsyslog #рестартуем службу rsyslog
ufw allow from IP-address-your-log-source to any port 514 proto udp #не забудем добавить правило файрвола разрешающее приемку логов от вашего источника
Дальше настроить отправку логов с вашего источника (например микротика) на адрес заббикс сервера. Логи будут приниматься rsyslog и складываться в отдельный файл
Дальше создаем Item в Zabbix Server чтобы собирать записи из лога в сам Заббикс
- Имя элемента данных (называем его по имени клиента).
- Тип Zabbix агент (активный) это обязательно.
- Ключ — log[/var/log/your-log-source.log,,,10000,skip,,] – указываем путь к файлу который будем мониторить и считывать с него данные.
- Тим информации – Журнал лог.
Не забудем настроить права доступа к этому файлу чтобы заббикс мог его читать
ls -la /var/log/your-log-source.log.log #проверим что сейчас с правами видим что группа adm может читать этот файл
-rw-r----- 1 syslog adm 971 Jul 27 21:08 /var/log/your-log-source.log.log
usermod -a -G adm zabbix # Добавим пользователя zabbix в группу adm
systemctl restart zabbix-agent # рестартуем службу агента
В итоге у самого Заббикс-сервера должна появится еще одна метрика под названием как мы его назвали, и в истории будут отображаться логи с источника
Далее можно делать триггеры — насколько хватит фантазии и усидчивости.
Например такая задача: получать алерты каждый раз когда кто-нибудь входит в Микротик. Решить ее можно следующим образом
- Создаем отдельный Item type=log, Key = log[/var/log/your-log-source.log,»account»,,1000,skip,,] в который собираем исключительно логи связанные с топиком Account (т.е. все строки, где найдется входение слова «account».
- Создаем триггер с фукнцией find. Удобно можно его сделать через конструктор выражений
- Name: Назовите как угодно, чтоб потом вам самим было понятно о чем речь
- Severity: Information
- Operational data: {ITEM.LASTVALUE}
- Expression: find(/имя-заббикс-сервера/log[/var/log/your-log-source,»account»,,1000,skip,,],,,»logged in»)=1
- Allow manual close: yes
- Enabled: yes
Ключевое тут — функция поиска по Item вашего сервера, которая ищет вхождение «logged in» за последние 5 минут в этом Item. И будет самозакрываться. Но в алерт к нам будет прилетать информация об этом вместе с строкой Operational data, по которой он сработал — т.е. будет видно кто куда и когда вошел