Hilik Настроим все. Ноя 17 2009 Rsyslogd. Установка и настройка. При обслуживании большого количества серверов, раньше или позже возникают проблемы поиска информации в логах(системных журналах уведомлений). Нужно найти определенное событие, например прошедшее через несколько серверов письмо. Лезешь на сервер, ищешь лог файл, потом ищешь в нем письмо, переходишь к следующему серверу и т.п. Пока не отследишь письмо. Что бы ускорить процесс поиска, убрав необходимость блуждания по серверам, можно построить отдельный сервер для хранения логов. Построить его можно на основе обычного syslogd, который входит в базовую FreeBSD. Но тут есть несколько нюансов. В обычном syslogd сильно ограничены возможности фильтрации. Нет фильтрации по адресу сервера, а только по стандартным syslogовским свойствам. И в итоге получится, что уведомления от всех серверов в один файл. Это первый аргумент в сторону rsyslogd. Rsyslogd позволяет фильтровать по целому ряду признаков. Включая регулярные выражения. Второй аргумент, это возможность использования протокола tcp, в отличии от стандартного udp протокола syslogd. Плюс использования протокола tcp, заключается в том, что отправляющая сторона, контролирует прием записей сервером. И при отсутствии соединения с принимающим сервером, может писать логи на резервный сервер или в локальный файл. Устанавливать будем и на сервере логов и на клиенте. Устанавливаем из портов на всех точках. cd usr ports sysutils rsyslog4 make install clean А настраивать начнем с клиента. Клиент просто пишет все файлы локально и отправляет все сообщения по tcp на логсервер. Поэтому файл настроек /usr/local/etc/rsyslog.conf выглядит так: #Принимаем только локальные записи в syslogd по udp $AllowedSender UDP, 127.0.0.1 #Тут описываем права и владельцев локальных файлов $umask 0000 $FileGroup nobody $FileOwner nobody #Шаблон с которым пишутся файлы. Воспроизводит #стандартный syslogd формат $template TraditionalFormat, "%timegenerated% %HOSTNAME% %syslogtag%%msg:::drop-last-lf% \n #Локальные логи. Настройки взяты из стандартного /etc/syslog.conf #только в конце каждого лог-файла описан формат в #котором писать сообщения .err;kern.warning;auth.notice;mail.crit dev console;TraditionalFormat .notice;authpriv.none;kern.debug;lpr.info;mail.crit;news.err var log messages;TraditionalFormat security. var log security;TraditionalFormat auth.info;authpriv.info var log auth.log;TraditionalFormat mail.info var log maillog;TraditionalFormat lpr.info var log lpd-errs;TraditionalFormat ftp.info var log xferlog;TraditionalFormat cron. var log cron;TraditionalFormat .=debug var log debug.log;TraditionalFormat #Теперь самая интересная часть. Отправляем копию сообщений #на лог сервер по tcp. То что именно по tcp настраивается #количеством символов @. Одно @ - udp, два @ - tcp @@ 192.168.0.1 # tcp #Приведенные ниже строки отвечают за то, что бы #при отсутствии связи с логсервером не терялись логи. $ActionExecOnlyWhenPreviousIsSuspended on #при исчезновении сервера, логи пишутся в описанный ниже файл #тут можно перед файлом описать один или несколько резервных #лог серверов, тогда в файл будет писаться информация только в том случае, #если все они не доступны. Сервера описываются так: #& @@192.168.1.2 var log localbuf $ActionExecOnlyWhenPreviousIsSuspended off Теперь настраиваем сервер. Запускать пока на клиенте не будем. Сначала настроим сервер, запустим и вернемся к клиенту. На сервере /usr/local/etc/rsyslog.conf выглядит так: #Загружаем модуль UDP сервера $ModLoad imudp #Pfгружаем модуль TCP сервера $ModLoad imtcp #Загружаем модуль регекспов $ModLoad lmregexp #Принимаем локальные сообщения по UDP $AllowedSender UDP, 127.0.0.1 #От наших серверов по TCP $AllowedSender TCP, 192.168.0.0 24 #Запускаем UDP сервер $UDPServerRun 514 #Запускаем TCP сервер $InputTCPServerRun 514 $umask 0000 $FileGroup
Rsyslogd. Установка и настройка. | Hilik
Материал перенесён из старой базы знаний ATC-IP и оформлен в едином стиле нового сайта.