将 rsyslog 消息保存到从 rawmsg 中提取文本的 dynafile

将 rsyslog 消息保存到从 rawmsg 中提取文本的 dynafile

我们有几个设备正在发送系统日志,不幸的是它们的主机名与服务上配置的实际名称不同

我正在运行最新的 rsyslog 版本。

目前我已将其保存为单独的 conf 文件:

template (name="stats" type="string" string="/logs/stats/host-%rawmsg:R,ERE,1,DFLT:gw_name="([^"]*)--end%-%$year%-%$month%-%$day%.log")

local4.*                action(type="omfile" dynaFile="stats")

这些不会生成日志文件。

原始消息示例

Mar 31 17:33:02 localhost root: log_type="stats", local_time="2021/03/31 17:33 BST", mx_ip="10.191.205.240",gw_name="Appliance_NAME", gw_ip="1.0.0.41", version="1.5.0.", model="1000", serial_no="1xxxxxx8", ssl_card="Yes", total_traffic="0", app_traffic="0", cpu="0"

这会将日志文件保存为 host-Appliance_NAME-2021-03-31

我们有一个过时的 rsyslog 版本 5.4,我们需要迁移到最新版本,因此出现这种情况。

答案1

模板中存在语法错误,在测试运行中可能会发现 ( rsyslogd -N1)。该部分string="/logs/...%rawmsg...gw_name="([^"]*)...在双引号内使用了双引号。您需要使用前面的反斜杠 来转义内部双引号...gw_name=\"([^\"]*)...

相关内容