什么是动态设置mongodb集合名称的rsyslog语法?

时间:2013-10-31 18:02:49

标签: mongodb rsyslog

我已经将rsyslog v7.4.5写入MongoDB,现在想根据当前小时动态设置集合名称。我已经尝试阅读他们的在线文档,但是我不清楚在这种情况下使用哪种语法。我基本上使用他们在这个示例中提供的配置:http://www.rsyslog.com/tag/ommongodb/

我的配置是:

input(type="imuxsock" socket="/dev/log")

template(name="mongodblocal" type="subtree" subtree="$!")

if $syslogfacility-text == 'local0' then {
    action(type="mmjsonparse")
    if $parsesuccess == "OK" then {
        # set vars that are appended onto the doc that's written to MongoDB
        set $!time = $timestamp;
        set $!sys = $hostname;
        set $!procid = $syslogtag;
        set $!syslog_fac = $syslogfacility;
        set $!syslog_sever = $syslogpriority;
        set $!pid = $procid;

        action(type="ommongodb" server="127.0.0.1" db="logs" collection="syslog" template="mongodblocal")
    }
}

请注意指定MongoDB数据库和集合名称的操作:

action(type="ommongodb" server="127.0.0.1" db="logs" collection="syslog" template="mongodblocal")

我想使用rsyslog属性动态设置集合名称,如下所示:

action(type="ommongodb" server="127.0.0.1" db="logs" collection="syslog%YEAR%%MONTH%%DAY%%HOUR%" template="mongodblocal")

然而,这显然不是正确的语法,因为属性名称被解释为文字字符串。

我也试过这个,这导致MongoDB日志记录不再起作用:

set $!collection = "syslog%YEAR%%MONTH%%DAY%%HOUR%";
action(type="ommongodb" server="127.0.0.1" db="logs" collection="$!collection" template="mongodblocal")

有没有人知道完成此操作的适当语法?

1 个答案:

答案 0 :(得分:0)

我在开发者论坛上发布了这个问题,他们回答说目前无法使用属性值自定义集合名称参数:

http://kb.monitorware.com/rsyslog-ommongodb-syntax-for-dynamic-collection-name-t12161.html