博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用cacti监控php-fpm的工作状态
阅读量:6421 次
发布时间:2019-06-23

本文共 2096 字,大约阅读时间需要 6 分钟。

cacti搞运维的人不会陌生,可能是现在使用最多的监控工具了。跟互联网相关的公司可能多少都会用到cacti来监控服务器运行状态和一些软件的负载情况。
现在网站用的最多的后端技术可能就是php了,无论nginx还是lighttpd,如今的负载能力都非常强,在很多牛人的努力下,负载几万到十万并发的都屡见不鲜。但是,这是在完全静态的情况下,加上php就会效率大减。所以其实一个动态网站的负载能力的瓶颈往往都在php上面。
网上很多文章介绍cacti是如何监控nginx并发数的,不过目前还没有介绍如何监控php的工作状态的文章,我在谷歌百度搜了一圈,也没找到一个中文的监控php的介绍文章,所以不才闲着没事,简单改造了一个模板,用来监控php-fpm的工作情况。我相信国内很多人可能早就用上了,只是没工夫说而已。
所谓改造,即不是我原创的。原作者地址在
我将这个模板下载下来后尝试了一下,发现不是那么简单易用,需要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://tcora.baihongyu.com/

你可能感兴趣的文章
jTemplate —— 基于jQuery的javascript前台模版引擎
查看>>
Flume使用小结
查看>>
自定义日志阅读器——包括了一个load取Tomcat日志的分析器
查看>>
jquery -- jquery控制只能输入数字和小数点
查看>>
2015年最新微信数据背后的哲学
查看>>
Oracle GoldenGate 11.2 OGG-01168(转)
查看>>
CSRF攻击与防御
查看>>
linux下串口的阻塞和非阻塞操作
查看>>
SQL SERVER完整、差异和事务日志备份及还原(脚本和GUI实现)
查看>>
Bootstrap系列 -- 5. 文本对齐方式
查看>>
Pycharm中的实用功能(网上看到的,感觉还不错)
查看>>
ASP.NET常被忽视的一些细节
查看>>
Redis 笔记与总结6 Redis 高级应用之 事务处理、持久化操作、pub_sub、虚拟内存...
查看>>
电商招聘那些事——揭秘万达电商(7)
查看>>
ik扩展支持Solr配置
查看>>
IT技术博客收藏
查看>>
数据报截断
查看>>
这些.NET开源项目你知道吗?.NET平台开源文档与报表处理组件集合(三)
查看>>
UVa 679 - Dropping Balls
查看>>
二维码生成Zxing.net DEMO
查看>>