@johtaniの日記 2nd

@johtani ‘s blog 2nd edition

Elasticsearch Marvelの紹介と第一印象

昨晩、Elasticsearchから初のプロダクトとなるMarvelがリリースされました。ということで、さっそく触ってみて、簡単な紹介と感想を書いてみました。

Marvelって?

Elasticsearch社が初のプロダクトとしてリリースした、Elasticsearchクラスタモニタリングツールです。 次のような特徴があります。

  • plugin形式で提供
  • GUIがKibana
    • メトリックスはElasticsearchに保存
  • SenseがChrome以外でも使える

プロダクション環境で利用する場合は有料ですが、開発用途では無料で利用できます。 現時点(2014/01/29)では、0.90.9以上のバージョン(1.0.0.RC1含む)で利用が可能です。

なにができるの?

Elasticsearchクラスタに関するメトリックスを保存、可視化できるプロダクトです。 ドキュメント数やJVMの状況、クラスタの状態など、いろいろなメトリックスが保存されます。

保存先は、別のElasticsearchクラスタにすることも可能です。 お試しでインストールして見る場合は、同一クラスタにサービスに利用するインデックスとMarvel用のメトリックス保存先インデックスを入れても良いです。

ただ、プロダクション環境では、Marvel用インデックスはあくまでもモニタリングに使用するため、サービスのクラスタへの影響を最小にしたくなります。

このような場合、Marvelのプラグインの設定を変更することで、メトリックス送信用のエージェントとして動作させることができます。

詳しくは、Marvelのドキュメントにあるinstalling a secondary monitoring clusterを御覧ください。

1/29 16時時点で、上記ドキュメントのエージェントの送信先の設定に関する部分に誤記がありました。 おそらく、configuration optionsの記述が正だと思います。 もう、なおってました。(1/30朝時点)

キャプチャいろいろ

日本語WikipediaのデータをRiverで登録しながら各画面の動作などを見てみました。

Marvel Overview

日本語WikipediaをRiverで登録してる途中。Loadが高くなってることなどがわかります。

Overview (クラスタの状態が変化)

クラスタの状態が変化したところに、タグが付くみたいです。 ここでは、ノードの一つを停止、起動しました。

インデックス終了後に、クラスタを再起動してしまい、クラスタ内のシャードの再配置が実行されてしまったため、クラスタの状態がYellowになってしまうとこんな感じ。ちょっとわかりにくいです。

Sense

Chromeプラグインとしてリリースされていたクエリ実行コンソールがMarvelのサイトプラグインとして提供されています。これがあるだけで、Elasticsearchへのクエリの実行が格段に効率良くなります。

Index Statistics

インデックスに関する情報のグラフが見れるページです。ドキュメント数の他に、容量やリクエスト数なども見れます。

インデックス終了後のグラフはこんな感じ。

インデックス終了後のOverviewはこんなかんじです。

Cluster Pulse

クラスタで発生したイベントとイベントの詳細を見ることができるページです。各種インデックスがYELLOWからGREENに変わっていっているのがmessageで分かります。

すべて再配置が終わったらGREENになりました。

Node Statistics

各ノードに関する情報を見ることができる画面です。 ノードごとにグラフの色を分けることもできます。

その他

Marvelプラグインにブラウザから接続できなくなるとこんなメッセージが出ました。

参考までに、elasticsearch-headの画面も。こちらのほうが、シャードの再配置中であるのがひと目で分かります。

感想

綺麗です。まぁ、Kibanaが綺麗ですから。 クラスタ内で発生したイベントが時系列で保存されるため、あとからどんなことが発生したのかといった原因の追求などには非常に役に立ちそうです。

ただ、インデックスの状態や状況(クラスタ再起動やノード追加時にshard再配置などが実行されている状況とか)はelasticsearch-headのほうがわかりやすかったです。 インデックス単位でのStatusがMarvelの画面ではわからないため、shard再配置が完了したかどうかなどのタイミングがわかりにくかったです。

ある程度、多くのノードを利用したクラスタを利用する場合に、モニタリングツールとして利用するのは便利なのではないでしょうか? 時系列でログやイベントが保存されるので、ノードが追加されたり外れたりといった状況があとからでも追跡可能なのが便利です。

疑問点

インデックスの情報などは、5s毎にMarvelのインデックスに保存されているようです。ただ、GUI上では5分毎のデータしか表示されません。 どうやって変更するんだろう?

また、Marvelのクラスタへの接続が切れた時のデータはどうなるのか?という部分も気になります。Marvelのクラスタを更新している時や、ネットワークが遮断されてしまった場合のデータがどうなるのかという点です。

疑問点への回答(2014/01/30追記)

疑問点に対して中の人から回答を頂いたので、追記です。

  • Q:GUI上で5分毎のデータしか表示されないんですが?
    • A:ブラウザの負荷を高くしないようにするために、1つのグラフに20のプロットしてるだけです。ズームしたりすると、もっと細かなデータが見れますよ。
  • Q:Marvelのクラスタへの接続が切れた時のデータはどうなるんだろう?
    • A:接続が切れた場合は、ローカルに保存されるけどデータは無視されます。接続が戻ると、戻った後のデータは記録されていきます。将来的には改善するかも。

ちなみに、昨日試してた環境が、足元Linux環境(監視対象のクラスタ)+手元Mac環境(Marvelモニタリングデータ格納クラスタ)という環境でした。 確かに、出社してから、手元Mac環境を起動すると、データが流れてくるようになりました。 ただ、監視対象のクラスタでは、socket timeoutのログがずっと出てましたが。

参考文献

Comments