Файлы журналов очень важны для поиска и устранения ошибок. Это первые файлы, которые системные администраторы тщательно изучают, чтобы определить вероятную причину ошибки и, таким образом, придумать решения для устранения проблемы. В инфраструктуре с десятками или сотнями серверов и других устройств управление файлами журналов может стать сложной задачей. И здесь на помощь приходит rsyslog.
Rsyslog - это программа ведения журналов с открытым исходным кодом, которая облегчает пересылку файлов журналов на централизованный сервер журналов в IP-сети. Благодаря централизованной регистрации администраторы могут легко следить за лог-файлами нескольких систем из одной точки.
Настройте Rsyslog на сервере
Rsyslog работает по модели клиент-сервер, и мы начнём с настройки Rsyslog на сервере Debian. Если по какой-то причине Rsyslog отсутствует, вы можете установить его с помощью команды:
1 | apt install -y rsyslog |
После установки вы можете проверить статус его работы следующим образом:
1 | systemctl status rsyslog |
Далее мы настроим rsyslog для работы в режиме сервера. Файл конфигурации - это файл /etc/rsyslog.conf. Поэтому отредактируйте его с помощью удобного для вас текстового редактора.
1 | nano /etc/rsyslog.conf |
Отредактируйте следующие строки, которые обеспечивают прием UDP и TCP syslog от удаленных клиентов.
1 2 3 4 5 6 7 | # обеспечивает прием UDP syslog module(load="imudp") input(type="imudp" port="514") # обеспечивает прием syslog по TCP module(load="imtcp") input(type="imtcp" port="514") |
После этого вставьте следующие строки, чтобы определить шаблон, который демон Rsyslog будет использовать для хранения входящих журналов от клиентских систем.
1 2 | $template remote-incoming-logs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" *.* ?remote-incoming-logs |
Файлы журнала будут использовать следующее соглашение об именовании:
%HOSTNAME% - Это имя хоста клиентской системы.
%PROGRAMNAME% - Здесь указывается клиентская программа, создавшая файл журнала.
Чтобы применить изменения, перезапустите демон rsyslog.
1 | systemctl restart rsyslog |
По умолчанию rsyslog прослушивает порт 514. Вы можете убедиться, что демон rsyslog прослушивает именно этот порт, выполнив команду ss.
1 | ss -tunlp | grep 514 |
Настройка правил брандмауэра для rsyslog
Демон Rsyslog запущен на сервере, как и ожидалось. Если вы используете брандмауэр UFW, убедитесь, что разрешили порт 514, чтобы разрешить входящие сообщения журнала.
1 2 | ufw allow 514/tcp ufw allow 514/udp |
Затем перезагрузите брандмауэр, чтобы применить правило брандмауэра следующим образом.
1 | ufw reload |
Следующим шагом будет настройка клиентской системы Ubuntu на отправку файлов журнала на сервер rsyslog.
Настройка клиентской системы rsyslog
Последний шаг - это настройка клиентской системы для отправки файлов журнала на сервер rsyslog. Войдите в систему клиента и еще раз убедитесь, что демон rsyslog установлен и запущен.
Затем отредактируйте файл конфигурации rsyslog.
1 | nano /etc/rsyslog.conf |
Перейдите в самый конец файла и добавьте эти строки.
1 2 3 4 5 | #Включить отправку системных журналов по UDP на сервер rsyslog *.* @rsyslog-ip-address:514 #Включить отправку системных журналов по TCP на сервер rsyslog *.* @@rsyslog-ip-address:514 |
Эти строки инструктируют клиента отправлять файлы журналов по протоколам UDP и TCP на сервер rsyslog. Обратите внимание, что в первой строке один символ @ означает UDP, а во второй строке два символа @@ означают протокол TCP.
Если удаленный сервер будет простаивать, а вы хотите сохранить свои журналы, вы можете установить буфер дисковой очереди, добавив строки, показанные на рисунке.
1 2 3 4 5 6 | ##Установить дисковую очередь, когда сервер rsyslog будет отключен: $ActionQueueFileName queue $ActionQueueMaxDiskSpace 1g $ActionQueueSaveOnShutdown on $ActionQueueType LinkedList $ActionResumeRetryCount -1 |
Сохраните и выйдите из файла. Теперь перезапустите службу rsyslog, чтобы изменения вступили в силу.
1 | systemctl restart rsyslog |
На этом этапе клиентская система должна отправлять файлы журнала на сервер rsyslog.
Просмотр файлов журнала клиента
Все файлы журналов (включая серверы) хранятся в каталоге /var/log/. Чтобы просмотреть журналы клиента, выполните следующую команду:
1 | ls /var/log/ |
Файлы журнала клиента будут сохранены в каталоге, соответствующем имени хоста клиентской системы.