如何设置mysql存储某些rsysloginput匹配?

我正在将Heroku中的各种日志耗尽到rsyslog linux(ubuntu)服务器,并且开始比我能用我的日志历史logging咀嚼更多的东西。

我需要能够根据比标准系统日志文件提供的更灵活的细节和更灵活的访问来及时回溯。

我正在考虑logging到MySQL可能是正确的方法,但我如何设置,以便它只拉一些日志条目到基于一个确定的表格? 例如,我看到一个很长的hexstring,用来标识某个Heroku应用程序实例中的每个日志条目。 我认为我可以pipe这些到MySQL套接字VS所有rsysloginput到MySQL …

有人可以指导我一个资源,可以通过设置类似的东西,或只是提供一些细节,可以帮助我? 我有15年以上的Unix经验,所以我只是需要一些正确的方向,因为我之前并没有在syslog守护进程方面做过大量的工作,因为之前将各种服务器合并为一个。

另外,我会对任何日志审查工具感兴趣,这些工具可以通过日志安排进行钻取,这对于开发人员来说更为方便。

我想这件事应该工作。 首先,请确保您的rsyslog conf文件中包含以下行,以便加载MySQL输出模块:

$ModLoad ommysql 

然后,过滤你想要的东西,像这样:

 :msg, contains, "Heroku" :ommysql:dbserver,dbname,dbuser,dbpass;heroku-template 

接下来你需要为你的数据创build一个模板,所以rsyslog知道什么以及如何插入你的数据库。 这是一个只loggingdate和消息的示例模板,除了你有一个只有两列, datemessage

 $template heroku-template, "INSERT INTO herokulog(date,message) VALUES ('%timestamp','%msg')\r\n", SQL 

像这样的东西应该工作。 请注意,这是我的头顶,没有testing,但你明白了。 更多的详细信息可以从rsyslog网站find,例如可用的模板参数值可能会让你感兴趣。

我将pipe道syslog到一个grep命令来提取你需要的行,然后到一个awk脚本来生成一个良好的格式化csv文件,然后我会把生成的csv文件拖到mysql使用“LOAD DATA IN FILE”

您也可以检查phpsyslog-ng项目: http ://www.gdd.net/index.php/PHP-Syslog-NG