Как настроить сервер Rsyslog на Debian 11 (Bullseye)
Файлы журналов имеют решающее значение для выявления и устранения ошибок. Это первые файлы, которые системные администраторы изучают, чтобы сузить круг возможных причин ошибки и тем самым найти решения для решения проблемы. В инфраструктуре с десятками или сотнями серверов и других устройств управление файлами журналов может быть проблемой. И здесь на помощь приходит rsyslog.
Rsyslog — это программа регистрации с открытым исходным кодом, которая упрощает пересылку файлов журнала на централизованный сервер журнала в IP-сети. Благодаря централизованному ведению журнала администраторы могут легко отслеживать файлы журналов нескольких систем из центрального пункта. В этом посте мы проведем вас через установку и настройку Rsyslog Server в Debian 11.
Лабораторная установка
Чтобы продемонстрировать, как Rsyslog можно использовать для отправки файлов журнала из клиентской системы на сервер Rsyslog, у нас будет простая лабораторная установка, как показано
- Сервер Rsyslog: Debian 11 IP: 192.168.1.151
- Клиент Rsyslog: Ubuntu 20.04 IP: 10.20.0.170
Шаг 1) Настройте Rsyslog на сервере
Как упоминалось ранее, Rsyslog работает по модели клиент-сервер, и мы начнем с настройки Rsyslog на сервере Debian 11. В Debian 11 по умолчанию устанавливается Rsyslog. Если по какой-то причине Rsyslog отсутствует, вы можете установить его с помощью команды:
$ sudo apt install -y rsyslog
После установки вы можете проверить его рабочий статус следующим образом:
$ sudo systemctl status rsyslog
Затем мы настроим rsyslog для работы в режиме сервера. Файл конфигурации — это файл /etc/rsyslog.conf . Итак, отредактируйте его с помощью предпочитаемого вами текстового редактора.
$ sudo vi /etc/rsyslog.conf
Продолжите и раскомментируйте следующие строки, которые разрешают прием системного журнала UDP и TCP от удаленных клиентов.
# provides UDP syslog reception module(load="imudp") input(type="imudp" port="514") # provides TCP syslog reception module(load="imtcp") input(type="imtcp" port="514")
После этого вставьте следующие строки, чтобы определить шаблон, который демон Rsyslog будет использовать для хранения входящих журналов от клиентских систем.
$template remote-incoming-logs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" *.* ?remote-incoming-logs
Файлы журнала будут использовать следующее соглашение об именах:
- /% HOSTNAME% / — это имя хоста клиентской системы.
- /% PROGRAMNAME% / — определяет клиентскую программу, создавшую файл журнала.
Чтобы применить изменения, перезапустите демон rsyslog.
$ sudo systemctl restart rsyslog
По умолчанию rsyslog прослушивает порт 514. Вы можете подтвердить, что это порт, который прослушивает демон rsyslog, выполнив команду ss .
$ sudo ss -tunlp | grep 514
Шаг 2) Настройте правила брандмауэра для rsyslog
Демон Rsyslog работает на сервере должным образом. Если вы используете брандмауэр UFW, обязательно разрешите порт 514, чтобы разрешить входящие сообщения журнала.
$ sudo ufw allow 514/tcp $ sudo ufw allow 514/udp
Затем перезагрузите брандмауэр, чтобы применить правило брандмауэра, как показано ниже.
$ sudo ufw reload
Следующим шагом будет настройка клиентской системы Ubuntu для отправки файлов журнала на сервер rsyslog.
Шаг 3) Настройте клиентскую систему rsyslog
Последний шаг — настроить клиентскую систему для отправки файлов журнала на сервер rsyslog. Войдите в клиентскую систему и еще раз убедитесь, что демон rsyslog установлен и запущен.
Затем отредактируйте файл конфигурации rsyslog.
$ sudo vi /etc/rsyslog.conf
Перейдите в самый конец файла и добавьте эти строки.
#Enable sending system logs over UDP to rsyslog server *.* @rsyslog-ip-address:514 #Enable sending system logs over TCP to rsyslog server *.* @@rsyslog-ip-address:514
Эти строки указывают клиенту отправлять файлы журнала по протоколам UDP и TCP на сервер rsyslog. Обратите внимание, что в первой строке есть один символ @, обозначающий UDP, а во второй строке — два символа @@ для обозначения протокола TCP.
Если на удаленном сервере произойдет какой-либо простой и вы хотите сохранить свои журналы, вы можете установить буфер дисковой очереди, добавив показанные строки.
## Установить очередь диска, когда сервер rsyslog не работает:
$ActionQueueFileName queue $ActionQueueMaxDiskSpace 1g $ActionQueueSaveOnShutdown on $ActionQueueType LinkedList $ActionResumeRetryCount -1
Ниже приводится сводка всех изменений в конфигурации клиента.
Сохраните и выйдите из файла. Теперь перезапустите службу rsyslog, чтобы изменения вступили в силу.
$ sudo systemctl restart rsyslog
На этом этапе клиентская система должна отправлять файлы журнала на сервер rsyslog. Вернемся к серверу и узнаем.
Шаг 4) Просмотрите файлы журнала клиента
Все файлы журналов (включая серверы) хранятся в каталоге /var/log/ . Чтобы просмотреть журналы клиента, выполните следующую команду:
$ ls /var/log/
Файлы журнала клиента будут сохранены в каталоге, соответствующем имени хоста клиентской системы, как показано ниже.
Вы также можете просмотреть файлы журналов, содержащиеся в главном каталоге журналов.
$ sudo ls -l /var/log/ubuntu-20-04/
Для просмотра журналов в реальном времени используйте команду tail, как показано. Здесь мы просматриваем журналы пользователя sudo.
$ sudo tail -f /var/log/ubuntu-20-04/sudo.log
Мы успешно установили rsyslog и настроили его, чтобы разрешить отправку файлов журнала на сервер rsyslog из клиентской системы. Теперь вы можете настроить столько клиентских систем, сколько хотите, для отправки журналов на сервер rsyslog, чтобы получить централизованную структуру управления журналами.
Это все из этого поста, надеюсь, вы нашли его информативным. Пожалуйста, поделитесь своими запросами и отзывами в разделе комментариев ниже.