我正在采取networkingpipe理课程,主要议题是SNMP。 尽pipe我的老师擅长解释SNMP(V1,V2,V3,RMON,MIBS等)的理论部分,但他并不擅长解释实际的东西,比如我如何使用刚才收集的信息,或者如何使用SNMP检测networking拥塞或exceptionstream量。 任何信息,将不胜感激。
我经常将SNMP与rrdtool结合使用来提供概览图,让我了解stream经networking中路由器的stream量以及服务器的cpu /内存使用情况。 一个常见的命令行工具是“snmpget”,它将获取并输出由启用了SNMP的设备提供的特定数据。
例如,要通过我的Cisco路由器传输八位组,我使用:
snmpget -v 1 -c public $ router_ip_address IF-MIB :: ifOutOctets.3 | egrep -o“[0-9] + $”
然后将输出传送到rrdtool。 在消费级设备中,我经常碰到SNMP实际上并不存在的支持(芯片可能在那里,但实际上并没有写入固件) – 所以这绝对值得注意。 例如,在这个思科之前就有一台“支持”SNMP的Netgear路由器,但实际上并没有输出任何数据。
为了弄清给定设备可用的数据,可以使用snmpwalk命令或检查MIB。 但是,我发现检查MIB几乎是无用的,因为我遇到的大多数设备都倾向于使用他们自己的自定义MIB(或者不宣传它们支持的那些设备)。 snmpwalk命令的一个例子是; snmpwalk -c public $device_ip_address
如果您对我的rrdtool绘图感兴趣,下面是我的脚本部分(每五分钟运行一次)的示例,以绘制我的路由器stream量图。
function plot_router { if [ ! -e $DATA_DIRECTORY/router.rrd ]; then rrdtool create $DATA_DIRECTORY/router.rrd --start now \ DS:bytes_in:COUNTER:600:U:U \ DS:bytes_out:COUNTER:600:U:U \ RRA:AVERAGE:0.5:1:600 \ RRA:AVERAGE:0.5:6:700 \ RRA:AVERAGE:0.5:24:775 \ RRA:AVERAGE:0.5:288:797 \ RRA:MAX:0.5:1:600 \ RRA:MAX:0.5:6:700 \ RRA:MAX:0.5:24:775 \ RRA:MAX:0.5:288:797 fi bytes_in=`snmpget -v 1 -c public $router_ip IF-MIB::ifInOctets.3 | egrep -o "[0-9]+$"` bytes_out=`snmpget -v 1 -c public $router_ip IF-MIB::ifOutOctets.3 | egrep -o "[0-9]+$"` rrdtool update $DATA_DIRECTORY/router.rrd \ N:$bytes_in:$bytes_out # The actual graphing... for (( i=0;i<$SEGMENTS_COUNT;i++)); do SEGMENT=${SEGMENTS[${i}]} FILENAME="$OUTPUT_DIRECTORY/router_$SEGMENT.png" rrdtool graph $FILENAME -s e-$SEGMENT -e now -h $HEIGHT -w $WIDTH --title "(`date`) Router"\ --rigid \ --slope-mode \ DEF:bytes_out=$DATA_DIRECTORY/router.rrd:bytes_out:AVERAGE \ CDEF:inverted=0,bytes_out,- \ AREA:inverted$fg_color1:"Bytes Out (Upload)" \ DEF:bytes_in=$DATA_DIRECTORY/router.rrd:bytes_in:AVERAGE AREA:bytes_in$fg_color2:"Bytes In (Download)" \ CDEF:error=bytes_in,UN,INF,0,IF \ AREA:error$fg_color_error:"Errors" \ GPRINT:bytes_in:AVERAGE:"Avg Bytes In\: %3.0lf" \ GPRINT:inverted:AVERAGE:"Avg Bytes Out\: %3.0lf" >> /dev/null done }
注意脚本每五分钟运行一次。 对于我来说,在我所有使用rrdtool的年代里,我从来没有花时间为RRAsfind正确的“调音”,而只用了五分钟的时间间隔。 如果你弄错了调音,你将会得到完全空白的图表和完全的困惑。 所以,从我的经验来看,只需要5分钟的时间间隔(从cron开始每5分钟运行一次插入脚本),除非你想花点时间找出正确的RRAs。
我也想指出,虽然rrdtool是Linux系统的一个了不起的工具,但它也可以在OSX上使用(它可以通过Cygwin在Windows上使用)。 通过fink轻松安装 – 只需确保将“unstable / main”和“unstable / crypto”树添加到/sw/etc/fink.conf文件中,然后将“fink install rrdtool”添加到您的幸福方式中。
我希望这可以让我们对SNMP的一些实际应用有所了解。
SNMP主要用于性能监视。 考虑到这一点,如果您的意思是“exception繁忙”,则可以使用SNMP来检测exception的networkingstream量。 只要每隔x分钟阅读一次适当的度量标准,就可以将这些值绘制成rrdtool之类的东西并检查图表。 您也可以每隔一段时间读取值,并触发一些警报(如果值太高,则发送电子邮件,短信或类似的东西)。
也就是说,configurationSNMP总是需要一定的投资时间和金钱。 这不是一个火,忘了解决scheme,但它是非常灵活和强大的。
使用SNMP不仅仅是监视和测量networkingstream量。 SNMP可以用于监视接口状态,CPU和内存使用情况,networking和服务器设备上的硬件状态等。在我的环境中,SNMP是监视从服务器到交换机到防火墙等各个硬件运行的关键。