Zabbixでsnmptrapdを使い、VMwareのホストから受信(snmptrapd編 その1)これと
Zabbixでsnmptrapdを使い、VMwareのホストから受信(snmptrapd編 その2)これと
Zabbixでsnmptrapdを使い、VMwareのホストから受信(zabbixスクリプト編 その1)これの続き。
前回はVMwareのホストから出てくるsnmptrapdの出力が日本語HEXだったという発見ができたというところまで。
■日本語HEXの逆変換
では、日本語HEX逆変換をするには?という事で探したら、xxd というものが見つかった。
Linuxの16進ダンプツール(od,xxd)
さらに調べると、このxxdは単体のパッケージが見つからなかったので、vim を入れるとついてくるらしいという
情報を信じて、下記のようにインストール。(OSはCentOS5.4)
# yum install vim-common.x86_64 |
日本語HEX部分を/var/log/messages から取得してテキストファイルに落とし、コマンドで変換してみる。
# xxd -r -p /root/a.txt snmptrapd-111 - メトリック 使用量 = 5% または メトリック 使用量 = 89% または メトリック 使用量 = 3% または メトリック 使用量 = 4% または メトリック スワップ アウト速度 = 0% または または |
変換OKしかし、これをどのように使用すべきなのだろうか。
■日本語HEX変換をzabbix_snmptrap.shに適用
/usr/local/bin/zabbix_snmptrap.shを変更
vmware1=`echo $vmware1 | cut -f 2 -d'"' |xxd -r -p` vmware2=`echo $vmware2 | cut -f 2 -d'"' |xxd -r -p` vmware3=`echo $vmware3 | cut -f 2 -d'"' |xxd -r -p` str="$address $community $vmware1 $vmware2 $vmware3" |
※テストのため大胆に他の部分をカットしてある。
とりあえず、zabbixに取り込まれたもの
"host" 192.168.11.111 緑 赤 snmptrapd-111 - |
改行が入っちゃっているのかもしれない。
read -d '"' vmware3 read -d '"' vmware4 vmware3=`echo $vmware3 | cut -f 2 -d'"' |xxd -r -p` vmware4=`echo $vmware4 | cut -f 2 -d'"' |xxd -r -p` str="$address $community $vmware1 $vmware2 $vmware4" |
このような形に変更。read -d で区切り文字が変更できるとは知らなかった。初めて使った。
/root/b.txtに得られた値(/tmp/zabbix_vmware.output)
/root/a.shに抜粋したスクリプトと標準出力への出力を作成。
# cat b.txt|sh a.sh
"host" 192.168.11.111 緑 赤 snmptrapd-111 - メトリック 使用量 = 5% または または または メトリック ス ワップ アウト速度 = 0% または メトリック 使用量 = 90% または メトリック 使用量 = 7% |
このような出力が得られたので、一定の情報は取得可能と思われる。(不必要な情報も多いけれど)
■最終的なスクリプト
#vi /etc/snmp/snmptrapd.conf
authCommunity log,execute,net snmptest traphandle default /bin/bash /usr/local/bin/zabbix_vmware_snmptrap.sh >> /tmp/zabbix_snmptrap.log 2>&1 |
# vi /usr/local/bin/zabbix_vmware_snmptrap.sh
#!/bin/bash # # Zabbix # Copyright (C) 2000,2001,2002,2003 Alexei Vladishev # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # # FOR trouble shoot (rebine) #echo '---------------' >> /tmp/zabbix_vmware.snmpoutput # CONFIGURATION ZABBIX_SERVER="127.0.0.1"; ZABBIX_PORT="10051"; ZABBIX_SENDER="/usr/bin/zabbix_sender"; KEY="snmptraps"; HOST="snmptraps"; # END OF CONFIGURATION read hostname read ip read uptime read oid read address read community read enterprise read vmware1 read vmware2 read -d '"' vmware3 read -d '"' vmware4 oid=`echo $oid|cut -f2 -d' '` address=`echo $address|cut -f2 -d' '` community=`echo $community|cut -f2 -d' '` enterprise=`echo $enterprise|cut -f2 -d' '` oid=`echo $oid|cut -f11 -d'.'` community=`echo $community|cut -f2 -d'"'` vmware1=`echo $vmware1 | cut -f 2 -d'"' |xxd -r -p` vmware2=`echo $vmware2 | cut -f 2 -d'"' |xxd -r -p` vmware3=`echo $vmware3 | cut -f 2 -d'"' |xxd -r -p` vmware4=`echo $vmware4 | cut -f 2 -d'"' |xxd -r -p` #str="$hostname $address $community $enterprise $oid" str="$address $community $vmware1 $vmware2 $vmware4" $ZABBIX_SENDER -z $ZABBIX_SERVER -p $ZABBIX_PORT -s $HOST -k $KEY -o "$str" |
■snmptrapdのワイルドカード
http://www.zabbix.jp/modules/newbb/viewtopic.php?topic_id=582&forum=6
このような情報があり、snmp5.4以降からワイルドカードが使えるようになったらしいが、残念ながらこのサーバのバージョンが古い。古いままで個別の登録をするのは効率が悪いので、snmptrapd = VMware専用とするように設定をクローズ。
この回で終了。