Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
182
Help us understand the problem. What is going on with this article?
@hakobera

curator で Kibana 用の elasticsearch のインデックスを定期的に削除する

More than 3 years have passed since last update.

2015/3/15 curator v3.0 から、コマンドオプションが変わったので改定しました。 正確には v2.0 から変わってましたけど。

Kibana でダッシュボード作っていると、基本的に日時でインデックスファイルができて、ある程度溜まってくると、

  • elasticsearch が悲鳴をあげます(CPU的にも、メモリ的にも)
  • ディスク容量が枯渇します

ということで無限にサーバリソースが確保できない場合、Kibana の運用では定期的にインデックスファイルを削除する必要がでてきます。

この Index の削除を便利にしてくれるツールが curator です。

事前準備

Python と pip が必要なので、入れておきましょう。

$ sudo apt-get install python
$ cd /tmp
$ wget https://raw.github.com/pypa/pip/master/contrib/get-pip.py
$ sudo python get-pip.py

インストール

pip でインストールできます。curator --version と打って、バージョンが表示されればインストール完了です。

$ sudo pip install elasticsearch-curator
$ curator --version
curator, version 3.0.0

インデックスの削除

curator では様々なインデックス削除の方法を提供していますが、基本的には、最新の n日分のインデックスを残し、古いものは削除、という方法で十分です。

例えば、最新の30日分の Kibanaの logstash という名前のインデックスだけ残しておきたい場合は、

$ curator --host my-elasticsearch delete indices --prefix logstash --older-than 30 --time-unit days --timestring %Y.%m.%d

というコマンドを打てば良いです。my-elasticsearch は elasticsearch のホスト名かIPアドレスを指定してください。

なお、保持期間は要件によるので、適当に決めてください。個人的には1か月とか2か月くらいが妥当かなーと思っています。

実運用で知っておくと便利かもしれない Tips

インデックスファイルを削除した直後に、「あー、あの時のデータ見たかったのに!」と言われるのはよくあることなので、いきなり削除するのではなく Close と併用すると良いと思います。Close したインデックスは検索対象からは外れますが、後で Open することですぐに復活させることができます。

30日たったら Close して、60日たったら削除するというのは以下のコマンドでできます。

$ curator --host my-elasticsearch close indices --prefix logstash --older-than 30 --time-unit days --timestring %Y.%m.%d
$ curator --host my-elasticsearch delete indices --prefix logstash --older-than 60 --time-unit days --timestring %Y.%m.%d

ついでに、パフォーマンス関連のオプションを指定しましょう。

$ curator --host my-elasticsearch bloom indices --prefix logstash --older-than 2 --time-unit days --timestring %Y.%m.%d

このコマンドで直近2日以前のインデックスの bloom filter を無効化しています。bloom filter はインデックス処理を高速化する Codec モジュールですが、Kibana の場合、当日のインデックス以外は書き込まれない Cold Index です。なので、bloom filter の意味はなく、無効化しておくとメモリ使用量などが減少します。
なお、bloom filter の無効化は elasticsearch 0.90.9 以降でしか使えないので注意してください。

日次バッチに組み込む

オプションが固まったら、Daily の cron か Jenkins Job を仕込んでおきましょう。elasticsearch のログが AM 0:00 に切り替わるので、それ以降で負荷が少ない時間(AM 2:00とか)に起動しておくのが良いんじゃないかと。

参考

v3.0 になって、機能追加とともにCLIのオプションが変わったので、公式マニュアルをまず読んでください。コマンド体系は整理されて使いやすくはなったと思います。

以下の2つは少し古めだけど、知識としては知っていても良いので残しておきます。

182
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
182
Help us understand the problem. What is going on with this article?