Syslog - это способ консолидации журналов от различных систем на удаленном сервере Syslog. Сервер Syslog состоит из трех ключевых компонентов. Первый - это приемник, использующий UDP-порт 514 для сбора данных Syslog. Далее следует база данных, в которой хранятся сгенерированные данные Syslog, и, наконец, программное обеспечение управления и фильтрации, позволяющее фильтровать данные Syslog для быстрого устранения неполадок.
Для системного администратора понимание того, как работает Syslog и как настроить клиентские машины на передачу данных Syslog на удаленный сервер, будет очень полезным. В этом руководстве рассматривается Syslog в Linux и предлагаются шаги по консолидации журналов на удаленной машине.
Понимание Syslog
Syslog - это протокол, который взаимодействует через порт 514 по протоколу UDP и позволяет хостам передавать журналы на серверы Syslog по IP-сетям. Работа Syslog-сервера заключается в отслеживании и реагировании на получаемые им уведомления Syslog.
Благодаря этому администратор может централизованно контролировать журналы различных клиентов, что позволяет быстро отследить ошибку на машине клиента и на основании полученного сообщения устранить ее.
Клиенты Syslog генерируют сообщения Syslog, которые отправляются на сервер Syslog. Сообщение состоит из трех ключевых частей.
Приоритет - он отражает степень серьезности сообщения и его функциональность. Значение приоритета определяет приоритет данного журнала. С его помощью можно фильтровать журналы на основе значения приоритета.
Заголовок - представляет собой временную метку журнала и имя хоста/клиентской машины, отправившей сообщение журнала.
Сообщение - представляет собой фактическое сообщение журнала, которое администратор будет просматривать при устранении ошибки. Сообщение содержит такие сведения, как IP-адрес хоста, степень серьезности и сообщение о событии.
Приведем пример сообщения Syslog и определим его различные части.
1 | <34> 2 2022-10-3T10:30:35.004Z linux su - ID12 - BOM'su root' failed for linuxon /dev/pts/4 |
В приведенном выше примере мы начнем слева. 34 - это значение приоритета сообщения. 2 - номер версии сообщения журнала. Далее следует временная метка ISO, а затем имя хоста. Далее указывается конкретное приложение, вызвавшее ошибку, и его PID. И наконец, идентификатор сообщения события и сообщение журнала.
Работа с Syslog
Каждая система генерирует журналы для событий, вызывающих ошибку, например, случайное закрытие приложения. Журналы для локальной машины хранятся в каталоге /var/log, и вы можете просмотреть его содержимое, чтобы увидеть различные файлы и каталоги журналов системы с помощью команды ls.
На приведенном выше рисунке вы можете заметить, что у нас есть файл журнала под названием syslog. Он содержит журналы для вашей системы, в данном случае для систем Ubuntu/Debian. Для RedHat вместо syslog могут быть сообщения.
Чтобы просмотреть журналы для системы, откройте файл журнала в реальном времени с помощью команды tail. Для Debian/Ubuntu используйте следующую команду.
1 2 3 | sudo tail -f /var/log/syslog #или sudo tail -f /var/log/messages |
Для клиентских машин правила, куда отправлять Syslog, содержатся в конфигурационном файле rsyslog. Чтобы настроить машину на передачу файлов журнала на определенный сервер Syslog, необходимо отредактировать этот конфигурационный файл.
Работа с конфигурационным файлом rsyslog
Этот конфигурационный файл можно просмотреть в любом редакторе. Откроем его с помощью редактора nano.
1 | sudo nano /etc/rsyslog.conf |
Ниже показано, как выглядит конфигурационный файл.
Все правила, заданные для Syslog, будут содержаться в этом файле, включая Syslog-сервер и его IP-адрес. Давайте создадим Syslog-сервер на удаленной машине и будем передавать журналы с нашей клиентской машины.
Настройка сервера Syslog
В данном примере в качестве сервера мы используем Ubuntu 22.04.
Сначала убедитесь, что у вас установлен rsyslog, проверив его версию. Если он не установлен, установите его с помощью apt.
1 | rsyslogd -v |
Далее необходимо открыть конфигурационный файл rsyslog с помощью редактора nano.
1 | sudo nano /etc/rsyslog.conf |
Найдите модуль и вход для TCP. Затем откомментируйте их, убрав символ # и добавив строку ниже, чтобы ваш конфигурационный файл выглядел так, как показано на рисунке ниже.
1 2 | $template FILENAME,"/var/log/%HOSTNAME%/syslog.log" *.* ?FILENAME |
После редактирования конфигурационного файла перезапустите rsyslog
1 | sudo systemctl restart rsyslog.service |
Последним шагом является проверка того, что rsyslog активен и прослушивает UDP-порт 514. Для проверки используйте следующую команду.
1 | sudo netstat -pnlt |
Настройка клиента
Откройте клиентскую машину и убедитесь, что на ней установлен rsyslog, проверив его версию.
Затем откройте файл конфигурации rsyslog.
1 | sudo nano /etc/rsyslog.conf |
Открыв его, добавьте IP-адрес вашего сервера в следующем формате.
1 | *.* @@<ваш сервер-ip>:514 |
Перезапустите и включите rsyslog
1 2 | sudo systemctl restart rsyslog sudo systemctl enable rsyslog |
Откройте удаленный клиент и просмотрите Syslog для него в режиме реального времени. На изображении ниже мы видим сообщение, записанное в журнал клиентом, подтверждающее, что наш удаленный сервер Syslog работает.
Заключение
В данном руководстве представлен практический учебник по началу работы с Syslog. Мы рассмотрели, как читать сообщения Syslog и настраивать клиент-серверную архитектуру для Syslog. На этом все.