前几天弄了个Nginx 服务监控,今天再试试php服务的监控
操作系统: CentOS 7.2
PHP版本:5.6.30
zabbix版本:2.2.5
发现php-fpm和Nginx一样都有自身就具备可提供查看的状态页面,所以我们就可以在配置档案里开启它
首先查看你的php设定档是否开启了状态页面查看的功能
# cat /data0/php/etc/php-fpm.conf | grep status_path ;pm.status_path = /status
如果情况同上,那说明还没有开启,故我们就修改配置,让它支持查看php-fpm status
# vim /data0/php/etc/php-fpm.conf pm.status_path = /status ---去掉;号注释
保存退出
重启php-fpm服务,让查看status功能生效
# pkill -9 php-fpm # /data0/php/sbin/php-fpm
在Nginx配置上添加支持获取PHP status的设定
# vim /data0/nginx/conf/nginx.conf ##在server模块内添加即可 server { listen 80; server_name www.sss.com; #20170701 php-fpm status for zabbix to fetch data location ~ ^/(status|ping)$ { include fastcgi_params; fastcgi_pass 172.17.0.2:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } #20170701 php-fpm status for zabbix to fetch data end }
注:因为我的PHP是在docker内运行的,所以上面的fatstcgi_pass 要根据你自己的情况而定
设置完毕,保存退出,重启Nginx服务,让设定生效
# /data0/nginx/sbin/nginx -t nginx: the configuration file /data0/nginx/conf/nginx.conf syntax is ok nginx: configuration file /data0/nginx/conf/nginx.conf test is successful # /data0/nginx/sbin/nginx -s reload
至此,PHP、Nginx准备工作完毕,现在可以开始查看成效
查看你的status页面
有两种方式:
1.在本地访问
curl http://网址/status
# curl http://www.sss.com/status pool: www process manager: dynamic start time: 30/Jun/2017:14:14:02 +0800 start since: 94540 accepted conn: 75834 listen queue: 0 max listen queue: 2 listen queue len: 128 idle processes: 99 active processes: 1 total processes: 100 max active processes: 9 max children reached: 0 slow requests: 122
2.打开浏览器访问
http://网址/status
内容解释:
pool: www --php-fpm池名 process manager: dynamic --进程管理方式 start time: 30/Jun/2017:14:14:02 +0800 --启动日期,一旦你对php-fpm服务更新,它也同样会更新 start since: 94540 --运行至现在的时长 accepted conn: 75834 --当前池所接受的请求数 listen queue: 0 --请求等待队列数,若此值大于0,就要增加php-fpm进程数了 max listen queue: 2 --最高的请求等待队列数 listen queue len: 128 --socket等待队列长度 idle processes: 99 --空闲进程数 active processes: 1 --活动的进程数 total processes: 100 --总进程数 max active processes: 9 --最大活动进程数 max children reached: 0 --大道进程最大数限制次数,同样若此值不为0,需要将最大进行时进程扩大来满足需求 slow requests: 122 --缓慢请求数
php-fpm status 页面非常友善的地方是在配合zabbix监控时,不在需要你编写shell脚本来获取数据了,不错吧,又可以偷懒了!
不信,在你的被监控主机(即PHP-fpm主机)上试下下面的做法
1.访问URL末尾添加?xml
curl http://www.sss.com/status?xml <?xml version="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
curl http:/www.sss.com/devopsfjjerpstatus?html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head><title>PHP-FPM Status Page</title></head> <body> <table> <tr><th>pool</th><td>www</td></tr> <tr><th>process manager</th><td>dynamic</td></tr> <tr><th>start time</th><td>30/Jun/2017:14:14:02 +0800</td></tr> <tr><th>start since</th><td>95954</td></tr> <tr><th>accepted conn</th><td>77437</td></tr> <tr><th>listen queue</th><td>0</td></tr> <tr><th>max listen queue</th><td>2</td></tr> <tr><th>listen queue len</th><td>128</td></tr> <tr><th>idle processes</th><td>99</td></tr> <tr><th>active processes</th><td>1</td></tr> <tr><th>total processes</th><td>100</td></tr> <tr><th>max active processes</th><td>9</td></tr> <tr><th>max children reached</th><td>0</td></tr> <tr><th>slow requests</th><td>122</td></tr> </table> </body></html>
3.访问URL末尾添加?json
# curl http://www.sss.com/status?json {"pool":"www","process manager":"dynamic","start time":1498803242,"start since":96133,"accepted conn":77639,"listen queue":0,"max listen queue":2,"listen queue len":128,"idle processes":99,"active processes":1,"total processes":100,"max active processes":9,"max children reached":0,"slow requests":122}
在被监控机的zabbix agent 的配置里添加自定义的parameter
vim /data0/zabbix/etc/zabbix_agentd.conf ##monitoring for php-fpm status UserParameter=php-fpm.status[*],/usr/bin/curl -s "http://www.sss.com/devopsfjjerpstatus?xml" | grep "<$1>"| awk -F '>|<' '{ print $$3}'
为了让修改的配置生效,我们要重启下zabbix_agentd服务
# pkill -9 zabbix_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.添加监控项目查看图形
注:关于监控图形可以参考我在上面贴出监控图形内容里的监控图形名称作为参考,主要根据你自己的需求进行设定会比较精准
在名称上填入你想要的监控名称,在监控项选择你已经添加好的项目,反正就是根据你个人的需求进行设定即可
设定好上面的东西,那你就可以直接在监控内查看你的监控图形是否有数据产生了
至此所有创建动作结束,如果出图,则说明设定成功啦!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。