使用 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 脚本来创建数据库和表。