【问题标题】:why is filebeat unable to connect to logstash为什么filebeat无法连接到logstash
【发布时间】:2020-06-04 02:13:04
【问题描述】:

我正在尝试将 log4net 日志发送到 logstash 以进行解析,然后在 elasticsearch 中结束。我已将该端口添加到 Windows 防火墙安全设置并允许所有连接,包括 5044 和 9600。

在 filebeat 日志中,我收到此错误

pipeline/output.go:100  Failed to connect to backoff(async(tcp://[http://hostname:5044]:5044)): lookup http://hostname:5044: no such host

Filebeat.yml(Logstash 部分)

#----------------------------- Logstash output --------------------------------
output.logstash:
  # The Logstash hosts
  hosts: ["http://hostname:5044"]

  # Optional SSL. By default is off.
  # List of root certificates for HTTPS server verifications
  #ssl.certificate_authorities: ["/etc/pki/root/ca.pem"]

  # Certificate for SSL client authentication
  #ssl.certificate: "/etc/pki/client/cert.pem"

  # Client Certificate Key
  #ssl.key: "/etc/pki/client/cert.key"

#================================ Processors =====================================

Logstash.yml

我已将 http.host 设置为 0.0.0.0

# ------------ Metrics Settings --------------
#
# Bind address for the metrics REST endpoint
#
 http.host: "0.0.0.0"
#
# Bind port for the metrics REST endpoint, this option also accept a range
# (9600-9700) and logstash will pick up the first available ports.
#
# http.port: 9600-9700

Logstash 过滤器配置

input {
  beats {
    port => "5044"
  }
}

filter {
    if [type] == "log4net" {
        grok {
            match => [ "message", "%{TIMESTAMP_ISO8601:timestamp} \[%{NUMBER:threadid}\] %{WORD:level}\s*%{DATA:class} \[%{DATA:NDC}\]\s+-\s+%{GREEDYDATA:message}" ]
        }
        date {
            match => ["timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss"]
            remove_field => ["timestamp"]
        }
        mutate {
            update => {
                "type" => "log4net-logs"
            }
        }
    }
}

output {
  elasticsearch {
    hosts => ["http://hostname:9200"]
    index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
    #user => "elastic"
    #password => "changeme"
  }
}

【问题讨论】:

  • http://hostname:5044: no such host 表示hostname 无法正确解析。您确定它是有效的主机名吗?
  • 如果您确定主机名,那么可以尝试使用完全限定域名
  • @Val 我使用了一个有效的主机名,它与我在 logstash 配置中添加到 ElaststicSearch 主机的主机名相同(hostname:9200),并且 filebeat 似乎可以毫无问题地将数据发送到 elasticsearch。但与端口 5044 相同的主机名不适用于 logstash
  • 所有东西都在同一台主机上运行吗(Filebeat、Logstash、ES)?您的 Logstash 管道(输入/过滤器/输出)配置如何?
  • @Val Filebeat 正在本地运行并推送到远程服务器。 ElasticSearch 和 Logstash 都安装在该远程服务器上。因此两者的主机名相同,并且我允许传入流量到端口 9200、5044、9600,这些端口是 elasticsearch 和 logstash 的端口

标签: elasticsearch logstash filebeat elk


【解决方案1】:

您可以尝试使用主机名:

hosts: ["hostname:5044"]

【讨论】:

  • 现在我得到 Failed to connect to backoff(async(tcp://hostname:5044)): dial tcp hostIp:5044: connectex: 连接尝试失败,因为连接方在之后没有正确响应一段时间,或建立连接失败,因为连接的主机没有响应。
  • 我认为是因为 Logstash 没有监听该端口,我确实将该端口设置为入站规则以允许所有传入连接,我可以看到 9600 正在监听但不是 5044
  • @ifelabolz 你能用--log.level=debug 重启Logstash 并用你得到的日志更新你的问题吗
【解决方案2】:

正如@Adrian Dr 所说,尝试使用:

hosts: ["hostname:5044"]

但也将logstash绑定到单个端口:

http.port: 9600

【讨论】:

    【解决方案3】:

    同样的错误。因为你提到了协议。

    您必须从主机字段中删除“http”。

    hosts: ["somename.com:5044"] 
    

    或ip

    hosts: ["10.10.10.1:5044"] 
    

    【讨论】:

      猜你喜欢
      • 2020-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-20
      • 1970-01-01
      • 2021-03-07
      相关资源
      最近更新 更多