用cacti监控php

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行的脚本,简单的很,一看就明白。

监控效果如图所示。

时间: 2024-10-05 10:17:02

用cacti监控php的相关文章

cacti监控软件

cacti监控软件: 部署cacti运行环境 # yum -y install httpd mysql mysql-server mysql-devel php php-mysql # yum -y install zlib freetype libjpeg fontconfig libxml2 gd php-gd # yum -y install rrdtool # yum -y install net-snmp net-snmp-utils # service httpd start # c

Cacti监控

cacti是用php语言实现的一个软件,它的主要功能是用snmp服务获取数 据,然后用rrdtool储存 和更新数据,当用户需要查看数据的时候用rrdtool生成图表呈现给用户.本文全面介绍了Cacti的工作流程.安装.使用.脚本和模板.插件.高级应 用方面的内容. 本系列文档介绍了Cacti监控工具的各个方面,包括: 一.Cacti的工作流程二.Cacti的安装三.Cacti的使用四.Cacti脚本及模板 一.概述 1. cacti是用php语言实现的一个软件,它的主要功能是用snmp服务获取

Centos 6安装Cacti监控网络流量

Centos 6安装Cacti监控网络流量 1.操作系统的安装,这个就不用写教程了吧(略)我个人用的是CentOS6.5最小化安装装好系统以后关闭防火墙和selinux#service iptables stop     /*关闭防火墙服务*/#chkconfig iptables off    /*永久性关闭*/ #vim /etc/sysconfig/selinux   /*把SELINUX=enforcing改为SELINUX=disabled*/ 2.安装cacti依赖的软件 #yum

增加cacti监控对象时导致无数据无图形出现

生产环境: 操作系统:CentOS release 6.8 (Final) 数据库:mysql 5.5.49-cll-lve 问题:在众多Cacti监控的对象中,由于增加一台服务器增加了一个了监控对象Windows系统,导致cacti在监控所有对象中仅有1个对象出图出数据. 分析: 1.图像没有生成,运行# /usr/bin/php /var/www/html/cacti/poller.php --force #出现数据了吗?2.权限问题,修改权限#chmod 777 -R /var/www/h

linux下安装配置cacti监控

Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具. 环境搭建: cacti服务端:192.168.20.20 cacti客户机:192.168.20.30 cacti安装配置的步骤如下: 1.首先要安装epel扩展源 yum install  epel-release 2.(安装lamp环境)安装httpd.php.mysql yum install -y  httpd php php-mysql mysql mysql-server mysql-d

cacti监控一个web上的多个tomcat

Cacti监控一个web上多个tomcat 第一部分:监控单个tomcat 1.首先下载监控tomcat的模板 TomcatStats-0.1.zip 下载之后,修改tomcatstats.pl, a.注释第三行左右的 use Data::Dumper; b.将 第19行左右的my $xml = `GET $url`; 改为my $xml = `wget -qO - $url`; c.在第24行左右添加此行   print "  "; d.注释第23行左右的print Dumper($

实战3 Cacti监控nginx和mysql

在监控方面,两周的心得与大家共勉. 首先说说在线上跑的监控(cacti),两周下来没有出现问题,日志也没有出现报错的迹象,绘图,获取数据都是正常的.如下图所示: 至于监控,对于cacti来说,绘图是很直观的,一目了然,学会使用cacti,更重要的是要学会看坐标,还有坐标下面更详细的数值. 因为更多的模拟环境搭建是在vmware workstation上安装的,由于虚拟机的特殊性,快照,会使物理主机与vmware的主机时间 照成不一致,因此都采用ntpdate保持时间一致. [[email pro

Cacti监控Tomcat服务器实现过程

1 首先去官网上面下载通用的监控模板 一般使用TomcatStats-0.1.zip 模板居多,下载地址: http://forums.cacti.net/download/file.php?id=12310, 在linux服务器上面使用wget下载,wget http://forums.cacti.net/download/file.php?id=12310,报如下错误: 正在连接 forums.cacti.net|173.225.179.10|:80... 已连接. 已发出 HTTP 请求,

cacti监控部署与配置

cacti是一套基于PHP,mysql,SNMP及RRDTool开发的网络流量测试图形分析工具 cacti是通过snmpget来获取数据,使用RRDtool绘画图形 ,而且完全可以不需要了解RRDtool复杂的参数 ,它提供了非常强大的数据和用户管理功能,可以指定每个用户能查看树状结构,host以及任何一张图,还可以与LDAP结合进行用户验证,同时也能自己增加模板,功能非常强大完善.界面 友好,软件cacti的发展是基于让RRTool使用这更方便的使用该软件,除了基本 的SNMP的流量更系统咨询

Cacti 监控服务

一搭建Cacti监控服务器(105)1.1  部署服务运行环境(LAMP)yum   -y   install    httpd    php   php-mysql  mysql-server mysql /etc/init.d/httpd   start  ;chkconfig  httpd  on/etc/init.d/mysqld   start  ;chkconfig  mysqld  on [[email protected] ~]# mysqladmin  -hlocalhost