rsyslog操作中的动态密钥名称

时间:2016-08-28 10:19:03

标签: logging redis rsyslog

我正在尝试将系统上的所有日志发送到redis数据库。为此我 在文件“/etc/rsyslog.d/redis.conf”中具有以下配置 我按照here的说明使用队列模式。继
是我的配置:

module(load="omhiredis")

action(
  name="push_redis"
  type="omhiredis"
  mode="queue"
  key="testqueue"
)          

问题:
上面的配置将日志写入redis数据库,但是将“密钥”写入 对于所有日志保持相同,即“testqueue”。

Expected Output :   

我想,当一个程序记录时,应该用redis创建一个新的密钥,它与
相同 该计划的名称。然后我可以检查
的日志 每个程序分开。

Attempts :

我尝试使用以下过滤器:

if $programname == 'logger' then {
  action(
      name="push_redis"
      type="omhiredis"
      mode="queue"
      key="logger"
    )
}  

但是我必须为每个程序编写一个过滤器,这是可能的 但不是一个可以接受的解决方案。

Is there any way to create a key dynamically when a program logs into redis ?

谢谢你花时间阅读这个问题。

1 个答案:

答案 0 :(得分:0)

这是使用8.23 https://github.com/rsyslog/rsyslog/pull/1218上的 dynakey 参数解决的。

理论上它也可以使用 mode =" template" ,但当消息包含空格时它仍然无法正常工作。