弹性心跳响应检查TCP错误

时间:2017-12-23 11:25:59

标签: docker elasticsearch tcp health-monitoring

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

  

读取tcp x.y.z.a:port-> b.c.d.e:80:使用封闭式网络连接

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

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

修改

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

1 个答案:

答案 0 :(得分:1)

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

以下是该问题在github上的链接:https://github.com/elastic/beats/issues/8588
提取请求:https://github.com/elastic/beats/pull/8660