Собираем логи с серверов и сетевого оборудования
Здесь я постараюсь коротко изложить, как собирать логи с серверов и сетевого оборудования, пошагово, с примерами. Все будет производиться на примере серверов на базе CentOS. Разница между пятой и шестой версией CetnOS связанная с логированием лишь в том, что в 5-й используется syslog, а в 6-й rsyslog.
Для сбора логов будем использовать syslog-ng. Так же, прикрутим удобный инструмент просмотра логов — colortail.
Для начала, на сервере, на котором будем собирать логи, необходимо поставить syslog-ng, предварительно установив репозиторий epel.
# yum install syslog-ng syslog-ng-libdbi
# chkconfig rsyslog off; chkconfig --level 2345 syslog-ng on
# /etc/init.d/rsyslog stop; /etc/init.d/syslog-ng start
# mkdir /var/log/syslog-ng-net
Далее, нам необходимо настроить syslog-ng на приём логов по сети, раскладывать логи будем исходя из IP-адреса оборудования, с которого они приходят.
Добавляем в конец файла /etc/syslog-ng/syslog-ng.conf
# Слушаем сеть на порту udp 514
source net { udp(ip(0.0.0.0) port(514)); };
# сервер1 с адресом 192.168.10.10
destination d_server1 { file("/var/log/syslog-ng-net/server1.log"); };
filter f_server1 { netmask("192.168.10.10/255.255.255.255"); };
log { source(net); filter(f_server1); destination(d_server1); };
# сервер2 с адресом 192.168.10.12
destination d_server2 { file("/var/log/syslog-ng-net/server2.log"); };
filter f_server2 { netmask("192.168.10.12/255.255.255.255"); };
log { source(net); filter(f_server2); destination(d_server2); };
Записи надо добавить по количеству серверов. После этого рестартим syslog-ng
# /etc/init.d/syslog-ng restart
Принимающий сервер готов. Только не забудьте открыть в файрволе (iptables) порт 514 udp для входящий соединений с вашего оборудования.
Переходим к настройкам серверов, с которых будут слаться логи на наш сервер с syslog-ng. Можно слать как все логи, так и толкьо избранные, исходя из разных критериев.
Для всех логов, добавляем в конец файла /etc/rsyslog.conf (6-я версия) или /etc/syslog.conf (5-я версия) следующее:
# syslog-server (подразумеваеться что syslog-ng стоит на сервере с адресом 192.168.10.1)
*.* @192.168.10.1
если мы не хотим отправлять все логи, а только избранные, то вместо того что указано выше, добавляем например:
authpriv.* @192.168.10.1
*.warn @192.168.10.1
*.error @192.168.10.1
kern.* @192.168.10.1
то есть, указываем отправлять все логи входа на сервер, warning и error, а так же сообщения kernel.
перезапускаем syslog(rsyslog)
# /etc/init.d/rsyslog restart
Повторяем все на других серверах, и на принимающем сервере, в папке /var/log/syslog-ng-net/ видим файлы логов с других серверов.
Что бы все это довести до ума, и создать себе удобство, проделаем еще кое-что, а именно, добавим logrotate, чтобы логи сохранять, скажем, 7 дней.
в /etc/logrotate.d/syslog-ng-net
/var/log/syslog-ng-net/*log {
daily
rotate 7
missingok
compress
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}
и установим colortail, для удобного просмотра логов.
# rpm -Uhv http://ms1.nserver.us/colortail-0.3.3-1.el6.x86_64.rpm
# cp /usr/share/doc/colortail-0.3.3/example-conf/conf.messages /etc/conf.messages
добавляем алиас в ~/.bashrc
alias ctail='/usr/bin/colortail -k /etc/conf.messages'
правим /etc/conf.messages , чтобы подсвечивать критические ошибки:
logoff и login на принимающий сервер, идем в /var/log/syslog-ng-net , и наблюдаем за логами с первого сервера.
# ctail -f server1.log
Так же мы можем принимать логи от любого сетевого оборудования которое поддерживает отправку логов.
На этом всё,
Удачи в настройках.
© shadow_alone