1. php-fpm 的 status_path
php-fpm 和 nginx 一样 (nginx 的 stub_status),内建了个状态页,可以通过该状态页了解监控 php-fpm 的状态。
-
配置开启,找到 php-fpm 的配置文件,添加以下配置:
# 访问路径,可自定义 pm.status_path = /php-fpm-status
-
找到 nginx 的配置文件,添加以下配置:
http { # 在http中添加一个 server {} server { listen 80; # 提供给本地的zabbix-agent2服务使用,所以server_name设置为localhost server_name localhost; # 配置此路径 对应php-fpm配置中的pm.status_path 仅允许本地127.0.0.1访问(阻止外部访问) 用于Zabbix监控php-fpm时获取status信息 location /php-fpm-status { fastcgi_pass 127.0.0.1:9000; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $fastcgi_script_name; # 仅允许127.0.0.1访问 allow 127.0.0.1; deny all; } } }
-
配置完成,重载Nginx、php-fpm,打开上面配置的 status_path 页面 (localhost/php-fpm-status),如下图:
可以看到返回了一段文本,包含 php-fpm 的一些信息,Zabbix 监控时会解析这段文本拿到数据进行监控。
2. php-fpm 的 ping
ping 和 status_path 类似,也是一个状态页,主要用来检测 php-fpm 是否存活、是否可以响应请求。
-
配置开启,找到 php-fpm 的配置文件,添加以下配置:
# 访问路径,可自定义 ping.path = /php-fpm-ping # 还可以配置 ping.response , ping 页面的返回值 # 默认值为 ping.response = pong # 一般无特殊需求不需要更改
-
找到 nginx 的配置文件,添加以下配置:
http { # 在http中添加一个 server {} server { listen 80; # 提供给本地的zabbix-agent2服务使用,所以server_name设置为localhost server_name localhost; # 配置此路径 对应php-fpm配置中的ping.path 仅允许本地127.0.0.1访问(阻止外部访问) 用于Zabbix监控php-fpm时确认php-fpm的存活状态 location /php-fpm-ping { fastcgi_pass 127.0.0.1:9000; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $fastcgi_script_name; # 仅允许127.0.0.1访问 allow 127.0.0.1; deny all; } } }
-
配置完成,重载Nginx、php-fpm,打开上面配置的 ping 页面 (localhost/php-fpm-ping),如下图:
可以看到返回了一段文本,文本内容即 ping.response 配置的返回值,由于上文中没有配置,所以是默认值“pong”,Zabbix 监控时会获取到这段文本,确认 php-fpm 是否正常工作。
3. 配置模板:PHP-FPM by Zabbix agent
-
查看一下此模板的宏,从中选出我们需要填写的
基本监控需要填写:目标Nginx的 HOST、PORT、STATUS.PAGE、PING.PAGE、PING.REPLY
-
添加模板,添加宏,填入目标Nginx的HOST,填入上文Nginx中配置好的 PATH、PORT
-
保存,查看主机 -> 最新数据,稍等片刻即可获取到php-fpm相关的数据。