设为首页 收藏本站
查看: 1183|回复: 0

[经验分享] 用cacti监控php

[复制链接]

尚未签到

发表于 2018-12-20 08:38:41 | 显示全部楼层 |阅读模式
cacti搞运维的人不会陌生,可能是现在使用最多的监控工具了。跟互联网相关的公司可能多少都会用到cacti来监控服务器运行状态和一些软件的负载情况。

现在网站用的最多的后端技术可能就是php了,无论nginx还是lighttpd,如今的负载能力都非常强,在很多牛人的努力下,负载几万到十万并发的都屡见不鲜。但是,这是在完全静态的情况下,加上php就会效率大减。所以其实一个动态网站的负载能力的瓶颈往往都在php上面。


网上很多文章介绍cacti是如何监控nginx并发数的,不过目前还没有介绍如何监控php的工作状态的文章,我在谷歌百度搜了一圈,也没找到一个中文的监控php的介绍文章,所以不才闲着没事,简单改造了一个模板,用来监控php-fpm的工作情况。我相信国内很多人可能早就用上了,只是没工夫说而已。


所谓改造,即不是我原创的。原作者地址在
http://forums.cacti.net/viewtopic.php?f=12&t=41580
我将这个模板下载下来后尝试了一下,发现不是那么简单易用,需要perl中的FCGI::Client和LWP::UserAgent等模块的支持,这对于不熟悉perl和cpan的人来说,会很头疼。perl语言的这个脚本同时具有安全隐患,因为他使用FCGI::Client.pm模块来直接访问php-fpm的9000端口,这就需要你的php-fpm监听在一个除127.0.0.1的其他IP上,这样,如果你需要跨机房监控,就势必要把php-fpm监听在一个外网IP上,除非你指定php-fpm的访问IP或者做***。不过我想大多数公司一来不具备这个技术实力,二来如果跨机房多了,改造配置也是个极麻烦的事情,改错了就会给人家留一个9000端口的漏洞出来,人家直接架一个nginx指向php过来就可以干坏事了。


所以花了5分钟将模板稍作修改,并用shell重写了获取脚本。将php-fpm的状态监控跳转到nginx上,从网页获取,既支持跨机房访问,无需暴露9000端口在任何IP地址上,对php-fpm.conf文件的改动最小,唯一一个是需要改造一下nginx,加一个类似于监控nginx的配置项。并需要cacti服务器上有curl支持,不过用yum或者apt-get安装curl似乎比用cpan安装模块要简单多了。原理和用cacti监控nginx是一样的。所以,如果你做过nginx的监控,用这个模板就非常简单了。


不过这个脚本也存在一个问题,就是如果你用一台nginx用upstream后端挂多个php-fpm负载均衡,可能会产生数据不准确问题。这样的话,你可以访问上面的连接,采用原版直接访问9000端口的方式。


讲一下使用这个脚本需要操作的几个步骤:


1. 你需要改变php-fpm.conf文件中的一行
找到pm.status_path = /status,将前面的注释分号去掉。保存退出


2. 打开nginx.conf文件
在server{}段中加入下面这段话,注意不要和你的nginx状态监控的重定向路径冲突,如果冲突,请同时修改php-fpm中的设置和nginx中的设置
location ~ ^/(status)$ {
                                                include fastcgi_params;
                                                fastcgi_pass 127.0.0.1:9000;
                                                fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
}



保存退出


3. 重启php-fpm,重启nginx
尝试访问http://yourserver/status看是否能获取到php-fpm信息,正常的话,应该显示如下


pool:                                 www
process manager:            dynamic
start time:                     16/Jun/2012:01:28:33 +0800
start since:                    67269
accepted conn:                4526202
listen queue:                 0
max listen queue:         0
listen queue len:         0
idle processes:             174
active processes:         1
total processes:            175
max active processes: 23
max children reached: 0





4. 将附件中解压缩出来的的shell脚本上传至cacti服务器的cacti/scripts文件夹下。并赋予可执行权限。执行测试一下看是否能获取到php-fpm的状态。
./cacti_check_php-fpm.sh 114.xxx.xxx.xxx 80 /status


5. 将附件中的xml模板导入到cacti中,然后在设备那里创建新图的时候,你会看到一个php-fpm fastcgi status的模板,使用它创建,并填上服务器IP端口和路径就可以了,参照测试命令行写就可以。


在实际测试中,支持php 5.3.8及以上版本,5.3.8之前的php版本未测试,如有问题可修改脚本中的grep部分,一共不超过15行的脚本,简单的很,一看就明白。


监控效果如图所示。







附件:http://down.运维网.com/data/2360813


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-653391-1-1.html 上篇帖子: 最近写php命令行程序的一些心得 下篇帖子: Linux系统上银行支付接口php
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表