how to troubleshoot using rsyslog to output to a mysql database
Using FreeBSD 8.0 32 bit.
I have installed rsyslogd 5.5.5 with ommysql. (installed ports /usr/ports/sysutils/rsyslog55 and /usr/ports/sysutils/rsyslog55-mysql)
My rsyslog.conf file looks like:
$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
My command line flags for rsyslogd are: -c5 -4 Checking the code with -c5 -N1 returns no errors.
I have confirmed that rsyslogd is working by changing the last line to say:
*.* /var/log/snapgear.log
which results in messages appearing in the snapgear.log file. So it is probably something to do with my MySQL setup
If I do:
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>
:-(
I have confirmed that sysloguser has full privileges for the Syslog database.
If I run rsyslogd on the console in debug mode:
/usr/local/sbin/rsyslogd -f /usr/local/etc/rsyslog.conf -c5 -n -d
I can see this sequence of events each time a message is received:
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.
.... I can see the Action Call to ommysql returns unexpected error code -2123
Now I am stuck! Any ideas on what to look for next? Perhaps I there are extra ports I need to install? I will be very grateful for any assistance here!
So I first thing , I take it you are using the default script for mysql.
If so all really looks fine the only thing i can recommend is to use a custom template so that you know the data you are sending will match the db format 100%.
If not you need to run the sql script that is provided with rsyslog to create the db and tables.