Управление журналами · 11 min read · Dec 12, 2025

Как настроить rsyslog для централизованного управления журналами

Этот учебник объяснит, как настроить rsyslog в качестве сервера централизованного управления журналами. Централизованное управление журналами означает сбор всех видов журналов с нескольких физических или виртуализированных серверов на одном сервере журналов для мониторинга состояния и безопасности служб сервера. Мы используем rsyslog в этом учебнике, потому что он предлагает высокую производительность, отличную безопасность и модульный дизайн. Он также способен хранить журналы в различных базах данных, таких как MySQL, Oracle, Hadoop и других для лучшей консолидации.

1. Предварительная заметка

Для этого учебника я использую Oracle Linux 6.4 в 32-битной версии. Обратите внимание, что хотя конфигурация выполняется на Oracle Linux, те же шаги будут работать на CentOS и Red Hat OS Linux. В этом учебнике мы будем использовать 2 сервера. Первый будет действовать как сервер rsyslog, а другой будет работать как рабочая станция / клиентский сервер для клиента rsyslog. К концу этого учебника мы увидим, что как только пользователь войдет в клиентский сервер, сервер rsyslog автоматически зафиксирует его действия.

2. Установка Rsyslog

Для этапа установки нам нужно только установить пакеты rsyslog и его зависимости. Сначала давайте подтвердим нашу версию операционной системы.

[root@RSYS01 ~]# cat /etc/issue  
Oracle Linux Server release 6.4  
Kernel \r on an \m
[root@RSYS01 ~]# arch  
i686
[root@RSYS01 ~]# uname -a  
Linux RSYS01 2.6.32-358.el6.i686 #1 SMP Fri Feb 22 13:37:29 PST 2013 i686 i686 i386 GNU/Linux

Далее я настрою новый репозиторий для установки пакетов rsyslog через утилиту yum.


[root@RSYS01 ~]# cd /etc/yum.repos.d/  
[root@RSYS01 yum.repos.d]# vi rsyslog.repo  
[rsyslog-v7-devel]  
name=Adiscon Rsyslog v7-devel для CentOS-$releasever-$basearch  
baseurl=http://rpms.adiscon.com/v7-devel/epel-$releasever/$basearch  
enabled=0  
gpgcheck=0  
protect=1
[rsyslog-v7-stable]  
name=Adiscon Rsyslog v7-stable для CentOS-$releasever-$basearch  
baseurl=http://rpms.adiscon.com/v7-stable/epel-$releasever/$basearch  
enabled=1  
gpgcheck=0  
protect=1
[root@RSYS01 yum.repos.d]# yum list rsyslog  
Загруженные плагины: refresh-packagekit, security  
rsyslog-v7-stable | 2.5 kB 00:00  
rsyslog-v7-stable/primary_db | 188 kB 00:01  
Доступные пакеты  
rsyslog.i686 7.6.7-1.el6 rsyslog-v7-stable

Готово, теперь давайте начнем установку новой версии rsyslog. Шаги показаны ниже:


