您的位置:首页 > 编程语言 > PHP开发

phpsnmp监控Linxu服务器

2016-02-24 11:45 791 查看
值班监控服务器时,需一台台去登录查看服务器情况,很是麻烦,故用PHPSNMP做了个简单的服务器监控系统。结合了用来发短信的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的源码包里有

具体路径根据之际php安装路径设置(这两个扩展在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扩展的同学飘过,不会的注意,拷贝到你的Php.ini配置设置的

extenssion_dir里面)

修改php.ini

vi /opt/php527/lib/php.ini

加入

extension=sockets.so (Php可能会报warning,我就没有添加这个模块。)

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") ;

下面给出一些常见的$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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: