如何解决使用rsyslog输出到MySQL数据库

使用FreeBSD 8.0 32位。

我用ommysql安装了rsyslogd 5.5.5。 (安装ports / 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数据库的完整权限。

如果我在debugging模式下在控制台上运行rsyslogd:

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

每次收到消息,我都可以看到这一系列事件:

 9244.376687256:28359280:主要问题:条目已添加,现在大小为1,phys 1条目
 9244.376705694:28359280:主问:EnqueueMsgbuild议工人开始
 9244.376726647:28359280:侦听UDP syslogd套接字4(IPv4 /端口514)。
 9244.376728602:28359280:-------- imUDP调用select,活动文件描述符(max 4):4
 9244.376890075:283593c0:wti 0x28306e80:工人从空闲处理中醒来
 9244.376892031:283593c0:我们删除了0个对象并入队了0个对象
 9244.376893986:283593c0:从商店中删除批次,新尺寸:log 1,phys 1
 9244.376895942:283593c0:msgConsumer进程msg 0/1
 9244.376897898:283593c0:msg parser:flags 70,from'〜NOTRESOLVED〜',msg'Jun 29 17:32:24 SG560 kernel:(20000629T1732244'
 9244.376900132:283593c0:使用parsing器列表0x283080e8(默认列表)parsing。
 9244.376902088:283593c0:在消息的最后端丢掉LF(DropTrailingLF置位)
 9244.376904044:283593c0:parsing器“rsyslog.rfc5424”返回-2160
 9244.376905999:283593c0:消息现在将被旧式syslogparsing器parsing(适用于所有...;))。
 9244.376907955:283593c0:parsing器“rsyslog.rfc3164”返回0
 9244.376909910:283593c0:testingfilter,f_pmask 255
 9244.376911866:283593c0:调用操作,logging到ommysql
 9244.376918012:283593c0:actionTryResume:操作状态:susp,下次重试(如果适用):1277869250 [now 1277869244]
 9244.376919967:283593c0:动作调用返回-2123
 9244.376921923:283593c0:tryDoAction:意外的错误代码-2123,最终确定
 9244.376926113:283593c0:actionTryResume:操作状态:susp,下次重试(如果适用):1277869250 [now 1277869244]
 9244.376928069:283593c0:ruleset:从rule.ProcessMsg()获得iRet 0
 9244.376930024:283593c0:ruleset.ProcessMsg()返回0
 9244.376931980:283593c0:经常消费完毕,iret = 0,szlog 0 sz phys 1
 9244.376933936:283593c0:XXX:排列1的数据元素0
 9244.376935891:283593c0:我们删除了1个对象并入队了0个对象
 9244.376938126:283593c0:从商店删除批次,新的尺寸:log 0,phys 0
 9244.376940082:283593c0:经常消费完毕,iret = 4,szlog 0 sz phys 0
 9244.376942037:283593c0:main Q:Reg / w0:工人IDLE,正在等待工作。

….我可以看到Action调用ommysql返回意外的错误代码-2123

现在我卡住了! 关于下一步要查找什么的想法? 也许我有我需要安装额外的端口? 我将非常感激这里的任何帮助!

所以我第一件事,我把它你使用的默认脚本为MySQL。

如果是这样的话,所有的东西看起来都不错,我唯一可以推荐的就是使用一个自定义模板,以便你知道你发送的数据将会与db格式100%匹配。

如果不是,则需要运行随rsyslog提供的sql脚本来创build数据库和表。