sudo apt-get install rsyslog-mysql
Задаем пароль для пользователя rsyslog базы Syslog. В результате создается конфигурационный файл который модифицируем:
/etc/rsyslog.d/mysql.conf
$ModLoad ommysql
local0.192.168.0.200 :ommysql:localhost,Syslog,rsyslog,password
& ~
Но в настройке по-умолчанию что-то не так, медленно работает, дублирует в файл syslog. Иногда такое чувство, что вообще не пишет в лог. Пытаемся устранить это далее. Ну и то что в процессе нарыл - добавил сюда. Скажу сразу, что ускорилась запись в лог после отключения резолвинга (до этого пробовал играться с записью очереди в память LinkedList - не помогло). Видимо связано с тем, что IP железки использовал из локальной сети и его соответственно отрезолвить никак не могло, на чем и затык выходил. Это было видно при запуске демона с в дебаг режиме. При записи очереди на диск периодически появлялась запись:
7494.546004979:7f8214d81700: Host name for your address (192.168.0.200) unknown
Но в настройке по-умолчанию что-то не так, медленно работает, дублирует в файл syslog. Иногда такое чувство, что вообще не пишет в лог. Пытаемся устранить это далее. Ну и то что в процессе нарыл - добавил сюда. Скажу сразу, что ускорилась запись в лог после отключения резолвинга (до этого пробовал играться с записью очереди в память LinkedList - не помогло). Видимо связано с тем, что IP железки использовал из локальной сети и его соответственно отрезолвить никак не могло, на чем и затык выходил. Это было видно при запуске демона с в дебаг режиме. При записи очереди на диск периодически появлялась запись:
7494.546004979:7f8214d81700: Host name for your address (192.168.0.200) unknown
Настройка клиента
# Отправляем копию сообщений на лог сервер по tcp.
# То что именно по tcp настраивается количеством символов @.
# Одно @ - udp, два @ - tcp
Существует так же, специальный символ &, который повторяет выполнение прошлого фильтра и запускает действие, указанное после данного символа. Это очень удобно для фильтрации или экономии системных ресурсов, например вместо:
*.* @@192.168.0.1 # tcp
# Приведенные ниже строки отвечают за то, что бы при отсутствии связи
# с лог-сервером не терялись логи.
$ActionExecOnlyWhenPreviousIsSuspended on
# при исчезновении сервера, логи пишутся в описанный ниже файл
# тут можно перед файлом описать один или несколько резервных
# лог серверов, тогда в файл будет писаться информация только в том случае,
# если все они не доступны. Сервера описываются так:
#& @@192.168.0.2
& /var/log/localbuf
$ActionExecOnlyWhenPreviousIsSuspended off
Настройка сервера
/etc/rsyslog.d/50-default.conf
Варианты записи данных с удаленных клиентов
local0 выставлено на роутере, писать в лог для конкретного роутера
local0.192.168.0.200 /var/log/DFL-800.log
писать в лог для любого оборудования с local0
local0.* /var/log/routers.log
с помощью шаблонов для разделения по хостам оборудования
$template \ RemLogs,"/var/log/remote/%$YEAR%/%$MONTH%/%$DAY%/%FROMHOST%.log"
local0.* ?RemLogs
с помощью подстановок
:FROMHOST, isequal, "192.168.0.200" /var/log/DFL800.log
Подробности какие еще есть переменные и функции для подстановок здесь
:FROMHOST, isequal, "192.168.0.200" ~
Знак тильда ~ обозначает прекращение обработки по этой цепочке (т.е. если в 50-default.conf обработка цепочки и потом тильда по ней. И если добавление в базу MySQL вынесено в отдельный файл mysql.conf, то добавления не будет).
:FROMHOST, isequal, "192.168.0.200" /var/log/DFL800.log
:FROMHOST, isequal, "192.168.0.200" ~
сокращаем до
:FROMHOST, isequal, "192.168.0.200" /var/log/DFL800.log
& ~
Дебаг, если что-то не получается
смотрим что падает на порт
sudo tcpdump -vvv -nn -i eth0 udp port 514
смотрим на предмет ошибок полный лог
cd /usr/sbin
sudo rsyslogd -c5 -f /etc/rsyslog.conf -dn > \ /home/user/debug_rsyslog.log
Отключение резолвинга
Чтобы улучшить производительность, можно отключить резолвинг ip адресов в хостнеймы, Для этого необходимо добавить параметр -x в файл
/etc/default/rsyslog
RSYSLOGD_OPTIONS="-c5 -x"
Отключение дублирования логирования в /var/log/syslog
В файле /etc/syslog.d/50-default.conf есть строка
*.*;auth,authpriv.none -/var/log/syslog
т.е. пишем все кроме auth,authpriv.none. Добавляем в исключения сюда local0 и получаем:
*.*;auth,authpriv.none,local0 -/var/log/syslog
Теперь по моему конфигу пишет только в базу MySQL (мне не критично и мне так нужно).
Ссылки, которыми пользовался во время изучения:
http://www.k-max.name/linux/rsyslog-na-debian-nastrojka-servera/
http://bog.pp.ru/work/syslog.html
http://wi.cc.arhv.net/index.php/Kon:Settings:rsyslog
http://www.rsyslog.com/doc/queues.html
Комментариев нет:
Отправить комментарий