我有一个电器,可以通过TCP作为JSON流将日志发送到Rsyslog服务器。但是,它不会在系统日志消息中放置任何标头。发送的样本原始消息如下:
{"query_class":"C_INTERNET","source_ip":"10.1.1.1","query_type":"A","trans_id":502,"err_code":"NXDOMAIN","@type":"dns","dest_ip":"10.10.10.1","dest_port":53,"uid":"CDdCwH1lD2ToFS5y02","epochdate":1595000476.3491,"query":"www.google.com","@host":"host-10-01","rejected":true,"source_port":54764,"proto":"udp"}
Rsyslog将此消息转发到另一台服务器,并以以下格式放置标头(没有应用模板):
<13>Jun 16 10:43:09 host01.example.local
我不知道此标头来自哪里(消息中没有标头时,可能会应用默认配置)。
问题是,标头中缺少TAG,这会导致原始消息的解析不正确。
Rsyslog将日志转发到另一台计算机或将其写入文件时,其外观如下:
<13>Jun 16 10:43:09 host01.example.local {"query_class" "C_INTERNET","source_ip":"10.1.1.1","query_type":"A","trans_id":502,"err_code":"NXDOMAIN","@type":"dns","dest_ip":"10.10.10.1","dest_port":53,"uid":"CDdCwH1lD2ToFS5y02","epochdate":1595000476.3491,"query":"www.google.com","@host":"host-10-01","rejected":true,"source_port":54764,"proto":"udp"}
{"query_class"
超出并成为TAG(“:”已删除)。其余的将成为系统日志消息。
不幸的是,无法在源上进行任何更改以配置标头。 如何在Rsyslog中将此原始消息添加标头并将其转发到另一台远程计算机或将其写入文件?或者,如何更改默认标头配置以添加自定义processname标记(如果应用了默认配置)?
答案 0 :(得分:0)
rsyslog可能使用RSYSLOG_TraditionalForwardFormat
的{{1}}默认模板,即:
omfwd
定义您自己的模板,并在您的转发规则中使用它,例如:
template(name="RSYSLOG_TraditionalForwardFormat" type="string"
string="<%PRI%>%TIMESTAMP% %HOSTNAME% %syslogtag:1:32% %msg:::sp-if-no-1st-sp%%msg%")