【问题标题】:What is the rsyslog syntax for dynamically setting the mongodb collection name?动态设置 mongodb 集合名称的 rsyslog 语法是什么?
【发布时间】:2013-11-12 02:03:20
【问题描述】:

我已将 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")

有谁知道完成此操作的适当语法吗?

【问题讨论】:

  • 现在,我已经继续修改了 ommongodb 插件,以解析占位符字符串“%YEAR%”、“%MONTH%”、“%DAY%”、“%”的传入集合名称HOUR%”并根据当前时间自己进行替换。
  • 您有没有找到更好的方法来做到这一点?如果没有,您介意分享您所做的更改吗?
  • @sshow 我在这里记录了我如何使用 ommongodb 插件配置 rsyslog:stackoverflow.com/questions/15894986/… 祝你好运!

标签: mongodb rsyslog


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2014-09-22
    • 2017-05-18
    • 1970-01-01
    • 2021-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-30
    • 1970-01-01
    相关资源
    最近更新 更多