syslog-ng插入操作之前的mysql查询

时间:2015-12-10 20:47:49

标签: mysql syslog syslog-ng

我正在使用syslog-ng来解析我通过csv-parser接收的一些日志。但是,我想在syslog-ng中使用“destination”选项实现比传统插入更复杂的插入操作。目前,我从syslog-ng conf文件到MYSQL的目的地如下所示:

destination d_sql_test
{
sql(
type(mysql)
host('<host>') 
username('<user>')
password('<pass>')
database('<db_name>')
table('test')
columns('col1')
values('${val1}')
);
};

但是,这只是将val1的内容插入到列col1中。我希望能够指定我的插入“逻辑”,如this question中的示例所示。

我不确定实际执行此操作的位置,以及syslog-ng是否支持

1 个答案:

答案 0 :(得分:1)

如果您能以某种方式在syslog-ng中做出决定,我认为您可以这样做。

  • 您可以尝试使用in-list() filter检查用户名是否已列在文件中。如果不是,则可以将日志发送到mysql目标,也可以发送到更新包含用户列表的文件的另一个目标(可能是program()目的地),并重新加载syslog-ng以更新inlist过滤器
  • 您可以write a syslog-ng template-function in Python以某种方式实现逻辑,例如,如果应将宏发送到数据库,则将宏设置为1。然后,您可以使用mysql目标在日志路径中为此宏使用过滤器。
  • 或者,如果您可以编写一个单独的目标来完成Python中的工作:Writing syslog-ng destinations in Python

此外,您可能希望在syslog-ng邮件列表中发布此问题,开发人员可以更轻松地注意到此问题。