[root@RSYS01 yum.repos.d]# yum install rsyslog -y  
Загруженные плагины: refresh-packagekit, security  
Настройка процесса установки  
Разрешение зависимостей  
--> Выполнение проверки транзакции  
---> Пакет rsyslog.i686 0:7.6.7-1.el6 будет установлен  
--> Обработка зависимости: liblogging-stdlog.so.0 для пакета: rsyslog-7.6.7-1.el6.i686  
--> Обработка зависимости: libjson-c.so.2 для пакета: rsyslog-7.6.7-1.el6.i686  
--> Обработка зависимости: libgthttp.so.0 для пакета: rsyslog-7.6.7-1.el6.i686  
--> Обработка зависимости: libgtbase.so.0 для пакета: rsyslog-7.6.7-1.el6.i686  
--> Обработка зависимости: libgt для пакета: rsyslog-7.6.7-1.el6.i686  
--> Обработка зависимости: libestr.so.0 для пакета: rsyslog-7.6.7-1.el6.i686  
--> Выполнение проверки транзакции  
---> Пакет json-c.i686 0:0.11-3.el6 будет установлен  
---> Пакет libestr.i686 0:0.1.9-1.el6 будет установлен  
---> Пакет libgt.i686 0:0.3.11-1.el6 будет установлен  
---> Пакет liblogging.i686 0:1.0.4-1.el6 будет установлен  
--> Завершено разрешение зависимостей  
Зависимости разрешены  
===============================================================================================================  
Пакет Архитектура Версия Репозиторий Размер  
===============================================================================================================  
Установка:  
rsyslog i686 7.6.7-1.el6 rsyslog-v7-stable 920 k  
Установка для зависимостей:  
json-c i686 0.11-3.el6 rsyslog-v7-stable 46 k  
libestr i686 0.1.9-1.el6 rsyslog-v7-stable 9.0 k  
libgt i686 0.3.11-1.el6 rsyslog-v7-stable 55 k  
liblogging i686 1.0.4-1.el6 rsyslog-v7-stable 23 k   
Резюме транзакции  
===============================================================================================================  
Установить 5 пакетов  
Общий размер загрузки: 1.0 M  
Установленный размер: 3.2 M  
Загрузка пакетов:  
(1/5): json-c-0.11-3.el6.i686.rpm | 46 kB 00:00  
(2/5): libestr-0.1.9-1.el6.i686.rpm | 9.0 kB 00:00  
(3/5): libgt-0.3.11-1.el6.i686.rpm | 55 kB 00:00  
(4/5): liblogging-1.0.4-1.el6.i686.rpm | 23 kB 00:00  
(5/5): rsyslog-7.6.7-1.el6.i686.rpm | 920 kB 00:03  
---------------------------------------------------------------------------------------------------------------  
Всего 114 kB/s | 1.0 MB 00:09  
Выполнение rpm_check_debug  
Выполнение теста транзакции  
Тест транзакции прошел успешно  
Выполнение транзакции  
Установка : libgt-0.3.11-1.el6.i686 1/5  
Установка : liblogging-1.0.4-1.el6.i686 2/5  
Установка : libestr-0.1.9-1.el6.i686 3/5  
Установка : json-c-0.11-3.el6.i686 4/5  
Установка : rsyslog-7.6.7-1.el6.i686 5/5  
Проверка : json-c-0.11-3.el6.i686 1/5  
Проверка : libestr-0.1.9-1.el6.i686 2/5  
Проверка : liblogging-1.0.4-1.el6.i686 3/5  
Проверка : libgt-0.3.11-1.el6.i686 4/5  
Проверка : rsyslog-7.6.7-1.el6.i686 5/5   
   
Установлено:  
rsyslog.i686 0:7.6.7-1.el6   
   
Установлена зависимость:  
json-c.i686 0:0.11-3.el6 libestr.i686 0:0.1.9-1.el6 libgt.i686 0:0.3.11-1.el6 liblogging.i686 0:1.0.4-1.el6   
   
Готово!
[root@RSYS01 yum.repos.d]# rsyslogd -v  
rsyslogd 7.6.7, скомпилирован с:  
FEATURE_REGEXP: Да  
Поддержка GSSAPI Kerberos 5: Да  
FEATURE_DEBUG (отладочная сборка, медленный код): Нет  
Поддерживаются 32-битные атомарные операции: Да  
Поддерживаются 64-битные атомарные операции: Да  
Временная инструментализация (медленный код): Нет  
Поддержка uuid: Да  
Количество бит в целых числах RainerScript: 64   
   
Смотрите http://www.rsyslog.com для получения дополнительной информации.
[root@RSYS01 ~]# rpm -qa|grep rsyslog  
rsyslog-7.6.7-1.el6.i686

Далее давайте перейдем к этапу установки. Для этого учебника мы пропустим уровень безопасности, чтобы упростить задачу. Мы отключим SELINUX, чтобы убедиться, что во время работы не возникнет проблем, связанных с безопасностью. Имейте в виду, что вы не должны отключать SELinux и брандмауэр на рабочем сервере. Ниже приведены шаги:

Сначала проверьте, каков текущий статус нашей политики SELINUX.

[root@RSYS01 ~]# getenforce  
Принудительное выполнение

Чтобы отключить его навсегда, выполните следующий шаг:

[root@RSYS01 ~]# cd /etc/sysconfig/  
[root@RSYS01 ~]# vi selinux   
   
# Этот файл управляет состоянием SELinux в системе.  
# SELINUX= может принимать одно из этих трех значений:  
# enforcing - Политика безопасности SELinux применяется.  
# permissive - SELinux выводит предупреждения вместо применения.  
# disabled - Политика SELinux не загружается.  
SELINUX=disabled  
# SELINUXTYPE= может принимать одно из этих двух значений:  
# targeted - Защищены целевые процессы,  
# mls - Защита многоуровневой безопасности.  
SELINUXTYPE=targeted

После этого давайте убедимся, что мы отключили брандмауэр, чтобы избежать блокировки между соединением сервера и клиента.

[root@RSYS01 ~]# iptables -nL  
Цепочка INPUT (политика ACCEPT)  
target prot opt source destination   
   
Цепочка FORWARD (политика ACCEPT)  
target prot opt source destination   
   
Цепочка OUTPUT (политика ACCEPT)  
target prot opt source destination
[root@RSYS01 ~]# /etc/init.d/iptables stop  
iptables: Очистка правил брандмауэра: [ OK ]  
iptables: Установка цепочек в политику ACCEPT: filter [ OK ]  
iptables: Выгрузка модулей: [ OK ]
[root@RSYS01 ~]# /etc/init.d/iptables status  
Таблица: filter  
Цепочка INPUT (политика ACCEPT)  
num target prot opt source destination   
   
Цепочка FORWARD (политика ACCEPT)  
num target prot opt source destination   
   
Цепочка OUTPUT (политика ACCEPT)  
num target prot opt source destination

Готово, теперь, когда этап установки завершен. Давайте перейдем к этапу конфигурации.

3. Конфигурация Rsyslog

Все зависимости пакетов уже установлены, давайте сосредоточимся на конфигурации rsyslog. Давайте откроем файл конфигурации и внесем изменения, как показано ниже:

[root@RSYS01 ~]# vi /etc/rsyslog.conf   
   
module(load="imudp") # нужно сделать только один раз  
input(type="imudp" port="514")   
   
$template Auditlog, "/var/log/rsyslog_client/%HOSTNAME%/%PROGRAMNAME%.log"  
$template TmplMsg, "/var/log/rsyslog_client/%HOSTNAME%/%PROGRAMNAME%.log"  
authpriv.* ?Auditlog

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

  • module(load=”imudp”) # нужно сделать только один раз ==> Мы предоставим возможность получать сообщения rsyslog между сервером и клиентом через протокол UDP
  • input(type=”imudp” port=”514”) ==> Мы будем использовать порт 514 для служб rsyslog
  • $template Auditlog, “/var/log/rsyslog_client/%HOSTNAME%/%PROGRAMNAME%.log” ==> Для каждого клиента, подключенного к серверу rsyslog, система автоматически создаст папку с именем хоста клиента и соответствующее имя файла служб
  • $template TmplMsg, “/var/log/rsyslog_client/%HOSTNAME%/%PROGRAMNAME%.log” ==> Для каждого клиента, подключенного к серверу rsyslog, система автоматически создаст папку с именем хоста клиента и соответствующее имя файла служб

Как только конфигурация завершена, давайте запустим службу rsyslog.

[root@RSYS01 yum.repos.d]# /etc/init.d/rsyslog restart  
Остановка системного журнала: [FAILED]  
Запуск системного журнала: [ OK ]

Используйте netstat, чтобы убедиться, что службы rsyslog работают:

[root@RSYS01 yum.repos.d]# netstat -uanp|grep rsyslog  
udp 0 0 0.0.0.0:514 0.0.0.0:* 2430/rsyslogd  
udp 0 0 :::514 :::* 2430/rsyslogd

