我正在尝试将系统上的所有日志发送到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 ?
谢谢你花时间阅读这个问题。
答案 0 :(得分:0)
这是使用8.23 https://github.com/rsyslog/rsyslog/pull/1218上的 dynakey 参数解决的。
理论上它也可以使用 mode =" template" ,但当消息包含空格时它仍然无法正常工作。