Monit监控HTTP响应时间异常:响应达标却触发Speed Failed
Monit响应时间监控异常问题解决
问题根源
你的Monit配置语法逻辑搞反了,还把响应时间条件和服务连通性条件堆在了同一个if failed块里,导致判定完全不符合预期。
Monit里,把responsetime写在if failed块中的逻辑是响应时间低于设定值就判定失败——这就是为什么你实际响应时间158ms远低于500ms,却触发了Speed failed。后来你加的<1s写法也不符合Monit语法,自然也解决不了问题。
正确配置写法
把服务连通性检查和响应时间超限检查拆成两个独立条件,逻辑就清晰了:
check process fhemPort8086RT with pidfile /opt/fhem/fhem.pid # 先检查HTTP服务能不能正常访问 if failed host 127.0.0.1 port 8086 protocol http request "/fhem?detail=monit_test" timeout 4 seconds then alert # 再检查响应时间是否超过500ms,超过就告警 if response time > 500 ms then alert
关键说明
- Monit官方支持的响应时间超限告警语法是
if response time > X ms,直接表达“响应时间超过X就触发动作”,不会搞混逻辑。 if failed块里的responsetime是用来检测异常短的响应(比如无效请求瞬间返回),不是用来监控超时的,别搞混场景。- 你看到的那些奇怪的状态提示(比如“responsetime equal to 500 ms”),是Monit对错误配置的判定描述,不是实际响应时间的对比结果,不用管它。
内容的提问来源于stack exchange,提问作者riker1
相关产品推荐
相关产品推荐

