【问题标题】:Elastic Heartbeat response check TCP error弹性心跳响应检查 TCP 错误
【发布时间】:2017-12-23 11:25:58
【问题描述】:

我已经配置了一个简单的heartbeat 6.1 监视器:

heartbeat.monitors:
  - type: http
    schedule: '@every 10s'
    urls:
      - 'http://service/status'
    mode: all
    check:
      response:
        status: 200

有效。监控配置还支持通过设置键check.response.body来检查响应的内容

    ...
    mode: all
    check:
      response:
        status: 200
        body: UP

服务返回UP(用curl检查),但心跳检测到服务已关闭,由于以下错误:

read tcp x.y.z.a:port->b.c.d.e:80: 使用关闭的网络连接

服务和心跳都作为 docker 容器运行并共享一个公共网络(显然,否则第一个配置将不起作用)。

错误的原因可能是什么?是服务问题(即过早关闭连接)还是心跳问题?我有另一个正在运行的服务(一个简单的 node.js express 应用程序),它没有表现出这种行为(所以这会指向一个服务问题)。如何解决问题?

编辑

在虚拟 docker 网络上运行 tcpdump/wireshark 表明该服务每十秒正确响应 UP 的请求(如在心跳配置中配置的那样)。所以显然所有的请求都是成功的。为什么弹性心跳还在抱怨关闭的连接?

【问题讨论】:

  • 日志中有任何内容吗?当网络连接在读取或写入底层连接时遇到任何错误时,IMO“使用关闭的网络连接”就会发生。如果日志中没有错误,也许debug可以显示一些相关细节。
  • 我尝试调试,但没有看到任何有趣的东西。我会再试一次,也许我只是错过了它

标签: docker elasticsearch tcp health-monitoring


【解决方案1】:

我有同样的问题,但使用 https 检查。似乎这是 Heartbeat 中的一个错误,将在 Heartbeat 版本 6.5.0 中修复。

这是github上问题的链接:https://github.com/elastic/beats/issues/8588
拉取请求:https://github.com/elastic/beats/pull/8660

【讨论】:

  • 啊,这就解释了。谢谢你的回答!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-01
  • 1970-01-01
相关资源
最近更新 更多