So-net無料ブログ作成

インフラエンジニアのためのHadoop情報 状態監視その1 [Hadoop]

Hadoopを運用するノードもそれなりの台数になってくると、ノードの稼動状態を監視する
必要が出てきます。10台以上にもなるとそれぞれにログインしてプロセスを確認するのも
かなり面倒です。
ここでは、監視ツールとしてポピュラーな「Nagios」を使って、Hadoopノードを監視する
方法について書いておきます。
使うのは「check_http」コマンドです。このコマンドは、指定ポートに接続してhttpを
getして、得られるレスポンス文字列を調べて状態を判定します。
これを使ってHadoopの各サービスの状態を見てみましょう。
NameNode用のWebUI(http://[NameNodeのIP]:50070/dfshealth.jsp)には、レスポンス中に
「NameNode」の文字列が入っています。
この文字列を取得できたら、少なくともNameNodeは止まってはいないと判断できます。
このチェックを実現するNagiosのcommands.cfgの設定は以下のようになります。
define command {
       command_name  check_remote_namenode
       command_line   $USER1$/check_http -H $HOSTADDRESS$ -u http://$HOSTADDRESS$:$ARG1$/dfshealth.jsp -p $ARG1$ -r NameNode
       }

引数ARG1にはポート番号50070が入るので、service.cfgは以下のようになる。
define service {
       use             generic-service
       host_name       [NameNodeホスト名]
       service_description     check_remote_namenode
       contact_groups                  admins
       check_command   check_remote_namenode!50070
       }

JobTrackerも同じようにチェックできます。こちらは、「Map/Reduce」という文字列をチェック。
define command {
       command_name  check_remote_jobtracker
       command_line   $USER1$/check_http -H $HOSTADDRESS$ -u http://$HOSTADDRESS$:$ARG1$/jobtracker.jsp -p $ARG1$ -r Map/Reduce
       }

define service {
       use             generic-service
       host_name       [JobTrackerホスト名]
       service_description     check_remote_jobtracker
       contact_groups                  admins
       check_command   check_remote_jobtracker!50030
       }

DataNodeを監視したい場合は、各ノードにはWebUIが無いので、NameNodeの
WebUI(http://[NameNodeのIP]:50070/dfshealth.jsp)の画面から、稼動中の台数を示す文字列を
拾ってチェックします。
チェックプログラムはこちら。

http://github.com/so-net-developer/Hadoop/blob/master/scripts/check_hadoop-dfs.pl
http://exchange.nagios.org/directory/Plugins/Others/check-Hadoop-datanodes/details

commands.cfgはこうなる。
define command {
       command_name  check_remote_datanode
       command_line   /usr/local/bin/check_hadoop-dfs.pl $HOSTADDRESS$ $ARG1$ $ARG2$
       }

ARG1、ARG2にはDataNodeの台数を指定し、それぞれ指定台数を下回る(ノード停止)と
「WARNING」、「CRITICAL」のアラートを発生する。
services.cfgの例は
define service {
       use             generic-service
       host_name       [NameNodeホスト名]
       service_description     check_remote_datanode
       contact_groups                  admins
       check_command   check_remote_datanode!15!13
       }

となり、この場合は稼動しているDataNodeの台数が15台以下になると「WARNING」アラートが、
13台以下になると、「CRITICAL」アラートが出る。


この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。

×

この広告は1年以上新しい記事の更新がないブログに表示されております。