You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Monit配置监控PHP-FPM Unix套接字文件时出现语法错误的问题排查

Monit配置监控PHP-FPM Unix套接字文件时出现语法错误的问题排查

嘿,我来帮你搞定这个问题!你碰到的syntax error ‘unixsocket’报错,核心原因其实很简单——你把Unix套接字的检查逻辑放在了check file块里,但Monit的check file仅支持文件相关的测试(比如存在性、权限、大小等),unixsocket属于进程或套接字连接性测试,根本不能在check file的上下文里用。

正确的配置写法

你需要用check process来监控PHP-FPM进程(同时关联pid文件),然后在这个进程检查块里添加Unix套接字的可用性测试。这样既能监控进程状态,又能同时检查各个域名对应的套接字是否正常。

给你一个修正后的完整配置示例:

check process php7.3-fpm with pidfile /var/run/php/php7.3-fpm.pid
    start program = "/usr/sbin/service php7.3-fpm start" with timeout 60 seconds
    stop program = "/usr/sbin/service php7.3-fpm stop"
    if does not exist then restart
    if failed unixsocket /run/php/php7.3-fpm-domain.co.uk.sock then restart
    if failed unixsocket /run/php/php7.3-fpm-domain2.co.uk.sock then restart
    if failed unixsocket /run/php/php7.3-fpm-domain3.co.uk.sock then restart

额外验证小步骤

虽然你用的Monit 5.31.0确实支持unixsocket选项,但可以顺手确认下你的Monit版本是否编译了Unix套接字支持:
运行命令:

monit -V

查看输出里有没有+Unix sockets的标识,有就说明没问题;如果没有,可能需要重新编译Monit并开启这个功能。

补充说明

如果你只想单独监控某个Unix套接字文件的可用性,也可以用check unixsocket块,比如:

check unixsocket php7.3-fpm-domain-sock with path /run/php/php7.3-fpm-domain.co.uk.sock
    if failed connection then restart program = "/usr/sbin/service php7.3-fpm start" with timeout 60 seconds

但结合你的需求(监控PHP-FPM进程+多个套接字),用check process的方式更简洁统一。

备注:内容来源于stack exchange,提问作者Andrew Newby

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 13:24:52