所需的 rsyslog 字段未在日志中打印

问题描述 投票:0回答:1

我有一个关于未在日志消息中显示的必需 rsyslog 字段的查询。

环境细节 – 有多个微服务将日志发送到另一个名为 Log Transformer 的应用程序。日志转换器应用程序正在丰富这些日志消息中存在的字段,然后将所有日志发送到 rsyslog 服务器。供参考,rsyslog 的版本是 8.2004.0

要求 – 日志,在配置文件中转储到 rsyslog 服务器中,应包含以下字段:

Priority
Hostname
Program
TAG
Message
facility_code
facility
Severity
severity_code
Timestamp

rsyslog配置如下:

$MaxMessageSize 32768

# Remote
module(load="imtcp")
input(type="imtcp" port="514")
module(load="imudp")
input(type="imudp" port="514")

$template logstreamingfmt,"<%PRI%>%TIMESTAMP% %HOSTNAME% %app-name% %procid% %syslogfacility% %syslogfacility-text% %syslogpriority% %syslogpriority-text% %syslogseverity% %syslogseverity-text% %syslogtag%%msg%\n"

*.* -/var/log/log-transformer.log

以下是日志文件中打印的一些示例消息,其中并非所有字段都出现在日志中:

2023-03-02T12:27:19.308+00:00 - microservice1-7dcd9b4c77-s6xwh INFO  [com.test.microserviceTest] (Thread-89 (ActiveMQ-client-global-threads)) Processing command get all fields

有人可以建议这里可能出什么问题吗。

rsyslog 配置文件中给定的模板是否不正确。

$template logstreamingfmt,"<%PRI%>%TIMESTAMP% %HOSTNAME% %app-name% %procid% %syslogfacility% %syslogfacility-text% %syslogpriority% %syslogpriority-text% %syslogseverity% %syslogseverity-text% %syslogtag%%msg%"

如何在 rsyslog 服务器中检查上游系统正在使用哪些原始消息,因为那样的话,我将能够确定原始消息中是否存在日志中的预期字段。

logging syslog rsyslog
1个回答
0
投票

登录

/var/log/log-transformer.log
时,您似乎没有应用模板。

要应用模板,修改配置如下:

*.* -/var/log/log-transformer.log;logstreamingfmt

或者,您可以使用 RainerScript 语法进行 rsyslog 配置,(在大多数情况下) 可以使配置更易于读写。这是您在 RainerScript 中的等效配置:

template(
    name="logstreamingfmt"
    type="string"
    string="<%PRI%>%TIMESTAMP% %HOSTNAME% %app-name% %procid% %syslogfacility% %syslogfacility-text% %syslogpriority% %syslogpriority-text% %syslogseverity% %syslogseverity-text% %syslogtag%%msg%\n"
)

action(type="omfile" file="/var/log/log-transformer.log" template="logstreamingfmt")
© www.soinside.com 2019 - 2024. All rights reserved.