rsyslog: централизованный сбор логов
Для передачи логов с одной машины на другую нам понадобится две активных инсталляции rsyslog: server и client. Поставим их по мануалу: Замена rsyslog (sysklogd) на syslog в CentOS 5.
Client
Тут в принципе ничего сложного - нам необходимо настроить отправку важных логов по tcp на удаленную машину, пусть это будет log.domain.ru (ага, я не боюсь постоянного резолвера).
Открываем конфиг:
Стандартный конфиг выглядит так:
Вариант с отсылкой всех логов без сохранения локально будет выглядеть так (простое копирование):
А для сохранения локально и отсылки на удаленный сервер он будет выглядеть так:
Перезапускаем rsyslog:
А на сервере можно заменить слушающий rsyslog командой nc:
Теперь для теста попробуем отправить сообщение, которое обычно должно упасть в /var/log/messages:
Server
Открываем конфиг (эта и последующие операции выполняются на сервере):
Разрешаем rsyslog у слушать удаленные машины:
И строку:
Заменяем на:
Добавляем в самый верх следующее:
Перезапускаем rsyslog:
Теперь открываем просмотр лога для контроля, что tcp слушается (tcpReception="Yes") и ожидания логов с клиент машины:
А тем временем на клиент машине вызываем давнюю команду:
И в ответ на сервере должны увидеть следующее:
Ну и все, осталось узнать, как это все себя будет вести под нагрузкой =)
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
Ну и все, осталось узнать, как это все себя будет вести под нагрузкой =)
17.02.2015, 18:04 -
Категория: Статьи » Администрирование