我有两个来源和一个目的地。我希望目标中使用的模板根据我从哪个来源接收日志事件而更改。
我已经能够使用重写规则创建SDATA字段,但是我找不到基于事件内容或源来更改模板的解决方案。
我最终将获得许多模板和许多资源,而我的目的地有多个工作人员。我不想使用多个目的地,因为这将需要我根据来自不同来源的工作量来平衡工作人员的数量,并且这会随时间而变化。
source s_syslog {
network( port(10514));
};
source s_firewall {
network( port(10515));
};
template t_template1 {
template("something something");
};
template t_template2 {
template("something else");
};
destination d_http {
http(
url("http://127.0.0.1:40000/logservice")
# if syslog
body(template(t_template1))
body(template(t_template2))
);
};
log {
source(s_syslog);
destination(d_http);
};
目标中使用的日志模板取决于日志源或事件内容。
编辑:
我可能已经接近解决方案了。我还无法弄清楚如何检查源作为条件或是否可能。不管我发现什么很奇怪,该测试也总是将其评估为True。
template-function t_default "$(if (\"${username}\" == \"root\")
\"TEMPLATE 1\"
\"TEMPLATE 2\"
)";
destination d_http {
http(
url("http://127.0.0.1:40000/logservice")
body("$(t_default)")
);
};