Fedora FC39下Monit监控Domoticz服务配置语法错误求助
Monit配置语法错误修正方案
你的Monit配置存在多处语法问题,导致执行monit -t时触发syntax error 'FAILED'报错,具体错误点及修正后的配置如下:
错误点分析
IF FAILED语句缺少明确的检查关联逻辑,且参数拆分方式不符合Monit解析规则,Monit无法识别独立成行的ADDRESS、PORT等参数归属。STATUS = 200位置错误,它属于HTTP检查的条件参数,不能作为独立行存在。THEN exec语句未闭合引号,且else if分支语法混乱,导致解析中断。- 条件块的缩进和换行逻辑不符合Monit的语法要求,规则块未正确关联。
修正后的配置
CHECK PROGRAM domoticz PATH "/usr/bin/systemctl --quiet is-active domoticz" TIMEOUT 5 SECONDS START PROGRAM = "/bin/systemctl start domoticz" STOP PROGRAM = "/bin/systemctl stop domoticz" IF FAILED ADDRESS 127.0.0.1 PORT 8080 PROTOCOL HTTP REQUEST "/json.htm?type=command¶m=getversion" STATUS 200 FOR 2 CYCLES THEN exec "/bin/systemctl restart domoticz" ELSE IF SUCCEEDED THEN exec "/var/lib/domoticz/pushover-notification.sh 'domoticz restarted'" IF 5 restarts within 5 cycles THEN exec "/sbin/reboot"
关键修正说明
- 将HTTP检查的所有参数(地址、端口、协议、请求路径、状态码)整合到
IF FAILED条件语句中,确保Monit能正确识别完整的检查规则。 - 为每个
exec命令闭合引号,拆分else if分支为独立逻辑块,避免语法解析混乱。 - 调整
FOR 2 CYCLES的位置,使其与对应的HTTP检查条件关联。
修正后执行monit -t即可通过配置校验,正常启动Monit监控。
内容的提问来源于stack exchange,提问作者user18966243
相关产品推荐
相关产品推荐

