Logstash udp输入无效

时间:2015-04-30 07:59:34

标签: logging udp log4net logstash logstash-configuration

我是新手,但我已经花了相当多的时间试图做到这一点并没有成功。我通过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)

2 个答案:

答案 0 :(得分:0)

很可能您错过了发件人的路线。如果是这种情况,会发生什么:

  1. 您收到发送到您的logstash IP /端口的数据包。
  2. 你在tcpdump中看到它,因为它是网络层。
  3. 然后内核尝试访问发件人(即使是UDP)。
  4. 如果没有路由,它会失败,因此丢弃UDP数据包,你就不会在应用程序级别上看到它。

答案 1 :(得分:0)

  1. 检查logstash日志以查看它打开端口的主机。默认值为0.0.0.0。哪个不会到达。在udp定义中添加“host”参数。
  2. 使用端口检查工具(如Windows上的qryport)检查是否实际收听了端口。