Выше вы можете увидеть, что наша служба rsyslog работает с назначенными портами, которые мы сделали. По умолчанию rsyslog также проверяет доступ к своему собственному серверу, так как он рассматривает сервер rsyslog как клиента. Чтобы убедиться, что это работает, мы можем заглянуть в папку /var/log. Давайте проверим, существует ли папка с именем RSYS01 (это имя сервера).

[root@RSYS01 log]# cd /var/log/  
[root@RSYS01 log]# ls -l|grep rsyslog  
drwx------ 3 root root 4096 Oct 24 18:21 rsyslog_client
[root@RSYS01 log]# cd rsyslog_client  
[root@RSYS01 rsyslog_client]# ls  
RSYS01  
[root@RSYS01 rsyslog_client]# cd RSYS01/  
[root@RSYS01 RSYS01]# ls  
rsyslogd.log

Отлично, кажется, все работает как часы! Теперь давайте перейдем к этапу тестирования, чтобы подтвердить, что все конфигурации выполнены как ожидалось.

4. Этап тестирования

Поскольку сервер, на котором работает служба rsyslog, также работает как клиент, мы можем увидеть на самом сервере, если мониторинг локальных входов отслеживается. Чтобы убедиться, что это так, давайте войдем в сервер rsyslog с другой сессией, используя службу SSH. Для этого шага мы предположим, что сервер уже настроен для работы без пароля. Ниже приведены шаги:

[root@RSYS01 RSYS01]# ssh root@RSYS01  
Последний вход: Сб Окт 22 15:45:48 2016 с 172.20.181.70
[root@RSYS01 ~]# who  
root pts/0 2016-10-22 00:21 (172.20.181.11)  
root pts/1 2016-10-24 18:22 (127.0.0.1)
[root@RSYS01 ~]# exit  
выход  
Соединение с RSYS01 закрыто.

Готово, так просто. Мы только что вошли в сервер rsyslog, а затем, как только новая сессия была создана, мы просто снова вошли, чтобы убедиться, что служба rsyslog действительно зафиксировала сессию. Теперь давайте проверим, была ли сессия зафиксирована или нет. Ниже приведены шаги:

[root@RSYS01 ~]# cd var/log/rsyslog_client/RSYS01  
[root@RSYS01 RSYS01]# ls  
rsyslogd.log sshd.log  
[root@RSYS01 RSYS01]# tail -f sshd.log  
Oct 24 18:22:46 RSYS01 sshd[2536]: Принят пароль для root с 192.168.43.101 порт 52862 ssh2  
Oct 24 18:22:46 RSYS01 sshd[2536]: pam_unix(sshd:session): сессия открыта для пользователя root (uid=0)  
Oct 24 18:22:50 RSYS01 sshd[2536]: Получено отключение от 192.168.43.101: 11: отключено пользователем  
Oct 24 18:22:50 RSYS01 sshd[2536]: pam_unix(sshd:session): сессия закрыта для пользователя root  
^C

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

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

[root@CLIENT01 ~]# cd /etc/yum.repos.d/  
[root@CLIENT01 yum.repos.d]# yum list rsyslog  
Загруженные плагины: refresh-packagekit, security  
rsyslog-v7-stable | 2.5 kB 00:00  
rsyslog-v7-stable/primary_db | 188 kB 00:01  
Доступные пакеты  
rsyslog.i686 7.6.7-1.el6 rsyslog-v7-stable

