Logstash udp 输入不起作用

问题描述 投票:0回答:2

我对 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)

logging udp log4net logstash logstash-configuration
2个回答
0
投票

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

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

0
投票
  1. 检查logstash日志以查看它在哪个主机上打开端口。默认值为 0.0.0.0。这是不会达到的。在udp定义中添加“host”参数。
  2. 使用端口检查工具(如Windows上的qryport)检查端口是否被实际监听。
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.