您的位置:首页 > 职场人生

使用SNMP发送自定义内容

2009-12-15 15:32 549 查看
[align=left]使用SNMP发送自定义内容 [/align]

我们在日常工作中需要监控的大多数服务或者应用都能够通过CACTI或者Nagios自带的模块和扩展模块来实现,但是仍然有一些自己需要监控的服务不能从那里找到,那么我们可以采用自定义OID的形式来进行监控!snmp提供了发送自定义信息的功能。查看snmpd.conf会看到有一个小节是关于外部脚本的,Executables/scripts。

比如你需要用 CACTI 来进行监控一个游戏服务器的在线人数,那么你就可以通过自定义脚本的办法来进行部署。下面举一个很简单的例子:

首先,我们需要写一个自定义的脚本来获取在线人数:

[root@server02 ~]# cat /usr/local/bin/online.sh

#!/bin/sh
echo .1.3.6.1.4.1.102.8
GW01=`ssh GW01 "netstat -antp|grep ESTABLISHED|grep 8888|wc -l"`
GW02=`ssh GW02 "netstat -antp|grep ESTABLISHED|grep 8888|wc -l"`
GW03=`ssh GW03 "netstat -antp|grep ESTABLISHED|grep 8888|wc -l"`
ALL=$(($(($GW01+$GW02))+$GW03))
echo integer
echo $ALL
或者你需要监控apache的连接数:

#!/bin/sh

num=$(ps -e |grep http|grep -v grep|grep -v jkhttp|wc -l)

echo $num
然后在snmp的配置文件里加入自定义信息:
vi /etc/snmp/snmp.conf (注意,你完全可以删掉你原配置文件中的所有信息,用下面两行替代即可)
rocommunity public

exec .1.3.6.1.4.1.2021.50 online_monitor /bin/sh /usr/local/bin/online.sh
重新启动snmp服务:

service snmpd restart
测试数据(注意snmp的版本号):

snmpwalk -v1 -c public 192.168.0.1 .1.3.6.1.4.1.2021.50
snmpwalk -v2c -c public 192.168.0.1 .1.3.6.1.4.1.2021.50
然后你就可以用这个OID来做图,对人数进行监控了!

排错:


1、[root@JR-ZR01-TEST ~]# snmpwalk -v1 -c public 192.168.76.250 .1.3.6.1.4.1.4413.4.1
End of MIB

参考:这个错误一般是在 snmp.conf 里view 里面没有允许该OID ,甚至做了显式拒绝,解决办法是允许该 OID.

加入: view    systemview    included   .1


2、[root@JR-ZR01-TEST ~]# snmpwalk -v1 -c public 192.168.76.250 .1.3.6.1.4.1.4413.4.1
Error: OID not increasing: SNMPv2-SMI::enterprises.102.8
>= SNMPv2-SMI::enterprises.102.8
参考:出现上面问题,一般是由于使用了MIB库里不存在的OID,可以定义新的已存在OID来解决上面问题. 但还是建议使用自定义信息的专用OID: .1.3.6.1.4.1.2021.50 最后一位可以是 51 52 53...

3、[root@JR-ZR01-TEST ~]# snmpwalk   -v   1   localhost   -c   public   .1.3.6.1.4.1.2021.53
UCD-SNMP-MIB::ucdavis.53.1.1   =   INTEGER:   1
UCD-SNMP-MIB::ucdavis.53.2.1   =   STRING:   "mem "
UCD-SNMP-MIB::ucdavis.53.3.1   =   STRING:   "/bin/sh   /etc/snmp/mem.sh "
UCD-SNMP-MIB::ucdavis.53.100.1   =   INTEGER:   1
UCD-SNMP-MIB::ucdavis.53.101.1   =   STRING:   "/bin/sh:   Permission   denied "
UCD-SNMP-MIB::ucdavis.53.102.1   =   INTEGER:   0

参考:首先需要确保 /etc/snmp/mem.sh 文件具有可执行权限,且手工执行必须可以运行,如果在权限设置777的情况下仍然提示该错误的话,请检查您的selinux 是否开启,如果开启关闭即可.
办法:修改/etc/selinux/config文件中的SELINUX= 为 disabled ,然后重启系统,或在不重启系统的情况下使用命令setenforce 0 命令.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  职场 SNMP 休闲