始创于2000年 股票代码:831685
咨询热线:0371-60135900 注册有礼 登录
  • 挂牌上市企业
  • 60秒人工响应
  • 99.99%连通率
  • 7*24h人工
  • 故障100倍补偿
您的位置: 网站首页 > 帮助中心>文章内容

用cacti监控php-fpm的工作状态

发布时间:  2012/9/10 17:26:48
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或者做VPN.不过我想大多数公司一来不具备这个技术实力,二来如果跨机房多了,改造配置也是个极麻烦的事情,改错了就会给人家留一个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中的设置
   
    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行的脚本,简单的很,一看就明白。

本文出自:亿恩科技【www.enkj.com】

服务器租用/服务器托管中国五强!虚拟主机域名注册顶级提供商!15年品质保障!--亿恩科技[ENKJ.COM]

  • 您可能在找
  • 亿恩北京公司:
  • 经营性ICP/ISP证:京B2-20150015
  • 亿恩郑州公司:
  • 经营性ICP/ISP/IDC证:豫B1.B2-20060070
  • 亿恩南昌公司:
  • 经营性ICP/ISP证:赣B2-20080012
  • 服务器/云主机 24小时售后服务电话:0371-60135900
  • 虚拟主机/智能建站 24小时售后服务电话:0371-60135900
  • 专注服务器托管17年
    扫扫关注-微信公众号
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 亿恩科技 版权所有  地址:郑州市高新区翠竹街1号总部企业基地亿恩大厦  法律顾问:河南亚太人律师事务所郝建锋、杜慧月律师   京公网安备41019702002023号
      0
     
     
     
     

    0371-60135900
    7*24小时客服服务热线