В этой статье я опишу как начать передавать логи с серверов 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:
Выберите тип сборщика логов Syslog UDP и нажмите Launch new input:
В настройках поставьте галочку Global, в поле Title напишите любой комментарий для этого сборщика, а в самом низу выставьте верный часовой пояс.
У вас запустится новый сборщик (input):
А справа вы увидите метрики по этому сборщику, и здесь же его можно остановить (Stop input), посмотреть входящие логи (Show received messages), отредактировать (Edit input) или удалить (Delete input):
Подключение роутеров Mikrotik
Пришло время начать передавать логи с ваших устройств. Начнём с роутеров Mikrotik. В Winbox переходим по меню: System / Logging. Затем открываем вкладку Actions и создаём новый Action. Можете его назвать graylog, укажите тип (remote), а также укажите адрес сервера куда вы будите передавать логи (Remote Address) и адрес самого роутера (Src. Address).
Затем переходим на вкладку Rules и дублируем каждое правило с указанием Action = 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 адрес роутера или имя сервера, чтобы искать логи по конкретному хосту. Либо здесь можно указать любое слово, по которому вы желаете отфильтровать логи.
В области Messages Count вы увидите сколько логов (с отфильтрованным поиском) в определённое время было передано. А в All Messages будут видны сами логи.
Если понравилась статья, подпишись на мой канал в VK.