Назад | Перейти на главную страницу

как устранить неполадки с использованием rsyslog для вывода в базу данных mysql

Использование FreeBSD 8.0 32 бит.

Я установил rsyslogd 5.5.5 с помощью ommysql. (установленные порты / usr / ports / sysutils / rsyslog55 и / usr / ports / sysutils / rsyslog55-mysql)

Мой файл rsyslog.conf выглядит так:

$ModLoad imudp
$ModLoad imtcp
$ModLoad ommysql 
$ModLoad immark.so   
$ModLoad imuxsock.so 
$ModLoad imklog.so   
$OptimizeForUniprocessor on
$AllowedSender UDP, 10.0.0.0/8
$UDPServerAddress 0.0.0.0
$UDPServerRun 514
$UDPServerTimeRequery 2
#
+SG560
*.*     :ommysql:127.0.0.1,Syslog,sysloguser,mypassword

Мои флаги командной строки для rsyslogd: -c5 -4 Проверка кода с помощью -c5 -N1 не возвращает ошибок.

Я подтвердил, что rsyslogd работает, изменив последнюю строку на:

*.*      /var/log/snapgear.log

что приводит к появлению сообщений в файле snapgear.log. Так что это, вероятно, связано с моей настройкой MySQL

Если я сделаю:

mysql -u sysloguser -p Syslog
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 56
Server version: 5.0.86 FreeBSD port: mysql-server-5.0.86

mysql> select * from SystemEvents;
Empty set (0.00 sec)

mysql>

:-(

Я подтвердил, что sysloguser имеет полные права доступа к базе данных Syslog.

Если я запустил rsyslogd на консоли в режиме отладки:

/usr/local/sbin/rsyslogd -f /usr/local/etc/rsyslog.conf -c5 -n -d

Я вижу эту последовательность событий каждый раз при получении сообщения:

9244.376687256:28359280: main Q: entry added, size now log 1, phys 1 entries
9244.376705694:28359280: main Q: EnqueueMsg advised worker start
9244.376726647:28359280: Listening on UDP syslogd socket 4 (IPv4/port 514).
9244.376728602:28359280: --------imUDP calling select, active file descriptors (max 4): 4
9244.376890075:283593c0: wti 0x28306e80: worker awoke from idle processing
9244.376892031:283593c0: we deleted 0 objects and enqueued 0 objects
9244.376893986:283593c0: delete batch from store, new sizes: log 1, phys 1
9244.376895942:283593c0: msgConsumer processes msg 0/1
9244.376897898:283593c0: msg parser: flags 70, from '~NOTRESOLVED~', msg 'Jun 29 17:32:24 SG560 kernel: (20000629T1732244'
9244.376900132:283593c0: parse using parser list 0x283080e8 (the default list).
9244.376902088:283593c0: dropped LF at very end of message (DropTrailingLF is set)
9244.376904044:283593c0: Parser 'rsyslog.rfc5424' returned -2160
9244.376905999:283593c0: Message will now be parsed by the legacy syslog parser (one size fits all... ;)).
9244.376907955:283593c0: Parser 'rsyslog.rfc3164' returned 0
9244.376909910:283593c0: testing filter, f_pmask 255
9244.376911866:283593c0: Called action, logging to ommysql
9244.376918012:283593c0: actionTryResume: action state: susp, next retry (if applicable): 1277869250 [now 1277869244]
9244.376919967:283593c0: action call returned -2123
9244.376921923:283593c0: tryDoAction: unexpected error code -2123, finalizing
9244.376926113:283593c0: actionTryResume: action state: susp, next retry (if applicable): 1277869250 [now 1277869244]
9244.376928069:283593c0: ruleset: get iRet 0 from rule.ProcessMsg()
9244.376930024:283593c0: ruleset.ProcessMsg() returns 0
9244.376931980:283593c0: regular consumer finished, iret=0, szlog 0 sz phys 1
9244.376933936:283593c0: XXX: enqueueing data element 0 of 1
9244.376935891:283593c0: we deleted 1 objects and enqueued 0 objects
9244.376938126:283593c0: delete batch from store, new sizes: log 0, phys 0
9244.376940082:283593c0: regular consumer finished, iret=4, szlog 0 sz phys 0
9244.376942037:283593c0: main Q:Reg/w0: worker IDLE, waiting for work.

.... Я вижу, что вызов действия к ommysql возвращает неожиданный код ошибки -2123

Теперь я застрял! Есть идеи, что искать дальше? Возможно, мне нужно установить дополнительные порты? Буду очень благодарен за любую помощь здесь!

Итак, во-первых, я так понимаю, вы используете сценарий по умолчанию для mysql.

Если это так, все выглядит хорошо, единственное, что я могу порекомендовать, - это использовать собственный шаблон, чтобы вы знали, что отправляемые вами данные будут соответствовать формату db на 100%.

Если нет, вам нужно запустить sql-скрипт, поставляемый с rsyslog, для создания базы данных и таблиц.