HadoopをZabbixで監視する

今回はZabbixでHadoopを監視する方法です。
Gangliaでの監視が一般的ですが、Zabbixでやってみました。

前回のエントリでも書きましたがHadoopjmxでメトリクスを取得出来ます。
なのでZabbix Java Gatewayjmx監視を行いました。

今回も例としてNameNodeのCapacityUsedGBの値を取得してみます。

構成図

1台にzabbix-serverとzabbix-java-gatewayを同居させます。
Zabbixのバージョンは2.2.4-1.el6です。
yumでインストールしました。
※OpenJDKもインストールしておきます。

f:id:kashigeru:20140722215540j:plain

Zabbix Java Gatewayの設定

/etc/zabbix/zabbix_java_gateway.conf
下記のように編集します。

LISTEN_IP=10.1.1.1←自身のIP
LISTEN_PORT=10052
START_POLLERS=5

プロセスを起動します。
※ログファイルにエラーが出てないこと

Zabbix Serverの設定

/etc/zabbix/zabbix_server.conf 下記のように編集します。

JavaGateway=10.1.1.1←自身のIP
JavaGatewayPort=10052
StartJavaPollers=5

プロセスを起動します。
※ログファイルにエラーが出てないこと

待ち受けポート確認

10052で待ち受けていること。

netstat -lt | grep 10052
tcp        0      0 10.1.1.1:10052    *:*   LISTEN

Hadoop側設定

jmxをenableにして待ち受けるポート:10010を指定します。
hadoop-env.shを編集します。
今回はNameNodeなので
”export HADOOP_NAMENODE_OPTS=”の箇所を下記のように編集します。

export HADOOP_NAMENODE_OPTS="-Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=10010 $HADOOP_NAMENODE_OPTS"

※Cloudera Managerで構築している場合はこちらを参照

Zabbix GUI設定

ホスト登録
JMX interfacesを下記のように設定します。

f:id:kashigeru:20140722220605j:plain

拡大

f:id:kashigeru:20140722220642j:plain

ホストの登録が完了したらアイテムを登録します。
TypeをJMX agentにします。
キーは
jmx["Hadoop:service=NameNode,name=FSNamesystem",CapacityUsedGB]
とします。

f:id:kashigeru:20140722220752j:plain

しばらくすると値が取れます。

f:id:kashigeru:20140722221009j:plain

グラフも描画出来てます。

f:id:kashigeru:20140722221034j:plain

グラフの種類とか閾値は適宜変更or設定してください。

まとめ

既存の監視システムがZabbixであれば、Gangliaを構築しなくても監視出来ます。
監視出来てるという目的が達成されれば手段は何でもいいと思います。
個人的にはUIがカッコイイほうがいいな。自作するかー。
(ノ´▽`)ノ{+++THANK YOU+++}ヽ(´▽`ヽ)

広告を非表示にする