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


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



Просмотров: 1625
17.02.2015, 18:04 -

Категория: Статьи » Администрирование