[root@RSYS01 yum.repos.d]# yum install rsyslog -y  
Загруженные плагины: refresh-packagekit, security  
Настройка процесса установки  
Разрешение зависимостей  
--> Выполнение проверки транзакции  
---> Пакет rsyslog.i686 0:7.6.7-1.el6 будет установлен  
--> Обработка зависимости: liblogging-stdlog.so.0 для пакета: rsyslog-7.6.7-1.el6.i686  
--> Обработка зависимости: libjson-c.so.2 для пакета: rsyslog-7.6.7-1.el6.i686  
--> Обработка зависимости: libgthttp.so.0 для пакета: rsyslog-7.6.7-1.el6.i686  
--> Обработка зависимости: libgtbase.so.0 для пакета: rsyslog-7.6.7-1.el6.i686  
--> Обработка зависимости: libgt для пакета: rsyslog-7.6.7-1.el6.i686  
--> Обработка зависимости: libestr.so.0 для пакета: rsyslog-7.6.7-1.el6.i686  
--> Выполнение проверки транзакции  
---> Пакет json-c.i686 0:0.11-3.el6 будет установлен  
---> Пакет libestr.i686 0:0.1.9-1.el6 будет установлен  
---> Пакет libgt.i686 0:0.3.11-1.el6 будет установлен  
---> Пакет liblogging.i686 0:1.0.4-1.el6 будет установлен  
--> Завершено разрешение зависимостей  
   
Зависимости разрешены  
   
===============================================================================================================  
Пакет Архитектура Версия Репозиторий Размер  
===============================================================================================================  
Установка:  
rsyslog i686 7.6.7-1.el6 rsyslog-v7-stable 920 k  
Установка для зависимостей:  
json-c i686 0.11-3.el6 rsyslog-v7-stable 46 k  
libestr i686 0.1.9-1.el6 rsyslog-v7-stable 9.0 k  
libgt i686 0.3.11-1.el6 rsyslog-v7-stable 55 k  
liblogging i686 1.0.4-1.el6 rsyslog-v7-stable 23 k  
   
Резюме транзакции  
===============================================================================================================  
Установить 5 пакетов  
   
Общий размер загрузки: 1.0 M  
Установленный размер: 3.2 M  
Загрузка пакетов:  
(1/5): json-c-0.11-3.el6.i686.rpm | 46 kB 00:00  
(2/5): libestr-0.1.9-1.el6.i686.rpm | 9.0 kB 00:00  
(3/5): libgt-0.3.11-1.el6.i686.rpm | 55 kB 00:00  
(4/5): liblogging-1.0.4-1.el6.i686.rpm | 23 kB 00:00  
(5/5): rsyslog-7.6.7-1.el6.i686.rpm | 920 kB 00:03  
---------------------------------------------------------------------------------------------------------------  
Всего 114 kB/s | 1.0 MB 00:09  
Выполнение rpm_check_debug  
Выполнение теста транзакции  
Тест транзакции прошел успешно  
Выполнение транзакции  
Установка : libgt-0.3.11-1.el6.i686 1/5  
Установка : liblogging-1.0.4-1.el6.i686 2/5  
Установка : libestr-0.1.9-1.el6.i686 3/5  
Установка : json-c-0.11-3.el6.i686 4/5  
Установка : rsyslog-7.6.7-1.el6.i686 5/5  
Проверка : json-c-0.11-3.el6.i686 1/5  
Проверка : libestr-0.1.9-1.el6.i686 2/5  
Проверка : liblogging-1.0.4-1.el6.i686 3/5  
Проверка : libgt-0.3.11-1.el6.i686 4/5  
Проверка : rsyslog-7.6.7-1.el6.i686 5/5  
   
Установлено:  
rsyslog.i686 0:7.6.7-1.el6  
   
Установлена зависимость:  
json-c.i686 0:0.11-3.el6 libestr.i686 0:0.1.9-1.el6 libgt.i686 0:0.3.11-1.el6 liblogging.i686 0:1.0.4-1.el6  
   
Готово!

Готово, теперь мы установили пакет rsyslog на нашей клиентской рабочей станции. Теперь давайте внесем изменения в файл конфигурации rsyslog. Для конфигурации клиента вам просто нужно изменить конфигурацию, как показано ниже:

[root@CLIENT01 ~]# vi /etc/rsyslog.conf  
   
*.* @192.168.43.101:514

Это все, обратите внимание, что мы включили IP 192.168.43.101 с портом 514 в файл конфигурации. Этот IP - это IP для сервера rsyslog. Теперь, когда все сделано, давайте перезапустим службу rsyslog на клиентской рабочей станции, чтобы загрузить изменения. Ниже приведены шаги:

