ZabbixでKVMのpool-listの死活監視をする
pool-list
は一言で言うとイメージの置き場所の一覧です。
例えば、KVMが動作する環境でvirsh pool-list
というコマンドを打ち込むと
ストレージプールの現在の状態や自動起動設定はどうなっているかを確認できる。
[root@KVM]# virsh pool-list Name State Autostart ------------------------------------------- aiueo active yes default active yes gomi active no templates active yes
基本的には自動起動の設定をやるものだと思ってるんだけど、
何らかの原因(障害など)でストレージプールが起動ができなくなった場合がある。
今回は、これをZabbixで監視してみる。
ZabbixのUserParameterを利用する
Zabbixで事前に定義されていない監視をやりたい場合、自分でスクリプトを書いたりしなければならない。
そこで役立つのがUserParameterです。
KVMの監視は、Zabbixで事前に定義されていないものなので、
自分でスクリプトを書く必要があります。
まずはスクリプトを書く
下記のShellScriptを書きました。(virsh-pool-status.sh)
POOL_STATUS
の行で、virsh pool-list
から得られる情報をパースしています。
#!/bin/sh READ_ARGUMENT=$1 if [ "${READ_ARGUMENT}" = "" ];then ERROR=`date +"%Y%m%d:%H%M%S "`${0}' : empty argument $1' echo $ERROR exit fi POOL_STATUS=`sudo virsh pool-list | sed -e '1,2d' | sed -e 's/^ *//' | sed -e 's/ *$//' | sed -e 's/\s\+/,/g' | grep -w ${1} | cut -f2 -d ','` ACTIVE="active" DEAD="inactive" if [ ${POOL_STATUS[${READ}]} = ${ACTIVE} ]; then echo 1 elif [ ${POOL_STATUS[${READ}]} = ${DEAD} ]; then echo 0 else echo "" fi
1回目のsedで、1-2行目の不要な情報をカットします。
2,3回目のsed行前後の空白文字をカットし、
4回目のsedで複数の空白を,
に置換しています。
(これは後から、得られる情報を取り出しやすくするためです)
sedが終わった段階では下記のようになっているはずです。
# sudo virsh pool-list | sed -e '1,2d' | sed -e 's/^ *//' | sed -e 's/ *$//' | sed -e 's/\s\+/,/g' aiueo,active,yes default,active,yes gomi,active,yes templates,active,yes
あとは、grepで取り出すストレージプールを探して決めて、そこからcutコマンドで必要な列を抽出するだけです。
こんな感じで簡単に書くことができます。
POOL_STATUS
より下の行はactive,inactiveの情報を0 or 1の情報に変換しているだけです。
ACTIVE="active" DEAD="inactive" if [ ${POOL_STATUS[${READ}]} = ${ACTIVE} ]; then echo 1 elif [ ${POOL_STATUS[${READ}]} = ${DEAD} ]; then echo 0 else echo "" fi
ストレージプールを引数として渡して実行してみると1
や0
が帰ってくるはずです。
# sh virsh-pool-status.sh templates 1
スクリプトの配置と設定
スクリプトは/etc/zabbix/virsh-pool-status.sh
として配置し、実行権限をつけておきましょう。
また、大抵の環境ではvirsh
コマンドの実行はrootでやってますんで、zabbixユーザーにコマンドの実行権限を渡してやる必要があります。
visudo
コマンドを使って設定を変更します。
Defaults:zabbix !requiretty zabbix ALL = NOPASSWD: /bin/virsh
全部のコマンドの権限を渡すの必要は無いので、今回はvirshだけ渡します。
ユーザーパラメーターの定義
/etc/zabbix/zabbix_agentd.conf
に下記を追加しておきます。
UserParameter=virsh.pool_status[*],/etc/zabbix/virsh-pool-status.sh $1
これで設定は完了です。
ZabbixServerから値が取れるかチェックしてみる
]# zabbix_get -s IPADDR -k virsh.pool_status[templates] > 1
ふう。とれたー。
あとは、Webからぽちぽちするだけですね。
ハッカーズチャンプル2016に参加してきました
昨日はハッカーズチャンプルに参加してきました。 hackers-champloo.org
今回は、ボランティアスタッフとして
微力ながらお手伝いさせていただきましたm( )m
可愛いTシャツもいただきました(^o^)/
みなさん刺激的な発表をしててすごい楽しかったです。
内容も素敵でしたが、+見せ方、伝え方がうまいなぁって感じました。
場馴れなのか、それともそういう勉強をしているのかどうかは気になっています。
Mackerelの話が聞けたり、DBの負荷分散だったりすごく満足してます。
来年もお手伝いできたら嬉しいです。
そろそろインプットばかりでなく
アウトプットもしたいところ(=o=)/
仮想マシンをVirtualBoxからESXiへ移行する
VirtualBoxで動作させていたVMをESXiに移行する必要があったので、その時のメモ。
VirtualBoxでの作業
Macのデフォルトだと~/Documents
ディレクトリにあるはずです。
ただし、そのOVAファイルをそのままESXiにデプロイできないため、
ちょっと設定を変更する必要があります。
ovftoolの導入
VMWare OVF Tool - VMWareからVMWare OVF Tool for Mac OSXをダウンロードしてインストールします。
GUIからインストールすると/Applications/VMWare OVF Tool
というディレクトリができてるので、そこにovftoolコマンドが入ってます。
OVAファイルの書き換え
ここを参考にやってみます。 - OVAファイルからOVFファイルを抽出
$ cd /Applications/VMWare OVF Tool $ ./ovftool --lax ~/Documents/test.ova ~/Documents/test.ovf $ ls ~/Documents/ > - test.ova > - test.ovf > - test.vmdk > - test.mf
- OVFファイルの書き換えは上記のURLを参考に。
- sha1の再生成
OVFファイルを書き換えたことによりsha1が変わってるので、
test.ovf
のsha1を再生成してtest.mf
の中も書き換える必要があります。
下記のコマンドでsha1を再生成してコピペしてください。
$ openssl sha1 test.ovf >SHA1(test.ovf)= xxxxxxxxxxxxxxxxxxx
OVFをESXiにデプロイする
vCenterは利用しません。ovftoolコマンドでmacからESXiに向けてデプロイします。
__ID__
ESXiのID__PASSWORD__
ESXiのパスワード__ESXi_HOST__
ESXiのIPアドレス
$ ./ovftool --diskMode='thin' --name='test' ~/Documents/test.ovf vi://__ID__:__PASSWORD__@__ESXi_HOST__
これでデプロイは完了です。おしまい。
ZabbixでHueを監視してみる
4月に自宅にHueを導入してから、
生活レベルがちょっと上がったような気がします(^o^)
実はタイマーを設定しており
- 寝る時間になったら照明を切る
- 起きる時間になったら照明を入れる
- 会社に行く時間になったら照明を切る
というのをやってます。
後はイレギュラーなものに対応するためにスマホのGPSを利用して
- 家から離れると照明を切る
- 家に近づくと照明を入れる
というのもやってます。
最近、家に不在の間に誤作動が起きているという話が家族から上がってきてたので
Zabbixで監視することにしました。
Hueは、SNMPを喋ったりZabbix-Agent仕込んだりというのはできません。
かといって、Web監視では、HTTPリクエストのステータスしかチェックできないので、
Zabbixの外部チェック機能を利用する必要があります。
curl叩いて返ってきたjsonをperseする
とかそういうのを考えているなら外部チェックを利用しましょう。
外部チェック機能はZabbixのドキュメントに詳しく書いてます。
3.0のマニュアルは英語版のみですが、2.2のドキュメントを見るとやることは大きく変わってる様子もないので、
日本語が良いって人は2.2のドキュメントを見るといいかもしれません。
じゃあさっそくはじめます。
APIキーの取得
hueコントローラーのIPアドレスは192.168.0.3
とします。
コントローラーのボタンを押してからcurlを叩くとシークレットキーっぽいのが返ってきますのでそれを保存しておいてください。
$ curl -d '{"devicetype":"Zabbix"}' http://192.168.0.3/api
試しに情報を取ってみる
取れてたらOKです。
$ curl http://192.168.0.3/api/__SECRETKEY__/lights
ZabbixServerにスクリプトを登録
/usr/lib/zabbix/externalscripts
に下記の2つのスクリプトを置きます。
[root@zabbix30 externalscripts]# ls hue-brightness-check.sh hue-light-check.sh
hue-light-check.sh
照明のON,OFFの状態をチェックします。
#!/bin/sh IPADDR=$1 SECRETKEY=$2 LIGHT_NUMBER=$3 SWITCH=`curl -s http://${IPADDR}/api/${SECRETKEY}/lights/${LIGHT_NUMBER} | jq .state.on` if [ ${SWITCH} == true ]; then echo 1 else echo 0 fi
hue-brightness-check.sh
ランプの明るさをチェックします。
#!/bin/sh IPADDR=$1 SECRETKEY=$2 LIGHT_NUMBER=$3 SWITCH=`curl -s http://${IPADDR}/api/${SECRETKEY}/lights/${LIGHT_NUMBER} | jq .state.on` if [ ${SWITCH} == true ]; then curl -s http://${IPADDR}/api/${SECRETKEY}/lights/${LIGHT_NUMBER} | jq .state.bri else echo 0 fi
jsonのperseにはjq
コマンドを利用しているので、インストールしておいてください。
yum install epel-release yum install --enablerepo=epel jq
でインストールできます。
ホストの登録
ホストを登録する際にマクロを設定しておいてください。
{$API_KEY} = SECRETKEY {$IPADDR} = IPアドレス
アイテムの登録
タイプを外部チェックにして下記のキーを登録します。 引数の最後の"1"は、電球の数ですので、その数の分アイテムを登録してください。
hue-light-check.sh["{$IPADDR}","{$API_KEY}","1"]
アイテム全体はこんな感じです。
うちは電球が3つあるので、3つ登録していて、
light-checkとbrightness-checkで計6つとping監視も入れてます。
グラフの作成
スクリーンへの登録
これで照明がついた時間とか何時にどのくらいの明るさになっているかをチェックできるようになりました。
クラブっぽく照明をチカチカさせてたらとんでもないグラフになりそうですね。
おまけ
3週間ほど前にjanogのUS Regional Meetingがあったようです。
ustreamにアーカイブがあったので昨日1日かけて見てました(^o^)
結構面白かった。
来月は沖縄で開催されるようなので、
行ってきます(^o^)
iPhone5sのバッテリーを交換してみた
iPhone5sのバッテリーが劣化してて、
そろそろ交換しようかなと思って保証期間を見ると
2年過ぎてた・・・orz
iPhone7までは待ってられないし、
かといって1万払って交換するか迷ってたんだけど
Amazonさんをみるとこういうのがあった
ほう。自分で交換か...
失敗したらASUSの安いやつかiPhoneSEを買うくらいの気持ちでやるのもありかもしれない
と思って、ポチっちゃいました。
交換作業
必要なものは購入したパッケージに入ってるので別途必要はありません。
下記の動画を参考にしながらやってました。
ホームボタンのケーブル
フロントカバーって結構硬くてちょっと力を入れて開けないといけないんだけど、
勢いあまってホームボタンのケーブルを切りそうになる。危ない危ない。
バッテリーのコネクタ
こっちは結構簡単に外れる。ただし、基盤を傷つけないように。
ディスプレイのケーブル
外さなくても頑張ればバッテリーを交換できるのだけれど、
何かの拍子にケーブルを切りかねないのでこの辺も外しておく。
外し方も動画に乗ってるのでご参考まで。
ネジが微妙に大きさが違うので、大きさをきちんと覚えておくこと
バッテリーを剥がす
両面テープみたいなのでくっついてるので剥がすのに一苦労。
摘むところがあるんだけど、そこが切れると剥がすのはもう大変大変。
ちなみに、僕は切れたので、バッテリー部分を再度温めなおして、ヘラで少しづつ持ち上げていく
ここだけで30分くらい使った。慎重にやらないと反対側の基盤に傷がつく。
後は、剥がすときにバッテリーを傷つけてしまって火花が散った。
「あ、やばい!w これ終わったやつかな?w」って思ったけど、ダメ元で最後までやってみる。
取り付け作業とその後の工程
両面テープ貼ってその上にバッテリーを貼り付けるだけでOKです。
後は、ケーブルを基盤にはめ込んでカバーをするだけです。
ネジがあまりにも小さくてカバーの穴に入らなくて結構時間かかりました。
動作チェック
電源入りました!やったぜ!
動作も問題なしでした。
感想
自分でバッテリー交換をやってみるのも面白いんですが、
作業が結構大変だったので1万円払ってでもプロにお願いしたほうがいいです。
失敗したときのために予備端末を持っておくか、
新しい端末を契約するくらいの覚悟でやったほうが良いです。
おしまい。
おまけ
Twitterでフォローしてる人が
ちょっと変わったコースターを上げてたので僕も買いに行きました。
キーボードの絵柄なんて始めてみました(^o^)
赤瓦でできてるので吸水性も抜群だそうです。
会社用と自宅用で2つ買っちゃいました。
おしま