14
- 5月
2017
Posted By : boomin
curatorでelasticsearchのindexをメンテナンスする

 

Advertisements

概要

CuratorはElastic社が提供するPython実装の運用支援ツールです。

elasticsearchを使用したシステムを長期間、安定して運用するためには、indexのメンテナンスが欠かせません。
なぜなら、elasticsearchは検索対象のdocumentをメモリに展開するからです。
なので、長期間そのままだと、メモリを食いまくって、メモリダンプを吐いて死んでしまったりします。

そこで、定期的に古いログを削除するなどのメンテナンスが必要です。

 

では、どうやってメンテナンスするか

もちろん、elasticsearchはREST APIを持っているので、自分でメンテ用のスクリプトを書いて、cronとかで定期実装させてもよいです。

 
でも、面倒ですね。
 

そこでcuratorですよ。curatorを使えば、かなり簡単にindexのメンテができます。

今回は、もちろんリアルタイム麺活監視システムを安定稼働させるためのindexメンテナンスです。

 
あ、これは筆者が岩手県宮古市で食べたラーメンです。
ラーメン
 

設定などは、こちらのサイトを参考にさせてもらいました。

 

環境準備

それでは、環境構築をしていきましょう。

 

Advertisements

インストール

pythonで実装されているので、以下のコマンドで一発で導入できます。

 

便利な世の中になったものだな・・・・

 

定義ファイルの修正

curatorでは、以下の2つのファイルを修正する必要があります。

設定ファイル名説明
Configuration Filecurator自身の動きについて定義する
Action Fileindexなどに対するメンテナンスの内容を定義する

 

Configuration File

Configuration Fileでは、curator自身の動きについて定義します。

実行時に、特に指定がなければ、デフォルトの定義ファイルを読みに行きます。
なお、デフォルトの定義ファイルのパスは、以下となります。

 

任意のファイルを指定する場合は、実行時の引数にオプション【–config】を付けて、パスを渡せばよいです。

設定できる内容やその方法は、全部、公式に書いてあるので、適当に設定してください。

 

Action File

Action fileには、実際にメンテナンスする内容を定義します。
こちらは省略できず、必ず指定が必要です。

Action fileも、設定できる内容やその方法は、全部、公式に書いてあるのですが。
こちらは、ちゃんと考えて定義してやらないといけない内容ですね。
なので、リアルタイム麺活監視システムでの運用内容を晒してみます。

おおまかに、何をしているかは以下の通りです。

  • 7日を経過したindexはcloseする
  • 14日を経過したindexはdeleteする

上記の内容が実現させるように、logstashで流し込んでいているtwitterのdocumentを、index名に従って定義してあげます。

 

それぞれの設定内容は、公式に書いてあるのでググレカス。

 

実行してみる

それでは、定義ができたら実際に実行させてみましょう。

 

とりゃー

 

上記では、config fileもデフォルトを使用したり編集したりせず、新たに用意して、それを適用させています。

 

実行結果の確認

ログを確認してみることにしましょう。
config.ymlにログファイルのパスを定義できます。
その出力されたログの一部を、以下にお見せします。

 

ログの内容から、以下のことが実行されたことがわかります。

  • 2017/3/2~2017/3/5までのindexが、closeされた
  • 2017/2/25~2017/2/27までのindexが、deleteされた

 

あとは定期実行させるだけ

ここまでしたら、cronに登録して自動実行させましょう。

 

ここでは、毎週月曜日と木曜日の、AM3時20分に実行するようにしています。
twitterのログ量を見てみると、このあたりの時間のtweet数が最も少なくなるので、この時間にしました。

 

実行結果を確認してみる

実際に、curatorによってindexがメンテナンスされることで、
実際に麺活監視システムの性能メトリックが、
どのように変化するのかを確認してみましょう。

これは、運用開始してしばらく後に、ElasticSearchの稼働状況を監視したものです。

indexのメンテナンス

 
このように、6/1(木曜日)のAM3時半ごろ、確かに使用していたJava VMのHeapメモリが、ガクっと減っていますね。
これは、メモリ上に展開されているindexのcloseが行われたからですね。

こういうメンテナンスを行わないと、そのうち、OutOfMemoryを吐いて、プロセスが死んでしまうことになります。
こうした運用設計を行うことが重要ですね。

 

最後に

これをやっておかないと、ElasticSearchの長期運用はちょっと無理ですよね。

こうしたシステムメンテナンスを怠ることなく、サービスの安定稼働ができるようにしておきましょう。

ついでに

リアルタイム麺活監視システムは、一般公開していません。
というのも、ポケットマネーでサーバを用意している関係で、潤沢なスペックのVMを用意できないのです。

我こそはというスポンサーの方がいたら、それを原資にサーバ増強させて、サービス提供に挑戦してみようと思います。

それでは。

Advertisements

コメントを残す