zabbix监控php-fpm

1、启用php-fpm的状态功能

[root@web01 ~]# vim /etc/php-fpm.d/www.conf

121 pm.status_path = /php_status

[root@web01 ~]# systemctl restart php-fpm.service        #重启php服务

2、nginx中开启php的状态访问

[root@web01 ~]# vim /etc/nginx/nginx.conf

location ~ ^/(php_status|ping)$ {

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

include fastcgi_params;

}

修改完后重启nginx

[root@web01 ~]# nginx -t

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok

nginx: configuration file /etc/nginx/nginx.conf test is successful

[root@web01 ~]# nginx -s reload

3、命令行手动测试取值

[root@web01 ~]# curl http://127.0.0.1/php_status

pool: www

process manager: dynamic

start time: 13/Jun/2018:14:32:15 +0800

start since: 104

accepted conn: 1

listen queue: 0

max listen queue: 0

listen queue len: 128

idle processes: 4

active processes: 1

total processes: 5

max active processes: 1

max children reached: 0

slow requests: 0

php-fpm status的含义

pool                    php-fpm pool(资源池)的名称,大多数情况下为www

process manager        进程管理方式,现今大多都为dynamic,不要使用static

start time                上次启动的时间

start since            已运行了多少秒

accepted conn    pool        接收到的请求数

listen queue            处于等待状态中的连接数,如果不为0,需要增加php-fpm进程数

max listen queue        从php-fpm启动到现在处于等待连接的最大数量

listen queue len        处于等待连接队列的套接字大小

idle processes            处于空闲状态的进程数

active processes        处于活动状态的进程数

total processess        进程总数

max active process        从php-fpm启动到现在最多有几个进程处于活动状态

max children reached    当php-fpm试图启动更多的children进程时,却达到了进程数的限制,达到一次记录一次,如果不为0,需要增加php-fpm pool进程的最大数

slow requests            当启用了php-fpm slow-log功能时,如果出现php-fpm慢请求这个计数器会增加,一般不当的Mysql查询会触发这个值

4、定义监控项的key值

创建zabbix_agentd关联php_ststus的子配置文件,不使用脚本取出php-fpm的信息

[root@web01 ~]# cd /etc/zabbix/zabbix_agentd.d/

[root@web01 zabbix_agentd.d]# vim php_status.conf

UserParameter=php-fpm.status[*],/usr/bin/curl -s "http://127.0.0.1/php_status?xml" | grep "<$1>" | awk -F'>|<' '{ print $$3}'

[root@web01 zabbix_agentd.d]# systemctl restart zabbix-agent.service    #重启服务

取出php-fpm信息的另外一种取值方法

UserParameter=php-fpm.status[*],/usr/bin/curl http://127.0.0.1/php_status?json 2>/dev/null|jq '."$1"'|sed 's#"##g'

5、web界面配置或导入模板

点击:配置——>模板——>导入,选择下载的模板文件并上传

6、主机链接模板

7、模板调整和优化

7.1 通过zabbix内置key,proc.num[<name>,<user>,<state>,<cmdline>],监控php-fpm的进程数

[root@zabbix ~]# zabbix_get -s 192.168.1.7 -k "proc.num[php-fpm]"    #命令行取值

10

[root@zabbix ~]# ab -n 10000 -c 100 http://10.0.0.7/index.php            #利用apache工具进行压力测试

其中ab -n 指定次数 -c 指定并发次数 最后接url

[root@zabbix ~]# zabbix_get -s 192.168.1.7 -k "proc.num[php-fpm]"    #再次取值

36

可以发现上面的值发生了变化,所以这个值需要我们自定义监控项来进行监控

web界面自定义监控项

7.2 创建触发器

根据实际情况创建需要的触发器触发报警

 

博主原创文章,转载请务必注明出处

原文地址:https://www.cnblogs.com/ssgeek/p/9232238.html