使用Net-SNMP监控同一服务的不同应用
2013-12-26 17:24
316 查看
当前Linux系统广泛使用了Net-SNMP作为系统监控的工具,对SNMP协议支持的很好,同时配置灵活,功能强大。官网地址:http://www.net-snmp.org/ (不明白为什么访问这个网站还要翻墙
![](http://static.blog.csdn.net/xheditor/xheditor_emot/default/doubt.gif)
)。
公司的产品中使用apache web server同时作为反向代理服务器和系统管理的CGI服务器,配置文件互相独立,但运行时的进程名称都是httpd,如图
![](http://img.blog.csdn.net/20131226165523500?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbmFwb2x1bnlpc2hp/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
这样如果要使用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
验证一下:
[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
![](http://img.blog.csdn.net/20131226170917421?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbmFwb2x1bnlpc2hp/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
简单解释一下:
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中定义的。
![](http://static.blog.csdn.net/xheditor/xheditor_emot/default/doubt.gif)
)。
公司的产品中使用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 fimoniNMA.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中定义的。
相关文章推荐
- 使用nagios监控被监控主机上的应用服务mysql数据库 (一)
- 使用nagios监控被监控主机上的应用服务mysql数据库
- 使用windows服务和.NET FileSystemWatcher对象来监控磁盘文件目录的改变
- 使用windows服务和.NET FileSystemWatcher对象来监控磁盘文件目录的改变
- 12 绑定服务 不同应用间 及 使用自定义类型(未完待续)
- 使用nagios监控被监控主机上的应用服务mysql数据库
- LINUX 下基于net-snmp使用MRTG监控服务器流量
- 使用ASP.NET AJAX 从脚本中调用Web 服务的应用方法
- Vim 的 tab 设置(2): 使用 autocmd 为不同的文件类型应用不同的 tab 设置
- NS2学习笔记 在一个节点上同时使用不同的应用层协议
- android 程序强制停止后服务后台启动运行 ---- 不同程序间相助 使用第三方服务
- 使用EasyWechat开发java微信公众平台应用(三)——接受不同类型的消息
- 使用脚本监控windows服务的方法
- 使用Web服务将C#代码转换为VB.NET代码
- 使用Visual Basic.NET扫描系统服务
- 一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-通过SQL实现特殊业务
- spring-boot 之 使用Admin监控应用
- linux应用服务状态——脚本监控方法
- 在一个应用中,如何针对不同的外部客户系统,使用不同的数字证书?