Сегодня я хочу разобрать настройку 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.