根据日志事件内容或源更改日志模板

时间:2019-05-14 13:22:43

标签: syslog-ng

我有两个来源和一个目的地。我希望目标中使用的模板根据我从哪个来源接收日志事件而更改。

我已经能够使用重写规则创建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)")
  );
};

0 个答案:

没有答案