Передаём логи в Graylog с помощью Rsyslog

В этой статье я опишу как начать передавать логи с серверов Linux и роутеров Mikrotik на сервер сбора и хранения логов Graylog с помощью Rsyslog.

Введение

Я уже писал про установку сервера хранения и сбора логов Graylog на Debian 12. В этой статье научимся передавать логи на сервер Graylog с помощью сервиса Rsyslog.

Вообще есть множество способов передачи логов на Graylog, но в основном это:

  • Передача логов с помощью Rsyslog. Этим способом можно собирать логи с серверов Linux и роутеров Mikrotik (возможно не только Mikrotik).
  • Передача логов с помощью агентов. Есть множество разных агентов (для Windows, для Linux) которые могут передавать логи на сервер Graylog.

Использовать Rsyslog проще, он легче настраивается. Очень часто Rsyslog предустановлен в дистрибутиве Linux, а если и не предустановлен, то его легко установить. А на некоторые хосты вы ничего установить не можете, зато там есть Rsyslog, например роутеры MIkrotik. Также Rsyslog потребляет меньше ресурсов чем могут потреблять агенты. Rsyslog поддерживает и TCP и UDP.

Но агенты позволяют настроить определённую обработку логов перед их передачей для их лучшего анализа на сервере Graylog. Также агенты ведут свои логи, по которым вы можете узнать что что-то пошло не так (например логи перестали передаваться). Ещё агенты могут следить за доставкой логов на сервер и передавать повторно те логи, которые не долетели до сервера Graylog.

То-есть Rsyslog проще настроить, потребляет меньше ресурсов, но даёт меньше возможностей. А агенты сложнее настроить, потребляют больше ресурсов, но дают больше возможностей.

Включение сборщика логов

На сервере Graylog перейдите по меню System / Inputs:

Graylog переходим в настройку Inputs

Выберите тип сборщика логов Syslog UDP и нажмите Launch new input:

Graylog создаём новый input

В настройках поставьте галочку Global, в поле Title напишите любой комментарий для этого сборщика, а в самом низу выставьте верный часовой пояс.

Graylog настройка нового Input

У вас запустится новый сборщик (input):

Graylog просмотр запущенного Input

А справа вы увидите метрики по этому сборщику, и здесь же его можно остановить (Stop input), посмотреть входящие логи (Show received messages), отредактировать (Edit input) или удалить (Delete input):

Graylog возможные действия с Input

Подключение роутеров Mikrotik

Пришло время начать передавать логи с ваших устройств. Начнём с роутеров Mikrotik. В Winbox переходим по меню: System / Logging. Затем открываем вкладку Actions и создаём новый Action. Можете его назвать graylog, укажите тип (remote), а также укажите адрес сервера куда вы будите передавать логи (Remote Address) и адрес самого роутера (Src. Address).

Mikrotik - Winbox. Создание Action для передачи логов с помощью Rsyslog.

Затем переходим на вкладку Rules и дублируем каждое правило с указанием Action = graylog.

Mikrotik - настройка Rulles для передачи логов в Graylog

Подключение серверов Linux

В Debian 12 Rsyslog уже не предустановлен, поэтому его придётся установить:

$ sudo apt install rsyslog

Основной конфиг это /etc/rsyslog.conf. В нем по умолчанию:

  • Включены модули imuxsock (обеспечивает логгирования локальной системы через Unix-сокеты) imklog (обеспечивает поддержку логирования ядра.
  • Разные типы сообщений логируются в разные журналы:
    • auth,authpriv.* /var/log/auth.log
    • cron.* -/var/log/cron.log
    • kern.* -/var/log/kern.log
    • mail.* -/var/log/mail.log
    • user.* -/var/log/user.log

После установки у вас сразу запустится служба rsyslog и она будет запускаться при старте системы:

$ systemctl status rsyslog.service 
● rsyslog.service - System Logging Service
     Loaded: loaded (/lib/systemd/system/rsyslog.service; enabled; preset: enabled)
     Active: active (running) since Thu 2024-12-26 14:54:56 MSK; 9min ago
TriggeredBy: ● syslog.socket
       Docs: man:rsyslogd(8)
             man:rsyslog.conf(5)
             https://www.rsyslog.com/doc/
   Main PID: 5031 (rsyslogd)
      Tasks: 4 (limit: 8754)
     Memory: 1.2M
        CPU: 19ms
     CGroup: /system.slice/rsyslog.service
             └─5031 /usr/sbin/rsyslogd -n -iNONE

Вы можете передавать все логи или фильтровать передачу. Создайте конфиг /etc/rsyslog.d/30-graylog.conf со следующим содержимым:

  • Для передачи всех логов:
*.* @<ip_сервера_логов>:514
  • Для передачи определённых логов, например логов ядра и логинов:
kern.* @<ip_сервера_логов>:514
auth,authpriv.* @<ip_сервера_логов>:514
  • Также вы можете передавать все логи кроме определённых, в которых встречаются определённые слова:
if $msg contains 'Succeeded' then stop
if $msg contains 'zabbix' then stop
*.* @<ip_сервера_логов>:514
  • Или наоборот, передавать логи только для записей с определёнными словами:
if $msg contains 'failed' then @<ip_сервера_логов>:514
if $msg contains 'kernel' then @<ip_сервера_логов>:514
if $msg contains 'error' then @<ip_сервера_логов>:514
if $msg contains 'Device' then @<ip_сервера_логов>:514

Я предпочитаю передавать все логи, это не сильно напрягает сеть или сервер Graylog, но в случае проблем даёт большую информацию.

Просмотр логов

После подключения всех хостов вы сможете смотреть логи каждого из единого web-интерфейса на сервере Graylog, что очень удобно.

Возвращаемся в Graylog, переходим в Search. В поисковой строке укажем IP адрес роутера или имя сервера, чтобы искать логи по конкретному хосту. Либо здесь можно указать любое слово, по которому вы желаете отфильтровать логи.

Graylog - просмотр логов в Search

В области Messages Count вы увидите сколько логов (с отфильтрованным поиском) в определённое время было передано. А в All Messages будут видны сами логи.


Если понравилась статья, подпишись на мой канал в VK.

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