我已经将 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")
有谁知道完成此操作的适当语法?