如何使用 rsyslog 输出到 mysql 数据库进行故障排除

如何使用 rsyslog 输出到 mysql 数据库进行故障排除

使用 FreeBSD 8.0 32 位。

我已经安装了带有 ommysql 的 rsyslogd 5.5.5。(安装了端口 /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:主 Q:条目已添加,大小现在为 log 1,phys 1 条目
9244.376705694:28359280:主 Q:EnqueueMsg 建议工作人员启动
9244.376726647:28359280:正在监听 UDP syslogd 套接字 4(IPv4/端口 514)。
9244.376728602:28359280: --------imUDP 调用选择,活动文件描述符(最多 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:消息解析器:标志 70,来自“~NOTRESOLVED~”,消息“6 月 29 日 17:32:24 SG560 内核:(20000629T1732244”
9244.376900132:283593c0:使用解析器列表 0x283080e8(默认列表)进行解析。
9244.376902088:283593c0:在消息末尾删除 LF(已设置 DropTrailingLF)
9244.376904044:283593c0:解析器“rsyslog.rfc5424”返回 -2160
9244.376905999:283593c0:消息现在将由传统的 syslog 解析器进行解析(一刀切...;))。
9244.376907955:283593c0:解析器“rsyslog.rfc3164”返回 0
9244.376909910:283593c0:测试过滤器,f_pmask 255
9244.376911866:283593c0:调用操作,记录到 ommysql
9244.376918012:283593c0:actionTryResume:操作状态:susp,下次重试(如果适用):1277869250 [现在是 1277869244]
9244.376919967:283593c0:操作调用返回 -2123
9244.376921923:283593c0:tryDoAction:意外错误代码 -2123,正在完成
9244.376926113:283593c0:actionTryResume:操作状态:susp,下次重试(如果适用):1277869250 [现在是 1277869244]
9244.376928069:283593c0:规则集:从规则.ProcessMsg() 获取 iRet 0
9244.376930024:283593c0:ruleset.ProcessMsg() 返回 0
9244.376931980:283593c0:常规消费者已完成,iret = 0,szlog 0 sz phys 1
9244.376933936:283593c0:XXX:将数据元素 0(共 1 个)加入队列
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:主 Q:Reg/w0:工作者空闲,等待工作。

.... 我可以看到对 ommysql 的操作调用返回了意外错误代码 -2123

现在我陷入困境!您知道下一步该做什么吗?也许我需要安装额外的端口?如果您能提供任何帮助,我将不胜感激!

答案1

所以我首先认为您正在使用 mysql 的默认脚本。

如果确实如此,一切看起来都很好,我唯一可以推荐的就是使用自定义模板,这样您就知道发送的数据将 100% 匹配数据库格式。

如果没有,您需要运行 rsyslog 提供的 sql 脚本来创建数据库和表。

相关内容