我已经配置了一个简单的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检查),但是由于以下错误,心跳检测到该服务已关闭:



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

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

编辑

在虚拟docker网络上运行tcpdump / wireshark显示,该服务每十秒使用UP正确响应请求(如心跳配置中所配置)。因此,显然所有请求都成功。为什么 flex 心跳仍然对闭合连接感到抱怨?

最佳答案

我有同样的问题,但使用https检查。似乎是心跳中的错误,将在心跳6.5.0版中修复。

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

关于docker - 弹性心跳响应检查TCP错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47952070/

10-12 23:50