FastNetMon

Tuesday 22 December 2009

rsyslog: централизованный сбор логов

Для передачи логов с одной машины на другую нам понадобится две активных инсталляции rsyslog: server и client. Поставим их по мануалу: Замена rsyslog (sysklogd) на syslog в CentOS 5

Client

Тут в принципе ничего сложного - нам необходимо настроить отправку важных логов по tcp на удаленную машину, пусть это будет log.domain.ru (ага, я не боюсь постоянного резолвера).

Открываем конфиг:
vi /etc/rsyslog.conf


Стандартный конфиг выглядит так:

cat /etc/rsyslog.conf
# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.* /dev/console

# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none /var/log/messages

# The authpriv file has restricted access.
authpriv.* /var/log/secure

# Log all the mail messages in one place.
mail.* -/var/log/maillog


# Log cron stuff
cron.* /var/log/cron

# Everybody gets emergency messages
*.emerg *

# Save news errors of level crit and higher in a special file.
uucp,news.crit /var/log/spooler

# Save boot messages also to boot.log
local7.* /var/log/boot.log


Вариант с отсылкой всех логов без сохранения локально будет выглядеть так (простое копирование):

*.info;mail.none;authpriv.none;cron.none @@xx.xx.xx.xx:514


А для сохранения локально и отсылки на удаленный сервер он будет выглядеть так:

*.info;mail.none;authpriv.none;cron.none /var/log/messages
*.info;mail.none;authpriv.none;cron.none @@xx.xx.xx.xx:514


Перезапускаем rsyslog:
/etc/init.d/rsyslog restart


А на сервере можно заменить слушающий rsyslog командой nc:
nc -l 514


Теперь для теста попробуем отправить сообщение, которое обычно должно упасть в /var/log/messages:

logger -p ftp.info 'test message suxx'


Server

Открываем конфиг (эта и последующие операции выполняются на сервере):
vi /etc/rsyslog.conf


Разрешаем rsyslog у слушать удаленные машины:

vi /etc/sysconfig/rsyslog


И строку:
SYSLOGD_OPTIONS="-m 0"


Заменяем на:
SYSLOGD_OPTIONS="-m 0 -t514"


Добавляем в самый верх следующее:

$AllowedSender TCP, 127.0.0.1, cli.ent.ip.add


Перезапускаем rsyslog:
/etc/init.d/rsyslog restart


Теперь открываем просмотр лога для контроля, что tcp слушается (tcpReception="Yes") и ожидания логов с клиент машины:

tail -f /var/log/messages
x-pid="32126" x-info="http://www.rsyslog.com"][x-configInfo udpReception="No" udpPort="514" tcpReception="Yes" tcpPort="514"] restart



А тем временем на клиент машине вызываем давнюю команду:
logger -p ftp.info 'test remote message suxx'


И в ответ на сервере должны увидеть следующее:

Dec 22 06:08:09 clienthostname root: test remote message suxx


Ну и все, осталось узнать, как это все себя будет вести под нагрузкой =)

No comments :

Post a Comment

Note: only a member of this blog may post a comment.