Rsyslog позволяет настроить отправку логов для определенного приложения на централизованный сервер. Это может значительно упростить процесс контроля за событиями на компьютерах в сети. Его настройка на различных системах на базе Linux, практически, не отличается. В данной инструкции мы рассмотрим процесс установки и настройки на примере CentOS и Ubuntu.
На сервере нужно, предварительно, выполнить следующие настройки.
Для правильной фиксации времени логов, необходимо настроить его синхронизацию.
Сначала задаем правильный часовой пояс:
\cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime
* в данном примере мы использовали московское время.
Затем устанавливаем и запускаем chrony.
а) на системе CentOS / Red Hat:
yum install chrony
systemctl enable chronyd
systemctl start chronyd
б) на системе Ubuntu / Debian:
apt-get install chrony
systemctl enable chrony
systemctl start chrony
Если используется брандмауэр, необходимо открыть порты TCP/UDP 514.
а) с помощью firewalld:
firewall-cmd –permanent –add-port=514/{tcp,udp}
firewall-cmd –reload
б) с помощью iptables:
iptables -A INPUT -p tcp –dport 514 -j ACCEPT
iptables -A INPUT -p udp –dport 514 -j ACCEPT
в) с помощью ufw:
ufw allow 514/tcp
ufw allow 514/udp
ufw reload
Проверяем, работает ли в нашей системе SELinux:
getenforce
Если мы получаем в ответ:
… необходимо либо настроить SELinux:
semanage port -m -t syslogd_port_t -p tcp 514
semanage port -m -t syslogd_port_t -p udp 514
… либо отключить его командами:
setenforce 0
sed -i ‘s/^SELINUX=.*/SELINUX=disabled/g’ /etc/selinux/config
Установить rsyslog необходимо как на сервер, так и клиентские компьютеры. В зависимости от операционной системы сама установка будет выполняться одной из команд.
а) для систем на базе RPM (Red Hat / CentOS):
yum install rsyslog
б) для систем на базе deb (Debian / Ubuntu):
apt-get install rsyslog
После установки разрешаем автозапуск службы и стартуем ее:
systemctl enable rsyslog
systemctl start rsyslog
Открываем конфигурационный файл:
vi /etc/rsyslog.conf
Снимаем комментарии со следующих строк:
$ModLoad imudp$UDPServerRun 514
$ModLoad imtcp$InputTCPServerRun 514
* в данном примере мы разрешили запуск сервера для соединений TCP и UDP на портах 514. На самом деле, можно оставить только один протокол, например, более безопасный и медленный TCP.
После добавляем в конфигурационный файл строки:
$template RemoteLogs,”/var/log/rsyslog/%HOSTNAME%/%PROGRAMNAME%.log”*.* ?RemoteLogs& ~
* в данном примере мы создаем шаблон с названием RemoteLogs, который принимает логи всех категорий, любого уровня (про категории и уровни читайте ниже); логи, полученный по данному шаблону будут сохраняться в каталоге по маске /var/log/rsyslog/<имя компьютера, откуда пришел лог>/<приложение, чей лог пришел>.log; конструкция & ~ говорит о том, что после получения лога, необходимо остановить дальнейшую его обработку.
Перезапускаем службу логов:
systemctl restart rsyslog
Устанавливаем и запускаем rsyslog по инструкции, описанной выше. После приступаем к настройке клиента.
Для начала можно настроить отправку всех логов на сервер. Создаем конфигурационный файл для rsyslog:
vi /etc/rsyslog.d/all.conf
Добавляем:
*.* @@192.168.0.15:514
* где 192.168.0.15 — IP-адрес сервера логов. *.* — перенаправлять любой лог.
Перезапускаем rsyslog:
Если необходимо отправлять только определенные категории логов, создаем конфигурационный файл для соответствующей, например:
vi /etc/rsyslog.d/kern.conf
Добавим строку:
kern.* @@192.168.0.15:514
Перезапускаем сервис логов:
Возможные категории для логов (facility):
Если мы хотим передавать только сообщения об ошибках, добавляем строку в файл конфигурации rsyslog:
vi /etc/rsyslog.d/erors.conf
*.err @@192.168.0.15:514
Возможные уровни логов:
Возможные категории для логов (severity):
Мы можем настроить слежение за изменением определенного лога и передавать их на сервер. Для этого нужно настроить и сервер, и клиента.
Создаем новый конфигурационный файл:
vi /etc/rsyslog.d/audit.conf
$ModLoad imfile$InputFileName /var/log/audit/audit.log$InputFileTag tag_audit_log:$InputFileStateFile audit_log$InputFileSeverity info$InputFileFacility local6$InputRunFileMonitor
* в данном примере мы будем отслеживать изменения лог-файла /var/log/audit/audit.log; нас интересуют события от уровня info и выше; все события будет отмечены категорией local6 и переданы на сервер 192.168.0.15.
Перезапускаем сервис на клиенте:
На сервере нам нужно фильтровать все сообщения категории local6 (такую категорию мы выбрали, когда настроили клиента) и перенаправлять их в нужных нам файл. Открываем на редактирование конфигурационный файл rsyslog:
Создаем новый шаблон для захвата логов:
$template HostAudit, “/var/log/rsyslog/%HOSTNAME%/audit.log”local6.* ?HostAudit
* в данном примере мы создаем шаблон HostAudit; rsyslog будет принимать логи категории local6 и сохранять в файле /var/log/rsyslog/<имя компьютера, откуда пришел лог>/audit.log.
Перезапускаем сервер:
Некоторые приложения умеют отправлять лог напрямую на syslog. Например, nginx (начиная с версии 1.7.1). Для этого открываем конфигурационной файл (основной или конфиг виртуального домена):
vi /etc/nginx/nginx.conf
Добавляем или редактируем соответствующие настройки для логов:
…access_log syslog:server=192.168.0.15:514 info;error_log syslog:server=192.168.0.15:514 warn;error_log /var/log/nginx/error.log warn;…
* в данном примере мы настроили хранение логов для nginx на сервере 192.168.0.15. Для ошибок также сохраняется локальный лог в файле /var/log/nginx/error.log.
Проверяем корректность конфигурационного файла nginx:
Перезапускаем сервис:
systemctl restart nginx
В нашем примере сервер настроен на хранение логов по маске /var/log/rsyslog/%HOSTNAME%/%PROGRAMNAME%.log. Это значит, что в каталоге /var/log/rsyslog должны появляться папки с именами компьютеров, которые отправляют на сервер свои логи. Посмотреть список данных папок можно командой:
ls /var/log/rsyslog
Чтение логов выполняется обычной командой cat или tail, например:
tail /var/log/rsyslog/comp1/CROND.log
* здесь мы прочитаем лог для cron на компьютере comp1.
Ротация логов с помощью logrotate
Примеры настроек logrotate для различных программ
Продолжая использовать данный сайт вы принимаете политику конфиденциальности и cookies