Wednesday, October 9, 2013

Nagiosgraphのインストール

※最新版の記事はこちらです




http://nagiosgraph.sourceforge.net/
Nagiosgraphを使って、Naigosが取得したデータをグラフで見れるようにします。
OSはCentOS6.4です。

nagiosが/usr/local/nagios/にインストールされている状態にしておきます。

Nagiosgraphをダウンロード
# wget http://sourceforge.net/projects/nagiosgraph/files/latest/download?source=files

環境を整える。
# tar -xvzf nagiosgraph-1.4.4.tar.gz
# cd nagiosgraph-1.4.4
# ./install.pl --check-prereq

Nagiosのインストールディレクトリと同居させるため、overlayを選択。
Nagiosの設定と齟齬のないように選んでいく。
# ./install.pl --layout overlay --prefix /usr/local/nagios

nagios.cfg に以下を記述
# process nagios performance data using nagiosgraph
process_performance_data=1
service_perfdata_file=/tmp/perfdata.log
service_perfdata_file_template=$LASTSERVICECHECK$||$HOSTNAME$||$SERVICEDESC$||$SERVICEOUTPUT$||$SERVICEPERFDATA$
service_perfdata_file_mode=a
service_perfdata_file_processing_interval=30
service_perfdata_file_processing_command=process-service-perfdata-for-nagiosgraph

command.cfg に以下を記述
# command to process nagios performance data for nagiosgraph
define command {
  command_name process-service-perfdata-for-nagiosgraph
  command_line /usr/local/nagios/libexec/insert.pl
}

apache confに以下のような記述を追記
ExecCGIで、CGIが動くようにします。
  ScriptAlias /nagios/cgi-bin/ "/usr/local/nagios/sbin/"
  <Directory "/usr/local/nagios/sbin">
    AllowOverride None
    Options ExecCGI
    Order allow,deny
    Allow from all
    AuthName "Basic"
    AuthType Basic
    AuthUserFile /usr/local/nagios/etc/htpasswd.users
    Require valid-user
  </Directory>

nagiosをリスタート
# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
# /etc/init.d/nagios restart

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

確認してみましょう。

Tuesday, October 8, 2013

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


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


nagiosのRedisプラグインをセットアップします。

William Leibzon

さんのプラグインを利用します。
https://github.com/willixix/


CPANモジュールをインストール
# yum install cpan
# yum install perl-ExtUtils-Manifest
# cpan
cpan[1]> force install Redis

githubからスクリプトをクローン
# git clone https://github.com/willixix/WL-NagiosPlugins.git

スクリプトを設置
# cp WL-NagiosPlugins/check_redis.pl /usr/lib64/nagios/plugins/

動作チェック
# /usr/lib64/nagios/plugins/check_redis.pl -H localhost -A used_memory,used_memory_peak,connected_clients

nrpeに追記
# emacs /etc/nagios/nrpe.cfg
command[check_redis]=/usr/lib64/nagios/plugins/check_redis.pl -H localhost -p 6379 -T "0.01,0.02" -R -A -M 60G -m "50,80" -a blocked_clients,connected_clients -w 10,5000 -c 100,10000  -f

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


上記の監視では、以下のパラメータを設定しています。

-H : ホスト
localhost

-p : ポート
6379

-T "[conntime_warn,conntime_crit]" : コネクションタイムでのアラート
0.01秒で警告、0.02秒でクリティカル

-R : ヒットレート出力
-A :  パフォーマンス情報一覧出力

-M : サーバのメモリ値(アラートのしきい値では無いので注意)
60G

-m "[mem_utilization_warn,mem_utilization_crit] ": メモリの使用率でのアラート
50%で警告、80%でクリティカル

-a : 追加の統計変数
blocked_clients ブロッキングコールされた数
connected_clients コネクション数

-w : -aの変数の警告しきい値
blocked_clients 10クライアント以上で警告
connected_clients 5000クライアント以上で警告

-c : -aの変数のクリティカルしきい値
blocked_clients 100クライアント以上でクリティカル
connected_clients 10000クライアント以上でクリティカル

-f : グラフ出力の為に出力データを整形する


参考)
INFO [section] -> redisのinfo詳細が記載されている。
http://redis.io/commands/info


Sunday, October 6, 2013

Kestrelに関する日本語の情報まとめ


Kestrelは、分散メッセージキューシステムです。
Twitterのバックエンドで使われていることで有名になりました。
日本語の情報は少ないですが、集めてみました。

PHP+Kestrel+Supervisorでお手軽タスクキューイング
http://blog.asial.co.jp/875

twitterでも利用されているメッセージキュー Kestrelを試す
http://yuroyoro.hatenablog.com/entry/20090803/1249297348

kestrelのマニュアル和訳
http://d.hatena.ne.jp/hito_asa/20101018/1287407597

kestrelの作者さんによるkestrelの紹介
http://d.hatena.ne.jp/hito_asa/20101018/1287382292

ZendQueueとKestrelでメッセージキューサーバーを体験
http://qiita.com/NAKANO_Akihito/items/241869eaa857ac843a65

Kestrel:Reliable Read
メッセージングシステムで、dequeue 後に正しく処理できずに異常終了したらどうなるのか?
http://siguniang.wordpress.com/2012/05/06/kestrel-reliable-read/