Elasticsearchの古いインデックスを削除するBashスクリプトを書いた

投稿者: | 2014/10/30

td-agent(Fluentd)で集めたログをElasticsearchに格納して、Kibanaで見るということをやっています。
とりあえずということで、200G程度のVPSでログ収集環境を構築したのですが、問題なのはElasticsearchにログを格納し続けるとディスク容量を圧迫していまいます。
そこで、elasticsearch/curator を使って古いインデックスを削除しようとしたのですが、CentOS 6.6だと動いてくれません。

Elasticsearchなどのプラグインをインストールしたり、curatorのバージョンを下げたり上げたりしても動かない。
他にも同じようなスクリプトがあるのですが、curator含めてほとんどがPythonで書かれていて、もうPythonには頼りたくないという気持ちでした。

よく考えたら、古いインデックスを削除するだけなのだから、Bashとかで書いたほうが楽に動かせるんじゃないかと思いました。
最近、ElasticsearchのLogstash形式インデックスをお手軽に削除するワンライナー という記事を見つけましたのでそれをパクって参考にしてBashスクリプトを書いてみました。
gistに上げています。

以下の環境で動作を確認しています。

  • CentOS 6.6
  • Elasticsearch 1.3.2

使い方は簡単で、第一引数には削除するインデックスのプレフィックス(デフォルトはlogstash-)、第二引数は削除したい日数を指定するだけです。

15分ぐらいで書いたスクリプトなので、--dry-runなどのオプションはありません。
ご使用は各自の責任でお願いします。

Elasticsearchの古いインデックスを削除するBashスクリプトを書いた」への9件のフィードバック

  1. johtani

    はじめまして。

    CuratorがCentOSで動作しないとのことですが、どのようにインストールされましたか?

    手元でVagrantでCentOS6.6をインストールして、pip経由でインストールしたところ動作しました。

    返信
    1. shu1 投稿作成者

      johtani様

      ご返信ありがとうございます。
      動作しないサーバ環境はConoHaのVPSのCentOS6.6です。
      私もVagrantでCentOS6.6で試したところ、正常に動作しました。
      以下、インストール手順です。実際にはChefで実行していますのでコマンドベースに置き換えております。なお、rootユーザで実行しています。

      動かない環境で以下のようにインストールし直しても変わりませんでした。

      返信
      1. shu1 投稿作成者

        追記です。
        以下、pipのパッケージ一覧表示となっております。

        返信
  2. johtani

    うーむ。。。

    pip uninstall elasticsearch
    pip install elasticsearch

    だけを実行するとどうなりますか?

    返信
    1. shu1 投稿作成者

      試したところ、結果は変わらずでした・・・

      返信
  3. johtani

    ちなみにこれだと動きますか?

    python /usr/lib/python2.6/site-packages/curator/curator_script.py –version

    返信
    1. shu1 投稿作成者

      このコマンドだと動きました。

      返信
    1. shu1 投稿作成者

      直接 curator_script.py を実行させたら正常に動作しました。
      お手数おかけして申し訳ございません。ありがとうございました!!

      返信

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*