前のサーバで使っていた、AirStation WZR-HP-G300NHのパケット流量観察のための SNMP用スクリプトだけど、MRTGからmuninに切り替えてしまったので、 スクリプトを変更してみた。
muninのプラグインの作り方は大体わかってきたけど、in/outでプラス/マイナスで 表示する方法を試してみた。 ポイントは、"config"時の出力で、マイナス領域に表示する方は、"MMMM.graph no"にして、 プラス領域に表示する方は、"PPPP.negative MMMM" を出力すること。 "MMMM.graph no"を忘れると、プラス領域のグラフも残ってしまう。
#!/bin/bash #%# family=auto #%# capabilities=autoconf USER=root PASS=XXXXXXXX # ルータ管理者パスワード HOST=192.168.YY.YY # ルータIPアドレス URL="http://$USER:$PASS@$HOST/cgi-bin" available="yes" case $1 in config) echo "graph_title Buffalo router statics" echo "graph_category system" echo "graph_vlabel traffic (-)send / (+)recv" echo "graph_args --base 1000" for DIR in send recv ; do for TYPE in pkt err ; do echo "${IF}_${DIR}_${TYPE}.label ${IF} ${TYPE}" echo "${IF}_${DIR}_${TYPE}.type COUNTER" if [ "$DIR" = "send" ]; then echo "${IF}_send_${TYPE}.graph no" else echo "${IF}_recv_${TYPE}.draw LINE2" echo "${IF}_recv_${TYPE}.negative" \ "${IF}_send_${TYPE}" fi done done done exit 0 ;; autoconf) if [ "$available" = "yes" ]; then echo "yes" exit 0 else echo "no (daemon isn't running)" exit 1 fi ;; snmpconf|suggest) exit 0 ;; *) ;; esac # データの読み出し values=(`/usr/bin/w3m -dump_source -no-proxy \ "$URL/cgi?req=frm&frm=packet.html" 2>&1 \ | /bin/sed -n '/class="DIGIT"/ s/^.*">\([0-9]*\)<.*$/\1/ p'`) i=0 for IF in LAN WAN WiFi ; do for DIR in send recv ; do for TYPE in pkt err ; do echo "${IF}_${DIR}_${TYPE}.value" ${values[$i]} i=$(($i+1)) done done done # ログアウト処理 /usr/bin/w3m -dump_source -no-proxy \ "$URL/cgi?req=twz&frm=logout.html" >/dev/null 2>&1