我目前正在通过syslogs
将传入的rsyslog
转发到local logstash
端口。我目前正在使用/etc/rsyslog.d/json-template.conf
中的以下模板
我的json-template.conf
内容如下:
template(name="json-template"
type="list") {
constant(value="{")
constant(value="\"@timestamp\":\"") property(name="timereported" dateFormat="rfc3339")
constant(value="\",\"@version\":\"1")
constant(value="\",\"message\":\"") property(name="msg" format="json")
constant(value="\",\"sysloghost\":\"") property(name="hostname")
constant(value="\",\"severity\":\"") property(name="syslogseverity-text")
constant(value="\",\"facility\":\"") property(name="syslogfacility-text")
constant(value="\",\"programname\":\"") property(name="programname")
constant(value="\",\"procid\":\"") property(name="procid")
constant(value="\"}\n")
}
在
/etc/rsyslog.conf
中转发的配置:*.* @@127.0.0.1:10514;json-template
rsyslog
能够将传入的syslogs
发送到端口10514,但无法解析syslogs
中有意义的信息。注意:我为
UDP
设置了相同的设置,并且rsyslog
能够根据json模板解析所有msg。我尝试使用UDP配置rsyslog的相同配置:
在/etc/rsyslog.conf中转发的配置:
*.* @127.0.0.1:10514;json-template
rsyslog
能够解析syslog中的所有内容(时间戳,消息,sysloghost)打开tcp端口以进行tcp转发和打开udp端口以进行udp转发的所有必要配置,请参见以下内容:
对于TCP:
sudo firewall-cmd --zone=public --add-port=10514/tcp
对于udp:
sudo firewall-cmd --zone=public --add-port=10514/udp
但是我唯一无法弄清楚的是我缺少使用TCP转发解析syslog的内容。
预期结果:rsyslog应该能够按照json模板解析系统日志
最佳答案
我发现了问题。 json-template发送JSON而不是RFC3164或RFC5424格式。
因此我们必须在logstash配置文件中添加一个过滤器,以按原样转发JSON。
我的logstash配置文件如下所示:
input {
tcp {
host => "127.0.0.1"
port => 10514
type => "rsyslog"
}
}
# This is an empty filter block. You can later add other filters here to further process
# your log lines
filter {
json {
source => "message"
}
if "_jsonparsefailure" in [tags] {
drop {}
}
}
# This output block will send all events of type "rsyslog" to Elasticsearch at the configured
# host and port into daily indices of the pattern, "logstash-YYYY.MM.DD"
output {
if [type] == "rsyslog" {
elasticsearch {
hosts => [ "localhost:9200" ]
}
}
}
关于elasticsearch - 为什么rsyslog无法使用通过TCP转发到某个端口的json模板解析传入的syslog(例如10514)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57275158/