
Rsyslog на Ubuntu – это мощный и гибкий демон системной регистрации, используемый для сбора, фильтрации, хранения и пересылки сообщений журнала, генерируемых операционной системой и приложениями. Это улучшенная версия традиционной службы syslog, предоставляющая дополнительные возможности, такие как высокопроизводительная регистрация, расширенные возможности фильтрации и поддержка нескольких протоколов регистрации, включая TCP, UDP и RELP (Reliable Event Logging Protocol). Rsyslog может обрабатывать сообщения журнала из различных источников и направлять их в различные места назначения, например в файлы, базы данных или на удаленные серверы. Он широко используется в централизованных системах регистрации для мониторинга, устранения неполадок и аудита. Благодаря возможности детальной настройки Rsyslog позволяет администраторам Ubuntu эффективно управлять системными журналами и обеспечивать сбор и безопасное хранение важной информации.
Журналы очень полезны для анализа и устранения проблем, связанных с системой Linux и приложениями. По умолчанию в операционных системах на базе Linux все файлы журналов располагаются в каталоге/var/log. Существует несколько типов файлов журналов, включая cron, kernel, users и security, и большинство из них контролируются службой Rsyslog.
В этом руководстве я расскажу, как настроить сервер Rsyslog на сервере Ubuntu 24.04.
Предварительные условия
- Два сервера под управлением Ubuntu 24.04.
- Статический IP-адрес 192.168.0.101 настроен на машине с сервером Rsyslog, а 192.168.0.102 настроен на машине с клиентом Rsyslog.
- На обоих серверах настроен пароль root.
Установка Rsyslog
Вы можете установить Rsyslog, выполнив следующую команду:
apt install rsyslog -y
После установки Rsyslog вы можете проверить версию Rsyslog с помощью следующей команды:
rsyslogd -v
Также можно проверить состояние Rsyslog с помощью следующей команды:
systemctl status rsyslog
Вы должны увидеть следующий вывод:
? rsyslog.service - System Logging Service Loaded: loaded (/lib/systemd/system/rsyslog.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2024-08-22 04:28:55 UTC; 1min 31s ago Docs: man:rsyslogd(8) http://www.rsyslog.com/doc/ Main PID: 724 (rsyslogd) Tasks: 4 (limit: 1114) CGroup: /system.slice/rsyslog.service ??724 /usr/sbin/rsyslogd -n Aug 22 04:28:53 ubuntu2404 systemd[1]: Starting System Logging Service... Aug 22 04:28:54 ubuntu2404 rsyslogd[724]: imuxsock: Acquired UNIX socket '/run/systemd/journal/syslog' (fd 3) from systemd. [v8.32.0] Aug 22 04:28:54 ubuntu2404 rsyslogd[724]: rsyslogd's groupid changed to 106 Aug 22 04:28:54 ubuntu2404 rsyslogd[724]: rsyslogd's userid changed to 102 Aug 22 04:28:54 ubuntu2404 rsyslogd[724]: [origin software="rsyslogd" swVersion="8.32.0" x-pid="724" x-info="http://www.rsyslog.com"] start Aug 22 04:28:55 ubuntu2404 systemd[1]: Started System Logging Service.
Настройка сервера Rsyslog
Теперь Rsyslog установлен и запущен. Далее необходимо настроить его для работы в режиме сервера. Для этого можно отредактировать файл /etc/rsyslog.conf.
nano /etc/rsyslog.conf
Сначала нужно определить протокол: UDP или TCP или оба.
Для одновременного использования UDP и TCP соединений найдите и откомментируйте строки ниже:
$ModLoad imudp $UDPServerRun 514 $ModLoad imtcp $InputTCPServerRun 514
Далее определите конкретную подсеть, IP или домен для ограничения доступа, как показано ниже:
$AllowedSender TCP, 127.0.0.1, 192.168.0.0/24, *.example.com $AllowedSender UDP, 127.0.0.1, 192.168.0.0/24, *.example.com
Далее необходимо создать шаблон, чтобы указать серверу Rsyslog, как хранить входящие сообщения syslog. Добавьте следующие строки непосредственно перед разделом GLOBAL DIRECTIVES:
$template remote-incoming-logs, "/var/log/%HOSTNAME%/%PROGRAMNAME%.log" *.* ?remote-incoming-logs
Сохраните и закройте файл, когда закончите. Затем проверьте конфигурацию Rsyslog на наличие синтаксических ошибок с помощью следующей команды:
rsyslogd -f /etc/rsyslog.conf -N1
Вы должны увидеть следующий результат:
rsyslogd: version 8.32.0, config validation run (level 1), master config /etc/rsyslog.conf rsyslogd: End of config validation run. Bye.
Наконец, перезапустите службу Rsyslog с помощью следующей команды:
systemctl restart rsyslog
Теперь проверьте, что Rsyslog прослушивает TCP/UDP, выполнив следующую команду:
netstat -4altunp | grep 514
Вы должны получить следующий результат:
tcp 0 0 0.0.0.0:514 0.0.0.0:* LISTEN 1332/rsyslogd udp 0 0 0.0.0.0:514 0.0.0.0:* 1332/rsyslogd
Настройка клиента Rsyslog
Сервер Rsyslog установлен и настроен для получения журналов с удаленных узлов.
Теперь необходимо настроить клиента Rsyslog на отправку сообщений syslog на удаленный сервер Rsyslog.
Войдите в систему на машине клиента и откройте файл конфигурации Rsyslog, как показано ниже:
nano /etc/rsyslog.conf
Добавьте следующие строки в конец файла:
##Enable sending of logs over UDP add the following line: *.* @192.168.0.101:514 ##Enable sending of logs over TCP add the following line: *.* @@192.168.0.101:514 ##Set disk queue when rsyslog server will be down: $ActionQueueFileName queue $ActionQueueMaxDiskSpace 1g $ActionQueueSaveOnShutdown on $ActionQueueType LinkedList $ActionResumeRetryCount -1
Сохраните и закройте файл. Затем перезапустите сервер Rsyslog, чтобы применить изменения конфигурации:
systemtcl restart rsyslog
Просмотр журнала клиента
На этом этапе клиент Rsyslog настроен на отправку своего журнала на сервер Rsyslog.
Войдите на сервер Rsyslog и проверьте каталог /var/log. Вы должны увидеть запись с именем хоста ваших клиентских машин, включая несколько файлов журнала:
ls /var/log/rsyslog-client/
Вывод:
CRON.log kernel.log rsyslogd-2039.log rsyslogd.log sudo.log wpa_supplicant.log