我们在日常工作中需要监控的大多数服务或者应用都能够通过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服务:
测试数据(注意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 命令.
|
阅读(2434) | 评论(0) | 转发(0) |