弹性心跳响应检查 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
我配置了一个简单的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