Поиск по сайту:

Как настроить клиент Rsyslog для отправки журналов на сервер Rsyslog в CentOS 7


Управление журналами является одним из наиболее важных компонентов сетевой инфраструктуры. Сообщения журналов постоянно генерируются многочисленными системными программами, такими как утилиты, приложения, демоны, службы, связанные с сетью, ядром, физическими устройствами и так далее.

Файлы журналов оказываются полезными при устранении неполадок в системе Linux, мониторинге системы и проверке уровня безопасности и проблем системы.

Rsyslog — это программа ведения журналов с открытым исходным кодом, которая является наиболее популярным механизмом ведения журналов в огромном количестве дистрибутивов Linux. Это также служба ведения журналов по умолчанию в CentOS 7 или RHEL 7.

Демон Rsyslog в CentOS можно настроить для работы в качестве сервера для сбора сообщений журнала с нескольких сетевых устройств. Эти устройства действуют как клиенты и настроены на передачу своих журналов на сервер rsyslog.

Однако службу Rsyslog можно также настроить и запустить в клиентском режиме. Эта настройка предписывает демону rsyslog пересылать сообщения журнала на удаленный сервер Rsyslog с использованием транспортных протоколов TCP или UDP. Службу Rsyslog также можно настроить для одновременной работы в качестве клиента и сервера.

В этом руководстве мы опишем, как настроить демон CentOS/RHEL 7 Rsyslog для отправки сообщений журнала на удаленный сервер Rsyslog. Эта настройка гарантирует, что дисковое пространство вашего компьютера будет сохранено для хранения других данных.

Местом, куда по умолчанию записываются почти все файлы журналов в CentOS, является системный путь /var. Также желательно всегда создавать отдельный раздел для каталога /var, который можно динамически увеличивать, чтобы не исчерпать раздел /(root).

Клиент Rsyslog всегда отправляет сообщения журнала в виде обычного текста, если не указано иное. Вам не следует настраивать клиент Rsyslog для передачи сообщений журнала через Интернет или сети, которые не находятся под вашим полным контролем.

Требования

  1. Процедура установки CentOS 7.3
  2. RHEL 7.3 Процедура установки
  3. Настройка сервера Rsyslog в CentOS/RHEL 7

Шаг 1. Проверьте установку Rsyslog

1. По умолчанию демон Rsyslog уже установлен и работает в системе CentOS 7. Чтобы проверить, присутствует ли в системе служба rsyslog, введите следующие команды.

rpm -q | grep rsyslog
rsyslogd -v

2. Если пакет Rsyslog не установлен в CentOS, выполните приведенную ниже команду, чтобы установить службу.

yum install rsyslog

Шаг 2. Настройте службу Rsyslog в качестве клиента

3. Чтобы заставить демон Rsyslog, установленный в системе CentOS 7, действовать в качестве клиента журнала и направлять все локально сгенерированные сообщения журнала на удаленный сервер Rsyslog, измените файл конфигурации rsyslog следующим образом:

Сначала откройте основной файл конфигурации для редактирования.

vi /etc/rsyslog.conf

Затем добавьте строку ниже в конец файла, как показано в приведенном ниже отрывке.

*. *  @192.168.10.254:514

В приведенной выше строке обязательно замените IP-адрес полного доменного имени удаленного сервера rsyslog соответствующим образом. Приведенная выше строка дает указание демону Rsyslog отправлять все сообщения журнала, независимо от средства или серьезности, на хост с IP 192.168.10.254 через порт 514/UDP.

4. Если удаленный сервер журналов настроен на прослушивание только TCP-соединений или вы хотите использовать надежный протокол транспортной сети, например TCP, добавьте перед ним еще один символ @. удаленного хоста, как показано в примере ниже:

*. *  @@logs.domain.lan:514

В Linux rsyslog также разрешено использование некоторых специальных символов, таких как = или !, которые могут быть добавлены в качестве префикса к уровням приоритета, чтобы указать «только этот приоритет». » для знака равенства и «не этот приоритет или выше этого».

