前几天弄了个Nginx 服务监控,今天再试试php服务的监控

操作系统: CentOS 7.2

PHP版本:5.6.30

zabbix版本:2.2.5

发现php-fpm和Nginx一样都有自身就具备可提供查看的状态页面,所以我们就可以在配置档案里开启它


首先查看你的php设定档是否开启了状态页面查看的功能

#cat/data0/php/etc/php-fpm.conf|grepstatus_path;pm.status_path=/status


如果情况同上,那说明还没有开启,故我们就修改配置,让它支持查看php-fpm status

#vim/data0/php/etc/php-fpm.confpm.status_path=/status---去掉;号注释

保存退出


重启php-fpm服务,让查看status功能生效

#pkill-9php-fpm#/data0/php/sbin/php-fpm

在Nginx配置上添加支持获取PHP status的设定

#vim/data0/nginx/conf/nginx.conf##在server模块内添加即可server{listen80;server_namewww.sss.com;#20170701php-fpmstatusforzabbixtofetchdatalocation~^/(status|ping)${includefastcgi_params;fastcgi_pass172.17.0.2:9000;fastcgi_paramSCRIPT_FILENAME$document_root$fastcgi_script_name;}#20170701php-fpmstatusforzabbixtofetchdataend}

注:因为我的PHP是在docker内运行的,所以上面的fatstcgi_pass 要根据你自己的情况而定

设置完毕,保存退出,重启Nginx服务,让设定生效

#/data0/nginx/sbin/nginx-tnginx:theconfigurationfile/data0/nginx/conf/nginx.confsyntaxisoknginx:configurationfile/data0/nginx/conf/nginx.conftestissuccessful#/data0/nginx/sbin/nginx-sreload

至此,PHP、Nginx准备工作完毕,现在可以开始查看成效

查看你的status页面

有两种方式:

1.在本地访问

curl http://网址/status

#curlhttp://www.sss.com/statuspool:wwwprocessmanager:dynamicstarttime:30/Jun/2017:14:14:02+0800startsince:94540acceptedconn:75834listenqueue:0maxlistenqueue:2listenqueuelen:128idleprocesses:99activeprocesses:1totalprocesses:100maxactiveprocesses:9maxchildrenreached:0slowrequests:122


2.打开浏览器访问

http://网址/status

内容解释:

pool:www--php-fpm池名processmanager:dynamic--进程管理方式starttime:30/Jun/2017:14:14:02+0800--启动日期,一旦你对php-fpm服务更新,它也同样会更新startsince:94540--运行至现在的时长acceptedconn:75834--当前池所接受的请求数listenqueue:0--请求等待队列数,若此值大于0,就要增加php-fpm进程数了maxlistenqueue:2--最高的请求等待队列数listenqueuelen:128--socket等待队列长度idleprocesses:99--空闲进程数activeprocesses:1--活动的进程数totalprocesses:100--总进程数maxactiveprocesses:9--最大活动进程数maxchildrenreached:0--大道进程最大数限制次数,同样若此值不为0,需要将最大进行时进程扩大来满足需求slowrequests:122--缓慢请求数

php-fpm status 页面非常友善的地方是在配合zabbix监控时,不在需要你编写shell脚本来获取数据了,不错吧,又可以偷懒了!

不信,在你的被监控主机(即PHP-fpm主机)上试下下面的做法

1.访问URL末尾添加?xml

curlhttp://www.sss.com/status?xml<?xmlversion="1.0"?><status><pool>www</pool><process-manager>dynamic</process-manager><start-time>1498803242</start-time><start-since>95730</start-since><accepted-conn>77180</accepted-conn><listen-queue>0</listen-queue><max-listen-queue>2</max-listen-queue><listen-queue-len>128</listen-queue-len><idle-processes>99</idle-processes><active-processes>1</active-processes><total-processes>100</total-processes><max-active-processes>9</max-active-processes><max-children-reached>0</max-children-reached><slow-requests>122</slow-requests>

