Chinaunix首页 | 论坛 | 博客
  • 博客访问: 298458
  • 博文数量: 240
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 50
  • 用 户 组: 普通用户
  • 注册时间: 2016-08-04 18:14
文章分类

全部博文(240)

文章存档

2017年(8)

2014年(4)

2013年(15)

2012年(4)

2011年(14)

2010年(55)

2009年(140)

我的朋友

分类: 系统运维

2009-05-23 22:57:06

 
    我们在日常工作中需要监控的大多数服务或者应用都能够通过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 命令.



阅读(2300) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~