Установка, настройка и связывание RSyslog и Sentry
Захотелось собирать все логи из ОС (со всех серверов) в Sentry, естественно придется использовать UDP для передачи логов, к счастью в Sentry уже есть поддержка UDP. Посовещавшись с Сашей Мироновым, я решил использовать RSyslog, немного погуглив я обнаружил вот такой Gist Bridge to send rsyslog logs to sentry (который я потом успешно форкнул и отрефакторил). Теперь осталось только написать правила и запустить эту цепь.
Статья в основном для FreeBSD, но как обычно конфиги совпадают, просто заменяйте слова "установить из портов" на "установить из пакетов". Не думаю, что в остальном что-то серьзено изменится.
Запускаем UDP-сервер для Sentry
Зайдите на сервер где вы ранее устанавливали Sentry и откройте конфигурационный файл:
Теперь войдите на сервер, который будет посылать логи (вообщем, в нашей схеме это получается клиент на FreeBSD):
cd /usr/ports/sysutils/rsyslog6
make install clean
Теперь настроим RSyslog, например для логов Nginx:
emacs /usr/local/etc/rsyslog.conf
$ModLoad imfile
# Nginx
$InputFileName /var/log/nginx-error.log
$InputFileTag nginx-error:
$InputFileStateFile stat-nginx-error
$InputFileSeverity info
$InputRunFileMonitor
$ActionQueueType LinkedList # use asynchronous processing
$ActionQueueFileName test # set file name, also enables disk mode
$ActionResumeRetryCount -1 # infinite retries on insert failure
$ActionQueueSaveOnShutdown on # save in-memory data if rsyslog shuts down
# Transfer all of the logs to this UDP port
*.* @@127.0.0.1:10514;RSYSLOG_SyslogProtocol23Format
Где, "127.0.0.1" - IP-адрес локального моста RSyslog->Sentry, речь о котором пойдет ниже, а "10514" - его UDP-порт.
Теперь откройте этот файл на редактирование и найдите строчку <your dsn here>, укажите DSN полученный из Sentry (не забудьте добавить номер UDP-порта, который вы указали в SENTRY_UDP_PORT):
После чего найдите строку где поднимается SyslogServer (он будет локально слушать UDP-порт, на который буду приходить сообщения от RSyslog) и укажите нужный IP-адрес и UDP-порт:
s = SyslogServer(('127.0.0.1', 10514), SimpleHandler)
I changed the IP, dsn and rsyslog conf like if $programname == 'supervisord' then @@192.168.1.101:10514, and run the sсript, when my rsyslog logs send to my server, the sсript got an exception,like
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/loggerglue/rfc5424.py", line 297, in from_line
r = syslog_msg.parseString(line.strip())
File "/usr/local/lib/python2.7/dist-packages/pyparsing.py", line 1041, in parseString
raise exc
ParseException: Expected W:(-) (at char 57), (line:1, col:58)
Expected W:(-) (at char 57), (line:1, col:58)
my supervisor log like this Aug 13 15:25:26 ubuntu supervisord: svtest SVTEST Tue Aug 13 15:25:25 2013
and in rfc5424.py,the line value like this '<14>1 2013-08-13T15:29:42+08:00 ubuntu supervisord - - svtest SVTEST Tue Aug 13 15:29:41 2013'
Комментарии
О_о) я теперь медийная персона!
Ну а как же! Пора бы уже :-)
hi :)
I changed the IP, dsn and rsyslog conf like if $programname == 'supervisord' then @@192.168.1.101:10514, and run the sсript, when my rsyslog logs send to my server, the sсript got an exception,like
my supervisor log like this Aug 13 15:25:26 ubuntu supervisord: svtest SVTEST Tue Aug 13 15:25:25 2013
and in rfc5424.py,the line value like this '<14>1 2013-08-13T15:29:42+08:00 ubuntu supervisord - - svtest SVTEST Tue Aug 13 15:29:41 2013'
can u help me? :) thanks. my OS is ubuntu 12.04
Оставьте свой комментарий