2013年10月8日火曜日

nagiosのHBaseプラグインをセットアップ

http://www.ymc.ch/en/how-to-monitor-hbase-health-by-nagios
Gerd Königmdさんのスクリプトを参考にします。
環境はCentOS 6.4です。

hbaseのパスを確認
# which hbase
/usr/local/hbase/bin/hbase

編集します
# vi check_hadoop_hbase_state

先頭にJava HOMEを記述
# Java HOME
export JAVA_HOME=/usr/lib/jvm/java
export CLASS_PATH=$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH

以下を書き換え
hbaseCmd=/usr/bin/hbase
->
hbaseCmd=/usr/local/hbase/bin/hbase

tmpFile=$(tempfile --suffix '_hbck_out')
->
tmpFile=$(mktemp --suffix '_hbck_out')

このようなスクリプトになりました。
#!/bin/sh
#
# Description:
# This plugin will return information about the status of HBASE

# Java HOME
export JAVA_HOME=/usr/lib/jvm/java
export CLASS_PATH=$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH

hbaseCmd=/usr/local/hbase/bin/hbase
problemStrings="inconsistent|corrupt|failed|exception"

if [ ! -x $hbaseCmd ]; then
  echo "ERROR: cannot execute $hbaseCmd"
  exit 2
fi
tmpFile=$(mktemp --suffix '_hbck_out')
if [ ! -f "$tmpFile" ]; then
  echo "Problem creating a tempfile for hbck output..." 1>&2
  exit 1
fi

$hbaseCmd hbck > $tmpFile
if [ ! $? -eq 0 ]; then
  echo "Error while executing $hbaseCmd hbck"
  exit 2
fi
count=$(grep -Ei -c "$problemStrings" $tmpFile)
if [ $count -eq 0 ]; then
  message="Ok. HBase is healthy."
  exit_code=0
else
  error=$(grep -Ei "$problemStrings" $tmpFile)
  message="ERROR: $error"
  exit_code=2
fi

hbckDetails=$(head -n 17 $tmpFile && tail -n 2 $tmpFile)
if [ -f "$tmpFile" ]; then
  rm -f $tmpFile
fi
echo "$message | $hbckDetails"
exit $exit_code

スクリプトを設置
# cp check_hadoop_hbase_state /usr/lib64/nagios/plugins/

動作チェック
# /usr/lib64/nagios/plugins/check_hadoop_hbase_state

nrpeに追記
# emacs /etc/nagios/nrpe.cfg
command[check_hadoop_hbase_state]=sudo /usr/lib64/nagios/plugins/check_hadoop_hbase_state

rootで実行できるようにしておく
# visudo
nrpe  ALL=(ALL)       NOPASSWD:/usr/lib64/nagios/plugins/check_hadoop_hbase_state

nrpeをリスタート
# /etc/init.d/nrpe restart