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

当前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中定义的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值