【发布时间】:2015-07-09 19:52:57
【问题描述】:
我对 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)
【问题讨论】:
-
您的 logstash.stdout 文件中是否有任何内容? logstash.log 或 logstash.err 中是否有任何错误或警告?
-
为了更好地调试,我使用命令 bash logstash -f my.config 在 bash 中运行 logstash。配置文件包含上层配置......我只在控制台中得到“Logstash 启动完成” - 没有错误之后我没有收到任何调试输出(我应该这样认为)...... .stdout 文件中没有任何内容或.err.
-
尝试包含 -l /your-logfile.log 以获取来自 LS 的一些日志,这可能会帮助您找到问题
-
日志文件(如您提到的指定)已创建但仍为空。就像 udp 消息永远不会到达目标端口,尽管 tcpdump 说 13:33:26.821332 IP [someip].64697 > [localip].5960: UDP, length 180。根据 netstat,一旦我启动 logstash,我就启动了端口udp 0 0 :::5960 :::* 28199/java
标签: logging udp log4net logstash logstash-configuration