Y-Ken Studio

新しもの好きのデータエンジニアが四方山話をお届けします。

5分あれば出来る、Muninでelasticsearch 1.xのリソース監視を行う方法

JVMで動くelasticsearchを安定運用させるにはリソース監視も欠かせません。
今回は手軽なリソース監視が出来るMuninを用いて、インストール方法から作られるグラフサンプルの紹介まで行います。

利用プラグイン

elasticsearch 1.x系で動くプラグインは現状これ1つのみです。Perlで書かれているため外部依存無しで動きます。

次のプラグインが同封されています。

  • 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.hostenv.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"の画面にこのように現れます。

f:id:yoshi-ken:20140424100242p:plain

グラフ

次に、このプラグインをインストールすることで可視化されるRRDtoolグラフを紹介します。 毎日深夜にドキュメントが大幅に減るのは、logstashインデックス形式で格納している、とある実験データを日次で削除しているためです。

  • elasticsearch_cache

f:id:yoshi-ken:20140424094448p:plain

  • elasticsearch_cluster_shards

f:id:yoshi-ken:20140424094449p:plain

  • elasticsearch_index_size

f:id:yoshi-ken:20140424094451p:plain

  • elasticsearch_docs

f:id:yoshi-ken:20140424094450p:plain

  • elasticsearch_jvm_memory

f:id:yoshi-ken:20140424094453p:plain

  • elasticsearch_index_total

f:id:yoshi-ken:20140424094452p:plain

  • elasticsearch_jvm_threads

f:id:yoshi-ken:20140424094454p:plain

  • elasticsearch_open_files

f:id:yoshi-ken:20140424114153p:plain

まとめ

elasticsearchはJavaのためJVM監視はもちろんのこと、これらのリソース監視を始めた上で運用したいですね。
余裕があればさらに、処理に時間の掛かったスロークエリ量の可視化も行うと良いでしょう。それについては今後紹介したいと思います。

更新履歴

  • 2015年1月21日 : 設定無しに使えるようになったため、インストール手順を更新