我有以下 rsyslog 配置:
template(name="logz.io" type="string" string="[TOKEN]
<%pri%>%protocol-version% %timestamp:::date-rfc3339% [hostname]
%app-name% %procid% %msgid% tag=\"syslog\"] %msg%\n")
# Send messages over TCP using the template.
action(type="omfwd" protocol="tcp" target="listener.logz.io" port="5001"
template="logz.io" StreamDriver="gtls" StreamDriverMode="1"
StreamDriverAuthMode="x509/name" StreamDriverPermittedPeers="*.logz.io")
现在我想type="string"
按照以下其中一个消息类型.所以我可以创造个别模板对于每种类型
template(name="logz.io_nginx" type="nginx" string="[TOKEN]
<%pri%>%protocol-version% %timestamp:::date-rfc3339% [hostname]
%app-name% %procid% %msgid% tag=\"nginx\"] %msg%\n")
然而,这意味着操作应该根据类型调用正确的模板。
- 我如何配置 rsyslog 以使用具有不同模板的相同操作?
- 我是否可以只有一个模板,但例如
type
根据消息类型动态设置参数?
答案1
rsyslog 应该如何知道消息类型,它是 logz 概念而不是 rsyslogd 概念?您可能必须根据 syslogtag/programname 区分操作,使用 if 语句,并在 if-then-block 中选择适当的模板。