【发布时间】:2017-12-23 11:25:58
【问题描述】:
我已经配置了一个简单的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检查),但心跳检测到服务已关闭,由于以下错误:
read tcp x.y.z.a:port->b.c.d.e:80: 使用关闭的网络连接
服务和心跳都作为 docker 容器运行并共享一个公共网络(显然,否则第一个配置将不起作用)。
错误的原因可能是什么?是服务问题(即过早关闭连接)还是心跳问题?我有另一个正在运行的服务(一个简单的 node.js express 应用程序),它没有表现出这种行为(所以这会指向一个服务问题)。如何解决问题?
编辑
在虚拟 docker 网络上运行 tcpdump/wireshark 表明该服务每十秒正确响应 UP 的请求(如在心跳配置中配置的那样)。所以显然所有的请求都是成功的。为什么弹性心跳还在抱怨关闭的连接?
【问题讨论】:
-
日志中有任何内容吗?当网络连接在读取或写入底层连接时遇到任何错误时,IMO“使用关闭的网络连接”就会发生。如果日志中没有错误,也许debug可以显示一些相关细节。
-
我尝试调试,但没有看到任何有趣的东西。我会再试一次,也许我只是错过了它
标签: docker elasticsearch tcp health-monitoring