我配置了一个简单的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配置中配置)。显然所有要求都是成功的。为什么弹性心跳仍然抱怨闭合连接?
答案 0 :(得分:1)
我也有同样的问题,但是使用https检查。似乎这是心跳中的错误,将在心跳版本6.5.0中修复。
以下是该问题在github上的链接:https://github.com/elastic/beats/issues/8588
提取请求:https://github.com/elastic/beats/pull/8660