Curator4でElasticsearch5の古いインデックスを削除する

2017年2月11日

Curator4で古いインデックス削除

ログ可視化ツールの 3 点セット、Fluentd + Elasticsearch5 + Kibana5 を試すメモ 4 回目。前回は Kibana から Elasticsearch のデータを参照するところと、Kibana の SSL 化をやりました。

Kibanaセットアップ
Fluentd + Elasticsearch5 + Kibana5構築(3) Kibana設定編

ログ可視化ツールの 3 点セット、Fluentd + Elasticsearch5 + Kibana5 を試すメモ 3 ...

続きを見る

ログを Kibana から可視化することができましたが、このままだと Elasticsearch にログが貯まる一方なので、一定期間を過ぎたログを自動的に削除するようにします。

Elasticsearch のインデックスの削除は Elastic Stack 公式の Curator というツールを使います。

目次

  1. Curator4 をインストール
  2. 30 日経過したログを削除するように設定

Curator4 をインストール

インストール方法は Curator Reference » Installation » YUM repository を参考にします。

GPG KEY 登録

$ sudo rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch

CentOS7 用のリポジトリ登録

$ sudo vi /etc/yum.repos.d/curator.repo
[curator-4]
name=CentOS/RHEL 7 repository for Elasticsearch Curator 4.x packages baseurl=http://packages.elastic.co/curator/4/centos/7 gpgcheck=1 gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch enabled=1 

インストール

$ sudo yum install elasticsearch-curator

30 日経過したログを削除するように設定

Curator を実行するには

Running Curator & Command Line Interface によると、Curator を実行するは CONFIG.YML と ACTION_FILE.YML が必要な様子。

curator [--config CONFIG.YML] [--dry-run] ACTION_FILE.YML

CONFIG.YML と ACTION_FILE.YML の置き場所を作成

$ mkdir ~/.curator/

CONFIG.YML 作成

curator.yml を作成。ファイルの中身は Configuration » Configuration File を参考に。とりあえずデフォルトで良さそうだったので公式サンプルをそのまま持ってきてコメントアウトしておきます。

$ vi ~/.curator/curator.yml

---
# Remember, leave a key empty if there is no value.  None will be a string,
# not a Python "NoneType"
#client:
#  hosts:
#    - 127.0.0.1
#  port: 9200
#  url_prefix:
#  use_ssl: False
#  certificate:
#  client_cert:
#  client_key:
#  ssl_no_validate: False
#  http_auth:
#  timeout: 30
#  master_only: False
#
#logging:
#  loglevel: INFO
#  logfile:
#  logformat: default
#  blacklist: ['elasticsearch', 'urllib3']

ACTION

delete_indices.ymlを作成。ファイルの中身は Configuration » Action File を参考に。

日別に作成されたインデックスを削除する ACTION_FILE を作ります。削除の ACTION_FILE の書き方は Actions » Delete Indices を参考に。

今回は削除の条件を「30 日経過したもの」にしています。条件は Filters を参考にしながらカスタマイズします。

$ vi ~/.curator/delete_indices.yml

---
# Remember, leave a key empty if there is no value.  None will be a string,
# not a Python "NoneType"
#
# Also remember that all examples have 'disable_action' set to True.  If you
# want to use this action as a template, be sure to set this to False after
# copying it.
actions:
  1:
    action: delete_indices
    description: "Delete indices older than 30 days"
    options:
      ignore_empty_list: True
      continue_if_exception: False
    filters:
      - filtertype: age
        source: name
        direction: older
        timestring: '%Y.%m.%d'
        unit: days
        unit_count: 30
        exclude: False

ドライランで動作確認。動作確認するとき、削除の条件は手元のインデックスの状況に合わせて適当に修正してください。

$ curator --dry-run ~/.curator/delete_indices.yml

2017-01-31 12:04:07,721 INFO      Preparing Action ID: 1, "delete_indices"
2017-01-31 12:04:07,728 INFO      Trying Action ID: 1, "delete_indices": Delete indices older than 30 days
2017-01-31 12:04:07,743 INFO      DRY-RUN MODE.  No changes will be made.
2017-01-31 12:04:07,743 INFO      (CLOSED) indices may be shown that may not be acted on by action "delete_indices".
2017-01-31 12:04:07,743 INFO      Action ID: 1, "delete_indices" completed.
2017-01-31 12:04:07,743 INFO      Job completed.

ドライランをはずして削除実行

$ curator ~/.curator/delete_indices.yml

あとはこれを cron などで定期実行すれば良いと思います。

次回は Elasticsearch のメモリ使用量について触れます。

Elasticsearchのメモリ使用量を減らす
Elasticsearchのメモリ使用量を減らす

ログ可視化ツールの 3 点セット、Fluentd + Elasticsearch5 + Kibana5 を試すメモ 5 ...

続きを見る

-技術ブログ
-