Некоторые примеры квалификаторов уровня приоритета Rsyslog в CentOS 7:

  • kern.info=журналы ядра с приоритетом информации и выше.
  • kern.=info=только сообщения ядра с приоритетом информации.
  • kern.info;kern.!err=только сообщения ядра с приоритетами информации, уведомлений и предупреждений.
  • kern.debug;kern.!=warning=все приоритеты ядра, кроме предупреждения.
  • kern.*=все сообщения о приоритетах ядра.
  • kern.none=не регистрировать никакие связанные сообщения возможностей ядра, независимо от приоритета.

Например, если вы хотите отправлять на удаленный сервер журналов только сообщения определенного объекта, например все связанные почтовые сообщения, независимо от уровня приоритета, добавьте следующую строку в файл конфигурации rsyslog:

mail.* @192.168.10.254:514 

5. Наконец, чтобы применить новую конфигурацию, необходимо перезапустить службу Rsyslog, чтобы демон мог уловить изменения, выполнив следующую команду:

systemctl restart rsyslog.service

6. Если по каким-либо причинам демон Rsyslog не включен во время загрузки, введите следующую команду, чтобы включить службу для всей системы:

systemctl enable rsyslog.service

Шаг 3. Отправьте журналы Apache и Nginx на удаленный сервер журналов.

7. HTTP-сервер Apache можно настроить для отправки сообщений журналов на удаленный сервер системного журнала, добавив следующую строку в его основной файл конфигурации, как показано в примере ниже.

vi /etc/httpd/conf/httpd.conf

В основной файл конфигурации Apache добавьте следующую строку.

CustomLog "| /bin/sh -c '/usr/bin/tee -a /var/log/httpd/httpd-access.log | /usr/bin/logger -thttpd -plocal1.notice'" combined

Эта строка заставит демона HTTP записывать сообщения журнала внутри файла журнала файловой системы, а также обрабатывать сообщения далее через канал для утилиты logger, которая отправит их на удаленный сервер системного журнала, помечая их как поступающие с local1. средство.

8. Если вы хотите также направлять сообщения журнала ошибок Apache на удаленный сервер системного журнала, добавьте новое правило, представленное в приведенном выше примере, но обязательно замените имя файла журнала httpd и уровень серьезности файла журнала, чтобы соответствовать приоритету ошибки, как показано в следующем примере:

ErrorLog "|/bin/sh -c '/usr/bin/tee -a /var/log/httpd/httpd-error.log | /usr/bin/logger -thttpd -plocal1.err'"

9. После добавления вышеуказанных строк вам необходимо перезапустить демон Apache, чтобы применить изменения, выполнив следующую команду:

systemctl restart httpd.service                 

10. Начиная с версии 1.7.1 веб-сервер Nginx имеет встроенные возможности для прямой регистрации своих сообщений на удаленном сервере системного журнала путем добавления следующих строк: код в файл конфигурации nginx.

error_log syslog:server=192.168.1.10:514,facility=local7,tag=nginx,severity=error;
access_log syslog:server=192.168.10.254:514,facility=local7,tag=nginx,severity=info main;

Для сервера IPv6 используйте следующий синтаксический формат для включения адреса IPv6.

access_log syslog:server=[7101:dc7::9]:514,facility=local7,tag=nginx,severity=info;

11. На удаленном сервере Rsyslog вам необходимо внести следующее изменение в файл конфигурации rsyslog, чтобы получать журналы, отправляемые веб-сервером Apache.

local1.* @Apache_IP_address:514

Вот и все! Вы успешно настроили демон Rsyslog для работы в режиме клиента, а также дали указание серверу Apache HTTP или Nginx пересылать свои сообщения журнала. на удаленный сервер системного журнала.

В случае сбоя вашей системы вы сможете исследовать проблему, проверив содержимое файлов журналов, которые хранятся на удаленном сервере системных журналов.