[root@CLIENT01 ~]# /etc/init.d/rsyslog restart  
Остановка системного журнала: [FAILED]  
Запуск системного журнала: [ OK ]

Теперь давайте вернемся к нашему серверу rsyslog и посмотрим, была ли создана папка для имени хоста клиента rsyslog в каталоге журналов rsyslog. Ниже приведены шаги:

[root@RSYS01 ~]# cd var/log/rsyslog_client/  
[root@RSYS01 rsyslog_client]# ls  
RSYS01 CLIENT01

Отлично, обратите внимание, что папка с именем хоста клиента rsyslog была создана автоматически. Это подтверждает, что наша конфигурация правильная, и клиент rsyslog может установить UDP-соединение с сервером rsyslog.

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

::CLIENT01::  
вход как: shahril  
Пароль [email protected]':  
Последний вход: Вс Окт 23 00:21:40 2016 с 172.20.181.11
[shahril@CLIENT01 ~]$ who  
shahril pts/0 2016-10-24 17:01 (192.168.43.80)
[shahril@CLIENT01 ~]$ exit

Теперь давайте проверим каталог журналов на сервере rsyslog, чтобы увидеть, удалось ли нам зафиксировать активность, созданную с клиента rsyslog или нет.

[root@RSYS01 ~]# cd var/log/rsyslog_client/  
[root@RSYS01 rsyslog_client]# cd CLIENT01/  
[root@RSYS01 CLIENT01]# ls  
rsyslogd.log sshd.log  
[root@RSYS01 CLIENT01]# tail -10 sshd.log  
Oct 24 17:01:47 CLIENT01 sshd[2102]: Принят пароль для shahril с 192.168.43.80 порт 17002 ssh2  
Oct 24 17:01:47 CLIENT01 sshd[2102]: pam_unix(sshd:session): сессия открыта для пользователя shahril (uid=0)

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

::CLIENT01::  
вход как: root  
Пароль [email protected]':  
Последний вход: Сб Окт 22 10:21:40 2016 с 172.20.181.11
[root@CLIENT01 ~]# yum install firefox -y  
Загруженные плагины: refresh-packagekit, security  
Репозиторий 'OEL64' отсутствует имя в конфигурации, используется id  
Настройка процесса установки  
Разрешение зависимостей  
--> Выполнение проверки транзакции  
---> Пакет firefox.i686 0:10.0.12-1.0.1.el6_3 будет установлен  
--> Завершено разрешение зависимостей  
   
Зависимости разрешены  
   
================================================================================  
Пакет Архитектура Версия Репозиторий Размер  
================================================================================  
Установка:  
firefox i686 10.0.12-1.0.1.el6_3 OEL64 20 M  
   
Резюме транзакции  
================================================================================  
Установить 1 пакет  
   
Общий размер загрузки: 20 M  
Установленный размер: 23 M  
Загрузка пакетов:  
Выполнение rpm_check_debug  
Выполнение теста транзакции  
Тест транзакции прошел успешно  
Выполнение транзакции  
Установка : firefox-10.0.12-1.0.1.el6_3.i686 1/1  
Проверка : firefox-10.0.12-1.0.1.el6_3.i686 1/1  
   
Установлено:  
firefox.i686 0:10.0.12-1.el6_3  
   
Готово!

Выше показано, что мы успешно установили установщик браузера firefox на нашем рабочем месте клиента rsyslog. Теперь давайте вернемся к серверу rsyslog и проверим, смогла ли служба rsyslog зафиксировать процесс установки стороннего пакета на рабочей станции. Ниже приведены шаги:

[root@RSYS01 ~]# cd var/log/rsyslog_client/  
[root@RSYS01 CLIENT01]# ls  
rsyslogd.log sshd.log yum.log  
[root@RSYS01 CLIENT01]# tail -20 yum.log  
Oct 25 17:13:17 CLIENT01 yum[2319]: Установлено: firefox-10.0.12-1.0.1.el6_3.i686

Отлично, служба rsyslog смогла зафиксировать информацию о процессе установки на клиентской рабочей станции.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.