我对 Logstash 还很陌生,但我花了相当长的时间试图解决这个问题,但没有成功。我通过 udp 从不同服务器上的多个应用程序发送日志进行记录。 这是logstash 配置:
input{
udp{
port => 5960
type => "log4net"
}
}
filter {
grok {
match => ["message", "(?m)%{TIMESTAMP_ISO8601:sourceTimestamp}\s*%{WORD:System}\s*%{LOGLEVEL:logLevel}\s*-\s*%{WORD:logger}\s*-\s*%{NOTSPACE:source}\s*%{NOTSPACE:action}\s*%{UUID:transactionId}\s*%{GREEDYDATA:message}"]
}
}
output {
elasticsearch {
protocol => "http"
host => "[mylocalip]"
port => "9200"
}
stdout { codec => rubydebug }
}
不幸的是没有记录任何消息。我检查并确保启动 Logstash 时该端口可用。我还正确配置了防火墙以允许 udp 消息通过此端口。当我 tcpdump 时,我可以看到 udp 消息到达。另外我尝试了另一种输入方法(来自 nginx 的日志),它工作正常。
我究竟做错了什么?
ElasticSearch 版本-1.4
Logstash 版本 - 1.5(最初也尝试使用 1.4)
操作系统 - CentOs 6.5
Java - OpenJDK 运行时环境 (rhel-2.5.5.1.el6_6-x86_64 u79-b14)
您很可能错过了通往发件人的路线。如果是这种情况,会发生什么: