5分あれば出来る、Muninでelasticsearch 1.xのリソース監視を行う方法
JVMで動くelasticsearchを安定運用させるにはリソース監視も欠かせません。
今回は手軽なリソース監視が出来るMuninを用いて、インストール方法から作られるグラフサンプルの紹介まで行います。
利用プラグイン
elasticsearch 1.x系で動くプラグインは現状これ1つのみです。Perlで書かれているため外部依存無しで動きます。
- y-ken/munin-plugin-elasticsearch
A useful Munin plugin for monitoring elasticsearch 1.x nodes in Perl.
https://github.com/y-ken/munin-plugin-elasticsearch
次のプラグインが同封されています。
- elasticsearch_cache - フィールドとフィルタのキャッシュ状況
- elasticsearch_cluster_shards - クラスタのシャード状況
- elasticsearch_docs - 格納されているドキュメントの数
- elasticsearch_gc_time - GCする際に掛かった時間
- elasticsearch_index_size - インデックスのサイズ
- elasticsearch_index_total - インデックスの総数
- elasticsearch_jvm_memory - JVM ヒープ状況
- elasticsearch_jvm_pool_size - JVM プールサイズ状況
- elasticsearch_jvm_threads - JVM スレッド状況
- elasticsearch_open_files - 開いているファイル数の数
環境
- CentOS 6.5 (64bit)
- elasticsearch 1.1.1 および 1.4.2
- Munin 2.0.12 (munin-node-2.0.12-2.el6)
インストール
次の手順にてインストールします。
# /usr/local/src/ディレクトリにリポジトリをクローン $ cd /usr/local/src/ $ sudo git clone https://github.com/y-ken/munin-plugin-elasticsearch.git # クローン下リポジトリに同封されているプラグインをmuninのプラグインディレクトリへコピー $ cd munin-plugin-elasticsearch $ sudo cp -p elasticsearch_* /usr/share/munin/plugins/ # 既存プラグインと同様に、シンボリックリンクを作成 $ sudo ln -s /usr/share/munin/plugins/elasticsearch_* /etc/munin/plugins/ # munin-node-configureコマンドを用いてプラグインの適応テストと自動登録を行う $ sudo -H munin-node-configure --shell | grep elasticsearch | sudo -H sh
設定
標準では localhost:9200 で動くelasticsearchへ接続してメトリクス収集を行います。
もし別IPやportを対象に監視を行う場合には、env.host
やenv.port
設定を書きます。
[elasticsearch_*] env.host localhost env.port 9200
次のいずれかのファイルに設定を書き込みます。
- 既存ファイル
/etc/munin/plugin-conf.d/munin-node
へ追記 - 新規ファイル
/etc/munin/plugin-conf.d/elasticsearch
を作成
最後にMuninのclientデーモンを再起動すれば完了です。
$ sudo service munin-node restart
しばらくすると、ブラウザでアクセスする"Munin overview"の画面にこのように現れます。
グラフ
次に、このプラグインをインストールすることで可視化されるRRDtoolグラフを紹介します。 毎日深夜にドキュメントが大幅に減るのは、logstashインデックス形式で格納している、とある実験データを日次で削除しているためです。
- elasticsearch_cache
- elasticsearch_cluster_shards
- elasticsearch_index_size
- elasticsearch_docs
- elasticsearch_jvm_memory
- elasticsearch_index_total
- elasticsearch_jvm_threads
- elasticsearch_open_files
まとめ
elasticsearchはJavaのためJVM監視はもちろんのこと、これらのリソース監視を始めた上で運用したいですね。
余裕があればさらに、処理に時間の掛かったスロークエリ量の可視化も行うと良いでしょう。それについては今後紹介したいと思います。
更新履歴
- 2015年1月21日 : 設定無しに使えるようになったため、インストール手順を更新