gpt4 book ai didi

rsyslog - rsyslog 模板中的 %procid% 有时为空

转载 作者:行者123 更新时间:2023-12-02 04:23:55 25 4
gpt4 key购买 nike

我正在尝试将 rsyslog 配置为以 RFC5424 格式输出。这意味着 PROCID 必须在 syslog header 中输出。如果没有 header ,它应该在其位置输出一个破折号 (-)。然而,有些事件输出只是空白,有些有实际值。

这是在 Amazon Linux 上运行的 rsyslogd 5.8.10。

这里是配置行:

$template CustomFormat,"<%PRI%>1 %timegenerated:1:23:date-rfc3339%-00:00 %HOSTNAME% %app-name% b%procid%b %msgid% %STRUCTURED-DATA%%msg:::sp-if-no-1st-sp%%msg:::drop-last-lf%\n"
$ActionFileDefaultTemplate CustomFormat

请注意,我在 %procid% 的每一侧都放置了一个“b”以使其更加可见(这部分不符合 RFC5424)。这是两行示例输出。

<87>1 2019-06-19T20:03:01.929-00:00 ip-10-90-0-15 crond b29408b - - pam_unix(crond:account): expired password for user root (password aged)
<85>1 2019-06-19T20:17:18.150-00:00 ip-10-90-0-15 sudo bb - - ssm-user : TTY=pts/0 ; PWD=/ ; USER=root ; COMMAND=/bin/vi /etc/rsyslog.conf

第一行是正确的,但第二个例子应该是“b-b”而不是“bb”。我应该怎么做才能使空白的 %procid% 显示为破折号?它适用于 %msgid% 和 %STRUCTURED-DATA%。

是否有更好的方法来获取 RFC5424 输出? (我必须使用 -00:00 而不是 Z。)

最佳答案

可能有更好的方法,但您可以尝试在模板中使用 Rainer 脚本变量而不是属性,如果 procid 是,则将此变量设置为 "-"空的。例如,

$template CustomFormat,"<%PRI%>1 ... b%$.myprocid%b ..."
$ActionFileDefaultTemplate CustomFormat
if ($procid == "") then {
set $.myprocid = "-";
} else {
set $.myprocid = $procid;
}
*.* ./outputfile

只需确保 if 语句位于任何操作语句之前。请注意,您不能使用 set 更改 procid 属性本身。

关于rsyslog - rsyslog 模板中的 %procid% 有时为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56675373/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com