[值得参考]用php+snmp实现服务器监控程序,Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形解决方案。
Cacti基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测
官方网站:http://www.cacti.net/
演示地址:http://www.cacti.net/screenshots.php
下载地址:http://www.cacti.net/download_cacti.php
文章来源:http://www.OSphp.com.cn
程序介绍:
Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形解决方案。Cacti通过snmpget来获取数据,使用RRDtool绘画图形,也可外挂Scripts及加上Templates来作出各式各样的监控图,而且你完全可以不需要了解RRDtool复杂的参数。它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结构、host以及任何一张图,还可以与LDAP结合进行用户验证,同时也能自己增加模板,功能非常强大完善,界面友好,支持插件扩展。
转载自 xiaoxiaolq最终编辑 xiaoxiaolq值班监控服务器时,需一台台去登录查看服务器情况,很是麻烦,故用PHP SNMP做了个简单的服务器监控系统。结合了用来发短信的MAS系统,当服务器反生异常时可通过短信进行报警。
过程如下:
一、给各台被监控服务装上net-snmp
centos可用YUM来在线安装软件包:
yum -y install net-snmp net-snmp-devel net-snmp-utils net-snmp-perl
如果是redhat则在安装光盘中找到net-snmp这几个安装包,没有安装光盘去网上下也行,但注意要下载同一个版本的安装包.安装这些可能要一些别的软件支持,所以在安装时看还需要哪些源码包一并给装上。
安装命令示例:rpm -ihv net-snmp-devel-5.1.2-11.EL4.6.i386.rpm
安装完成后用rpm -qa | grep net-snmp查看安装情况
修改snmpd.conf:
# vi /etc/snmp/snmpd.conf
com2sec notConfigUser default public155
access notConfigGroup “” any noauth exact all none none
view all included .1 80
view systemview included .1.3.6.1.2.1.2
启动net-snmp
service snmpd start
测试:
snmpget -v 2c -c “public155″ 127.0.0.1 .1.3.6.1.4.1.2021.10.1.3.1
snmpwalk -v 1 -c “public155″ 127.0.0.1 .1.3.6.1.4.1.2021.10.1.3
注意:在放监控程序的服务器上要装上net-snmp-devel,net-snmp-utils我开始只装了前两个包,导致后来编译PHP的SNMP扩展时出错。其它被监控的服务器上装前两个包就行了。
二、给主监控服务器安装PHP的SNMP扩展
先要编译sockets snmp扩展支持,源码在php的源码包里有
cd /opt/php-5.2.7/ext/sockets
/opt/php527/bin/phpize
./configure --with-php-config=/opt/php527/bin/php-config
make
make install
编译SNMP
cd /opt/php-5.2.7/ext/snmp
/opt/php527/bin/phpize
./configure --with-php-config=/opt/php527/bin/php-config
make
make install
复制刚编译的扩展到PHP扩展安装目录
cp /opt/php527/lib/php/extensions/no-debug-non-zts-20060613/sockets.so /opt/php527/etc/
cp /opt/php527/lib/php/extensions/no-debug-non-zts-20060613/snmp.so /opt/php527/etc/
修改php.ini
vi /opt/php527/lib/php.ini
加入
extension=sockets.so
extension=snmp.so
重启APACHE
/opt/http2210/bin/apachectl -k graceful
php的监控程序当然是放在这台服务器上了,通过snmp获取各台被监控服务器的状态信息,当超出设定的警戒值后,就通过MAS系统发送信息到值班人的手机上。是不是很方便呢,呵呵。
ps:如果没有发送短信的系统的话,可用139邮箱的短信提示功能来做:把报警以邮件的形式发送到值班人的139邮箱,手机上就能收到短信提示了。
三、用PHP开发监控程序
列一些用到的东西:
查看纯代码复制到剪贴板打印?
function get_server_info($host, $community, $objectid) {
$a = snmpget($host, $community, $objectid);
$tmp = explode(":", $a);
if (count($tmp) > 1) {
$a = trim($tmp[1]);
}
return $a;
}
$host="192.168.1.11";
$community="public155";
//获取$host服务器的1分钟平均负载
$load1 = get_snmp_server($host,$community,".1.3.6.1.4.1.2021.10.1.3.1") ;
function get_server_info($host, $community, $objectid) { $a = snmpget($host, $community, $objectid); $tmp = explode(":", $a); if (count($tmp) > 1) { $a = trim($tmp[1]); } return $a; } $host="192.168.1.11"; $community="public155"; //获取$host服务器的1分钟平均负载 $load1 = get_snmp_server($host,$community,".1.3.6.1.4.1.2021.10.1.3.1") ;
下面给出一些常见的$objectid:
CPU Statistics
Load
1 minute Load: .1.3.6.1.4.1.2021.10.1.3.1
5 minute Load: .1.3.6.1.4.1.2021.10.1.3.2
15 minute Load: .1.3.6.1.4.1.2021.10.1.3.3
CPU
percentage of user CPU time: .1.3.6.1.4.1.2021.11.9.0
raw user cpu time: .1.3.6.1.4.1.2021.11.50.0
percentages of system CPU time: .1.3.6.1.4.1.2021.11.10.0
raw system cpu time: .1.3.6.1.4.1.2021.11.52.0
percentages of idle CPU time: .1.3.6.1.4.1.2021.11.11.0
raw idle cpu time: .1.3.6.1.4.1.2021.11.53.0
raw nice cpu time: .1.3.6.1.4.1.2021.11.51.0
Memory Statistics
Total Swap Size: .1.3.6.1.4.1.2021.4.3.0
Available Swap Space: .1.3.6.1.4.1.2021.4.4.0
Total RAM in machine: .1.3.6.1.4.1.2021.4.5.0
Total RAM used: .1.3.6.1.4.1.2021.4.6.0
Total RAM Free: .1.3.6.1.4.1.2021.4.11.0
Total RAM Shared: .1.3.6.1.4.1.2021.4.13.0
Total RAM Buffered: .1.3.6.1.4.1.2021.4.14.0
Total Cached Memory: .1.3.6.1.4.1.2021.4.15.0
Disk Statistics
The snmpd.conf needs to be edited. Add the following (assuming a machine with a single / partition):
disk / 100000 (or)
includeAllDisks 10% for all partitions and disks
The OIDs are as follows
Path where the disk is mounted: .1.3.6.1.4.1.2021.9.1.2.1
Path of the device for the partition: .1.3.6.1.4.1.2021.9.1.3.1
Total size of the disk/partion (kBytes): .1.3.6.1.4.1.2021.9.1.6.1
Available space on the disk: .1.3.6.1.4.1.2021.9.1.7.1
Used space on the disk: .1.3.6.1.4.1.2021.9.1.8.1
Percentage of space used on disk: .1.3.6.1.4.1.2021.9.1.9.1
Percentage of inodes used on disk: .1.3.6.1.4.1.2021.9.1.10.1
==============================================
官方网站:http://www.cacti.net/
演示地址:http://www.cacti.net/screenshots.php
下载地址:http://www.cacti.net/download_cacti.php
文章来源:http://www.OSphp.com.cn
程序介绍:
Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形解决方案。Cacti通过snmpget来获取数据,使用RRDtool绘画图形,也可外挂Scripts及加上Templates来作出各式各样的监控图,而且你完全可以不需要了解RRDtool复杂的参数。它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结构、host以及任何一张图,还可以与LDAP结合进行用户验证,同时也能自己增加模板,功能非常强大完善,界面友好,支持插件扩展。
转载自 xiaoxiaolq最终编辑 xiaoxiaolq值班监控服务器时,需一台台去登录查看服务器情况,很是麻烦,故用PHP SNMP做了个简单的服务器监控系统。结合了用来发短信的MAS系统,当服务器反生异常时可通过短信进行报警。
过程如下:
一、给各台被监控服务装上net-snmp
centos可用YUM来在线安装软件包:
yum -y install net-snmp net-snmp-devel net-snmp-utils net-snmp-perl
如果是redhat则在安装光盘中找到net-snmp这几个安装包,没有安装光盘去网上下也行,但注意要下载同一个版本的安装包.安装这些可能要一些别的软件支持,所以在安装时看还需要哪些源码包一并给装上。
安装命令示例:rpm -ihv net-snmp-devel-5.1.2-11.EL4.6.i386.rpm
安装完成后用rpm -qa | grep net-snmp查看安装情况
修改snmpd.conf:
# vi /etc/snmp/snmpd.conf
com2sec notConfigUser default public155
access notConfigGroup “” any noauth exact all none none
view all included .1 80
view systemview included .1.3.6.1.2.1.2
启动net-snmp
service snmpd start
测试:
snmpget -v 2c -c “public155″ 127.0.0.1 .1.3.6.1.4.1.2021.10.1.3.1
snmpwalk -v 1 -c “public155″ 127.0.0.1 .1.3.6.1.4.1.2021.10.1.3
注意:在放监控程序的服务器上要装上net-snmp-devel,net-snmp-utils我开始只装了前两个包,导致后来编译PHP的SNMP扩展时出错。其它被监控的服务器上装前两个包就行了。
二、给主监控服务器安装PHP的SNMP扩展
先要编译sockets snmp扩展支持,源码在php的源码包里有
cd /opt/php-5.2.7/ext/sockets
/opt/php527/bin/phpize
./configure --with-php-config=/opt/php527/bin/php-config
make
make install
编译SNMP
cd /opt/php-5.2.7/ext/snmp
/opt/php527/bin/phpize
./configure --with-php-config=/opt/php527/bin/php-config
make
make install
复制刚编译的扩展到PHP扩展安装目录
cp /opt/php527/lib/php/extensions/no-debug-non-zts-20060613/sockets.so /opt/php527/etc/
cp /opt/php527/lib/php/extensions/no-debug-non-zts-20060613/snmp.so /opt/php527/etc/
修改php.ini
vi /opt/php527/lib/php.ini
加入
extension=sockets.so
extension=snmp.so
重启APACHE
/opt/http2210/bin/apachectl -k graceful
php的监控程序当然是放在这台服务器上了,通过snmp获取各台被监控服务器的状态信息,当超出设定的警戒值后,就通过MAS系统发送信息到值班人的手机上。是不是很方便呢,呵呵。
ps:如果没有发送短信的系统的话,可用139邮箱的短信提示功能来做:把报警以邮件的形式发送到值班人的139邮箱,手机上就能收到短信提示了。
三、用PHP开发监控程序
列一些用到的东西:
查看纯代码复制到剪贴板打印?
function get_server_info($host, $community, $objectid) {
$a = snmpget($host, $community, $objectid);
$tmp = explode(":", $a);
if (count($tmp) > 1) {
$a = trim($tmp[1]);
}
return $a;
}
$host="192.168.1.11";
$community="public155";
//获取$host服务器的1分钟平均负载
$load1 = get_snmp_server($host,$community,".1.3.6.1.4.1.2021.10.1.3.1") ;
function get_server_info($host, $community, $objectid) { $a = snmpget($host, $community, $objectid); $tmp = explode(":", $a); if (count($tmp) > 1) { $a = trim($tmp[1]); } return $a; } $host="192.168.1.11"; $community="public155"; //获取$host服务器的1分钟平均负载 $load1 = get_snmp_server($host,$community,".1.3.6.1.4.1.2021.10.1.3.1") ;
下面给出一些常见的$objectid:
CPU Statistics
Load
1 minute Load: .1.3.6.1.4.1.2021.10.1.3.1
5 minute Load: .1.3.6.1.4.1.2021.10.1.3.2
15 minute Load: .1.3.6.1.4.1.2021.10.1.3.3
CPU
percentage of user CPU time: .1.3.6.1.4.1.2021.11.9.0
raw user cpu time: .1.3.6.1.4.1.2021.11.50.0
percentages of system CPU time: .1.3.6.1.4.1.2021.11.10.0
raw system cpu time: .1.3.6.1.4.1.2021.11.52.0
percentages of idle CPU time: .1.3.6.1.4.1.2021.11.11.0
raw idle cpu time: .1.3.6.1.4.1.2021.11.53.0
raw nice cpu time: .1.3.6.1.4.1.2021.11.51.0
Memory Statistics
Total Swap Size: .1.3.6.1.4.1.2021.4.3.0
Available Swap Space: .1.3.6.1.4.1.2021.4.4.0
Total RAM in machine: .1.3.6.1.4.1.2021.4.5.0
Total RAM used: .1.3.6.1.4.1.2021.4.6.0
Total RAM Free: .1.3.6.1.4.1.2021.4.11.0
Total RAM Shared: .1.3.6.1.4.1.2021.4.13.0
Total RAM Buffered: .1.3.6.1.4.1.2021.4.14.0
Total Cached Memory: .1.3.6.1.4.1.2021.4.15.0
Disk Statistics
The snmpd.conf needs to be edited. Add the following (assuming a machine with a single / partition):
disk / 100000 (or)
includeAllDisks 10% for all partitions and disks
The OIDs are as follows
Path where the disk is mounted: .1.3.6.1.4.1.2021.9.1.2.1
Path of the device for the partition: .1.3.6.1.4.1.2021.9.1.3.1
Total size of the disk/partion (kBytes): .1.3.6.1.4.1.2021.9.1.6.1
Available space on the disk: .1.3.6.1.4.1.2021.9.1.7.1
Used space on the disk: .1.3.6.1.4.1.2021.9.1.8.1
Percentage of space used on disk: .1.3.6.1.4.1.2021.9.1.9.1
Percentage of inodes used on disk: .1.3.6.1.4.1.2021.9.1.10.1
==============================================
作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:https://jackxiang.com/post/5519/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!
最后编辑: jackxiang 编辑于2012-8-21 15:13
评论列表