2.访问URL末尾添加?html

curlhttp:/www.sss.com/devopsfjjerpstatus?html<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"xml:lang="en"lang="en"><head><title>PHP-FPMStatusPage</title></head><body><table><tr><th>pool</th><td>www</td></tr><tr><th>processmanager</th><td>dynamic</td></tr><tr><th>starttime</th><td>30/Jun/2017:14:14:02+0800</td></tr><tr><th>startsince</th><td>95954</td></tr><tr><th>acceptedconn</th><td>77437</td></tr><tr><th>listenqueue</th><td>0</td></tr><tr><th>maxlistenqueue</th><td>2</td></tr><tr><th>listenqueuelen</th><td>128</td></tr><tr><th>idleprocesses</th><td>99</td></tr><tr><th>activeprocesses</th><td>1</td></tr><tr><th>totalprocesses</th><td>100</td></tr><tr><th>maxactiveprocesses</th><td>9</td></tr><tr><th>maxchildrenreached</th><td>0</td></tr><tr><th>slowrequests</th><td>122</td></tr></table></body></html>

3.访问URL末尾添加?json

#curlhttp://www.sss.com/status?json{"pool":"www","processmanager":"dynamic","starttime":1498803242,"startsince":96133,"acceptedconn":77639,"listenqueue":0,"maxlistenqueue":2,"listenqueuelen":128,"idleprocesses":99,"activeprocesses":1,"totalprocesses":100,"maxactiveprocesses":9,"maxchildrenreached":0,"slowrequests":122}

在被监控机的zabbix agent 的配置里添加自定义的parameter

vim/data0/zabbix/etc/zabbix_agentd.conf##monitoringforphp-fpmstatusUserParameter=php-fpm.status[*],/usr/bin/curl-s"http://www.sss.com/devopsfjjerpstatus?xml"|grep"<$1>"|awk-F'>|<''{print$$3}'

为了让修改的配置生效,我们要重启下zabbix_agentd服务

#pkill-9zabbix_agentd#/data0/zabbix/sbin/zabbix_agentd


目前在被监控机器上的设定已经基本结束,现在转战zabbix server,跟之前的操作一样,只要在zabbix web管理界面上导入PHP-fpm监控模板

注:有需要的朋友,可以在本文章末尾下载我的zabbix php-fpm监控模板

出现上面的汇入成功后,在你的模板列表里查找是否已经汇入

从上面的图中可以看出有个叫做Template App PHP-FPM的模板已经存在了。


查看监控项目内容


查看监控触发器


查看监控图形内容


接下来将这个模板链接到你需要监控php-fpm服务的主机即可,最简单的方法是把主机纳入到监控模板内


可以再到你的主机上看看,它是否已经被连接到你的主机上

发现Template App PHP_FPM已经在主机的连结模板内了


如果模板不合适,可以自己一步一步建立监控模板,可能zabbix监控版本不同,但是大体是一样的,根据自己的需求进行设定即可。

首先创建监控模板

选好群组模板,然后填入想要的模板名称以及需要纳入到监控模板内的主机


2.配置好模板后,创建应用集


3.在应用集内添加监控项目

注:关于监控项目可以参考我在上面贴出监控项目内容里的监控项目名称和键值作为参考

其他监控项目和上面内容,除了名称、键值、备注描述信息,其他都是一样的。


4.添加监控告警

上面的告警是当php-fpm进程为零时,进行严重告警


5.添加监控项目查看图形

注:关于监控图形可以参考我在上面贴出监控图形内容里的监控图形名称作为参考,主要根据你自己的需求进行设定会比较精准

在名称上填入你想要的监控名称,在监控项选择你已经添加好的项目,反正就是根据你个人的需求进行设定即可


设定好上面的东西,那你就可以直接在监控内查看你的监控图形是否有数据产生了

至此所有创建动作结束,如果出图,则说明设定成功啦!

附件:http://down.51cto.com/data/2366813