弹性心跳响应检查 TCP 错误

Elastic Heartbeat response check TCP error

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

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

有效。监控配置还支持通过设置keycheck.response.body

来检查响应的内容
    ...
    mode: all
    check:
      response:
        status: 200
        body: UP

服务 returns UP(使用 curl 检查),但心跳检测到服务已关闭,原因如下:

read tcp x.y.z.a:port->b.c.d.e:80: use of closed network connection

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

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

编辑

虚拟 docker 网络上的

运行 tcpdump/wireshark 显示该服务每十秒以 UP 正确响应请求(如心跳配置中所配置)。所以显然所有请求都成功了。为什么elastic heartbeat还在抱怨关闭连接?

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

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