您的位置:首页 > 运维架构

使用Net-SNMP监控同一服务的不同应用

2013-12-26 17:24 316 查看
当前Linux系统广泛使用了Net-SNMP作为系统监控的工具,对SNMP协议支持的很好,同时配置灵活,功能强大。官网地址:http://www.net-snmp.org/ (不明白为什么访问这个网站还要翻墙

)。

公司的产品中使用apache web server同时作为反向代理服务器和系统管理的CGI服务器,配置文件互相独立,但运行时的进程名称都是httpd,如图



这样如果要使用Net-SNMP分别监控proxy服务器和CGI服务器的状态就不能用使用"proc"指令了,这时候“monitor”配合“exec”指令就派上用场了。

还是直接上代码说得方便些

在snmp.conf中增加如下配置:

exec Webproxy /bin/sh /etc/snmp/moniWebproxy.sh

exec NMA /bin/sh /etc/snmp/moniNMA.sh

monitor -S -r 60 -o extNames -o extOutput "webproxy stopped" extResult == 101

monitor -S -r 60 -o extNames -o extOutput "webproxy started" extResult == 102

monitor -S -r 60 -o extNames -o extOutput "NMA stopped" extResult == 103

monitor -S -r 60 -o extNames -o extOutput "NMA started" extResult == 104

在/etc/snmp/下增加两个shell脚本

moniWebproxy.sh

moniWebproxy.sh
#! /bin/sh
procnum=`ps -ef | grep -v grep | egrep -c ".*httpd$"`
if [ $procnum == 0 ]
then
echo "webproxy down!"
exit 101
else
echo "webproxy is there!"
exit 102
fi
moniNMA.sh

#! /bin/sh
procnum=`ps -ef | grep -v grep | grep -c nma`
if [ $procnum == 0 ]
then
echo "NMA down!"
exit 103
else
echo "NMA is there!"
exit 104
fi
完成后重启Net-SNMP服务

验证一下:

[root@alexli_master snmp]# snmpwalk -v2c -c public 10.208.3.110 1.3.6.1.4.1.2021.8.1

UCD-SNMP-MIB::extIndex.1 = INTEGER: 1

UCD-SNMP-MIB::extIndex.2 = INTEGER: 2

UCD-SNMP-MIB::extNames.1 = STRING: Webproxy

UCD-SNMP-MIB::extNames.2 = STRING: NMA

UCD-SNMP-MIB::extCommand.1 = STRING: /bin/sh /etc/snmp/moniWebproxy.sh

UCD-SNMP-MIB::extCommand.2 = STRING: /bin/sh /etc/snmp/moniNMA.sh

UCD-SNMP-MIB::extResult.1 = INTEGER: 102

UCD-SNMP-MIB::extResult.2 = INTEGER: 103

UCD-SNMP-MIB::extOutput.1 = STRING: webproxy is there!

UCD-SNMP-MIB::extOutput.2 = STRING: NMA down!

UCD-SNMP-MIB::extErrFix.1 = INTEGER: noError(0)

UCD-SNMP-MIB::extErrFix.2 = INTEGER: noError(0)

UCD-SNMP-MIB::extErrFixCmd.1 = STRING:

UCD-SNMP-MIB::extErrFixCmd.2 = STRING:

如果Net-SNMP上已经配好了trap接收服务器的话,可以在那台机器上看到上来的trap



简单解释一下:

Net-SNMP实际上有自己的Mib,其中之一叫做UCD-SNMP-MIB,OID是1.3.6.1.4.1.2021

Net-SNMP会把通过配置使能的各种监控的结果保存在这个Mib中,这样用户如果有Mib Browser的话就可以查看当时的系统状态数据,比如CPU、内存、进程以及硬盘信息等等。那么这些数据怎么就通过trap发送出去的呢?这是由于对Disman Event MIB的支持。

上面的“monitor”指令属于Disman Event MIB指令集中的一个,上面的配置意思就是如果extResult 等于101就会触发一个webproxy stop的trap,但这个trap实际上是在mteTriggerTable中定义的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: