Сегодня я хочу разобрать настройку Rsyslog для сбора различных логов с различного оборудования дабы анализировать работу и выявить интересные наблюдения с ним. Мне это нужно дабы собрать что-то чтобы видеть как работают телефонные станции Yealink SIP-T21P_E2 & Gigaset A540 IP. Плюс хотелось бы подключить несколько Miktorikов, но думаю об этом я сделаю отдельной заметкой дабы все нюансы собрать воедино, а не загромождать практическую заметку. Сейчас я буду производить установку и базовую настройку сервера и клиента и смотреть что-будет.

На заметку: Обязательно на всех узлах должно быть актуальное время и часовой пояс дабы анализ журналов не привел в ступор из-за расхождения часового пояса и времени:

ekzorchik@srv-us2004:~$ sudo rm -f /etc/localtime

ekzorchik@srv-us2004:~$ sudo ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime

Шаг №1: Проверяю версию установленного уже установщиком при развертывании системы Ubuntu 20.04 Server службы rsyslog:

ekzorchik@srv-us2004:~$ apt list -a rsyslog

Listing... Done

rsyslog/focal-updates,now 8.2001.0-1ubuntu1.1 amd64 [installed,automatic]

rsyslog/focal 8.2001.0-1ubuntu1 amd64

ekzorchik@srv-us2004:~$ dpkg -l | grep rsyslog

ii rsyslog 8.2001.0-1ubuntu1.1 amd64 reliable system and kernel logging daemon

ekzorchik@srv-us2004:~$

Шаг №2: Перевожу сервис с режим запуска вместе с системой если это не так:

ekzorchik@srv-us2004:~$ sudo systemctl enable --now rsyslog

Synchronizing state of rsyslog.service with SysV service script with /lib/systemd/systemd-sysv-install.

Executing: /lib/systemd/systemd-sysv-install enable rsyslog

ekzorchik@srv-us2004:~$

Шаг №3: Настройку сервиса произвожу через редактирование конфигурационного файла:

ekzorchik@srv-us2004:~$ sudo nano /etc/rsyslog.conf

#Предопределяю протокол и порт на который будет обращаться удаленные узлы дабы отсылать генерируемые логи работы

# provides UDP syslog reception

module(load="imudp")

input(type="imudp" port="514")

# provides TCP syslog reception

module(load="imtcp")

input(type="imtcp" port="50514")

Сохраняю внесенные изменения и перезапускаю сервис дабы изменения применились:

ekzorchik@srv-us2004:~$ sudo systemctl restart rsyslog

На заметку:

  • Для UDP отправки на клиентской стороне используется синтаксис @172.33.33.119:514
  • для TCP отправки на клиентской стороне используется синтаксис @@172.33.33.119:50514

Шаг №4: Проверяю, что порты открылись и ожидают:

ekzorchik@srv-us2004:~$ ss -tunelp | grep 514
udp UNCONN 0 0 0.0.0.0:514 0.0.0.0:* ino:30232 sk:b <->
udp UNCONN 0 0 [::]:514 [::]:* ino:30233 sk:c v6only:1 <->
tcp LISTEN 0 25 0.0.0.0:50514 0.0.0.0:* ino:30236 sk:d <->
tcp LISTEN 0 25 [::]:50514 [::]:* ino:30237 sk:e v6only:1 <->
ekzorchik@srv-us2004:~$

В выводе значится, что порт UDP не имеет состояния LISTEN, потому что он не имеет соединения и не имеет понятия «прослушивание», «установлено», «закрыто» или что-то в этом роде. Это нормально.

Шаг №5: Проверяю с другой системы могу отправить сообщения:

root@srv-proxmox2:~# nc -u 172.33.33.119 514

test

^C

root@srv-proxmox2:~#

ekzorchik@srv-us2004:~$ sudo tail -f /var/log/syslog

Jul 6 20:18:46 test

Шаг №6: Дабы не все могли пересылать логи, можно ограничить доступ к портам, либо на уровне брандмауэр (к примеру ufw, firewall-cmd), либо посредством директивы с синтаксисом вида:

$AllowedSender [UDP/TCP], ip[/bits], ip[/bits]

$AllowedSender UDP, 172.33.33.0/24, *.polygon.lan srv-zabbix.polygon.lan

$AllowedSender TCP, 172.33.33.0/24, *.polygon.lan srv-zabbix.polygon.lan

Шаг №7: Создадим шаблон для узлов на которых будет настройка по отправке логов на текущий сервер где поднята служба rsyslog:

синтаксис

$template TEMPLATE_NAME,"text %PROPERTY% more test", [OPTION]

$template proxmox2,"/var/log/remotelogs/%FROMHOST-IP%/%PROGRAMNAME%.log"

# Укажем сохранять сообщения от любого источника (*) с любым приоритетом (*) в файл, заданный шаблоном

*.* ?proxmox2

#& ~

ekzorchik@srv-us2004:~$ sudo mkdir /var/log/remotelogs

ekzorchik@srv-us2004:~$ sudo chown -R syslog:adm /var/log/remotelogs/

Шаг №8: Прежде чем сделать перезапуск сервиса нужно проверить конфигурационный файл:

ekzorchik@srv-us2004:~$ sudo rsyslogd -f /etc/rsyslog.conf -N1

rsyslogd: version 8.2001.0, config validation run (level 1), master config /etc/rsyslog.conf

rsyslogd: End of config validation run. Bye.

ekzorchik@srv-us2004:~$

ekzorchik@srv-us2004:~$ sudo systemctl restart rsyslog

Шаг №9: Разберем настройку на удаленное узле, что нужно пересылать логи на Rsyslog сервер:

ekzorchik@navy:~$ sudo nano /etc/rsyslog.conf

#через UDP

auth,authpriv.* @172.33.33.119:514

#либо через TCP

*.* @@172.33.33.119:50514

#либо через FQDN-имя

*.* @@srv-us2004.polygon.lan:50514

ekzorchik@navy:~$ sudo systemctl restart rsyslog.service

Шаг №10: К примеру на своем сервере где у меня развернут Proxmox 6.4.4 настрою, что логирование вести на Rsyslog Server:

root@srv-proxmox2:~# nano /etc/rsyslog.conf

*.* @172.33.33.119:50514

root@srv-proxmox2:~# rsyslogd -f /etc/rsyslog.conf -N1

rsyslogd: version 8.1901.0, config validation run (level 1), master config /etc/rsyslog.conf

rsyslogd: End of config validation run. Bye.

sudo rsyslogd -f /etc/rsyslog.conf -N1

root@srv-proxmox2:~# systemctl restart rsyslog.service

Шаг №11: Проверяю, что логи пересылаются на Rsyslog Server:

ekzorchik@srv-us2004:~$ tail -f /var/log/remotelogs/172.33.33.116/s

sshd.log systemd.log systemd-logind.log - пока три лога


ekzorchik@srv-us2004:~$ tail -f /var/log/remotelogs/172.33.33.116/sshd.log

Jul 7 20:53:32 srv-proxmox2 sshd[7737]: Received disconnect from 172.33.33.106 port 34622:11: disconnected by user

Jul 7 20:53:32 srv-proxmox2 sshd[7737]: Disconnected from user root 172.33.33.106 port 34622

Jul 7 20:53:32 srv-proxmox2 sshd[7737]: pam_unix(sshd:session): session closed for user root

Jul 7 20:53:43 srv-proxmox2 sshd[9667]: Accepted password for root from 172.33.33.106 port 34906 ssh2

Jul 7 20:53:43 srv-proxmox2 sshd[9667]: pam_unix(sshd:session): session opened for user root by (uid=0)

где 172.33.33.116 — это адрес srv-proxmox2

Логи пересылаются и для каждого хоста на котором настроено отправлять логи создается каталог на сервере rsyslog в папке remotelogs и все логи которые создаются на клиентской системе теперь еще и на сервере.

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

На этом пока у меня всё, с уважением автор блога Олло Александр aka ekzorchik.