Mikrotik отправка логов на удаленный сервер rsyslog

В современном администрировании сетей важно не только обеспечивать стабильную работу оборудования, но и своевременно анализировать события, происходящие в системе. Для этого используется централизованный сбор логов, что позволяет удобно хранить, фильтровать и анализировать данные с множества устройств. В этой статье мы рассмотрим, как настроить маршрутизатор Mikrotik для отправки логов на удалённый сервер rsyslog. Такое решение помогает оптимизировать мониторинг сети, быстро выявлять проблемы и поддерживать её безопасность.

В данной заметке, мы будем использовать сервер rsyslog на базе Debian 12. Если у вас еще не настроен сервер с Debian, то можете воспользоваться статьей на сайте Установка Debian 12 в качестве сервера.

Установка rsyslog

Для начала проверим, установлен ли в системе rsyslog:

dpkg -l | grep rsyslog

Если пакет установлен, вы увидите строку с именем rsyslog, если вывода нет, rsyslog не установлен.

Давайте исправим это:

apt update
apt install rsyslog

После установки служба должна автоматически запуститься. Для проверки используйте:

systemctl status rsyslog

Настройка rsyslog

Теперь нам необходимо настроить сервер на прием логов с удаленных источников. Для этого в rsyslog включим возможность слушать udp port 514.

Открываем конфигурацию rsyslog:

nano  /etc/rsyslog.conf

и раскомментируем там строки:

module(load="imudp")
input(type="imudp" port="514")

Должно получиться как на картинке ниже:

Раскомментируем строки подключения

Далее в этом же файле, в секции Rules добавим наше правило:

$template FILENAME,"/var/log/mikrotik/%fromhost-ip%.log"
if $fromhost-ip != '127.0.0.1' then ?FILENAME
& stop

Должно получиться как на картинке ниже:

При такой конфигурации правила логи от всех удалённых хостов, за исключением локального хоста (127.0.0.1), будут записываться в файлы, расположенные в /var/log/mikrotik/, с именами, зависящими от IP-адреса отправителя. Например, если лог пришёл от устройства с IP 192.168.1.1, файл будет /var/log/mikrotik/192.168.1.1.log. Логи от локального хоста будут игнорироваться и не записываться в этот каталог.

Сохраняем изменения и выходим из nano.

Далее настроим logrotate, для ротации лог файлов, чтобы они нам не забили весь диск.

Для этого создаем конфигурацию для logrotate:

nano /etc/logrotate.d/mikrotik

И добавляем в файл конфигурацию ниже:

/var/log/mikrotik/*.log {
        daily
        rotate 14
        compress
        missingok
        notifempty
        create 640 root adm
        postrotate
            systemctl restart rsyslog
        endscript
}

Немного пояснений по конфигурации ротации лога:

  • /var/log/mikrotik/*.log — указывает, что логротейт должен работать с лог-файлами в директории /var/log/mikrotik/, заканчивающимися на .log. То есть, все файлы с расширением .log в этой директории будут обрабатываться.
  • daily — задает частоту ротации логов. В данном случае, логи будут ротироваться каждый день.
  • rotate 14 — указывает количество старых логов, которые нужно хранить. После того как будет создано 14 архивов (старых файлов логов), старейшие будут удаляться. То есть, сохраняются 14 ежедневных архивов логов.
  • compress — означает, что после ротации старые логи будут сжаты с использованием утилиты gzip (по умолчанию). Это позволяет экономить место на диске, так как сжатие логов уменьшает их размер.
  • missingok — эта опция сообщает logrotate, что если один из лог-файлов отсутствует, то не следует генерировать ошибку. Это полезно, если файл лога временно недоступен или не существует.
  • notifempty — эта опция указывает, что ротация не будет выполнена, если лог-файл пустой. То есть, если лог-файл не содержит данных, его ротация не произойдет.

Далее сохраняем изменения и выходим из nano.

Внимание!

Не забудьте создать указанные директории. В нашем примере /var/log/mikrotik

После этого перезапускаем rsyslog:

systemctl restart rsyslog

Настройка пересылки логов в Mikrotik

Теперь необходимо сделать настройки в Mikrotik. Для этого открываем WinBox и переходим в раздел System — Logging и там выбираем вкладку Actions. На этой вкладке два раза кликаем мышкой на строке remote и указываем IP-адрес нашего сервера с настроенным rsyslog:

Далее открываем вкладку Rules и добавляем необходимое правило хранения логов. В поле Actions выбираем remote:

На этом настройка отправки логов с Mikrotik на удаленный сервер завершена.

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

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

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

Оставьте комментарий