Help us understand the problem. What is going on with this article?

【Elastic Stack】BeatsのIndex Lifecycle Management(ILM)の変更のポイント

ILMとは

ILMは、Hot-Warm-Cold-Deleteの流れでインデックスのデータのライフサイクルを管理するための機能となります。ライフサイクルのポリシーをindexのデータサイズや経過した日数で設定することで、indexのフェーズを遷移させることができます。またデータ復元時の優先度を各フェーズに設定することができます。
https://www.elastic.co/jp/blog/implementing-hot-warm-cold-in-elasticsearch-with-index-lifecycle-management

フェーズ 概要
Hot 更新と検索を頻繁に行うフェーズです。
Warm 検索を頻繁に行うフェーズです。
Cold 検索をまれに行うフェーズです。メモリを節約するために、インデックスをフリーズ状態にすることもできます。
Delete このフェーズの場合、indexは削除されます。

BeatsのILMを変更

ILMを簡単に確認しようと、Beatsで作られるライフサイクルポリシーを変更したら色々躓いたので、手順を整理してみました。
BeatsのILMの設定変更の反映は、通常ロールオーバー後(metricbeatの初期値は30日後または50GB超過)となるため、即時反映したい場合は、おおよそ以下のどちらかを適用することになります。

  • 手順A(インデックスを作り直す)

    • 特記事項:データが入っていないとreindexが動きません。
  • 手順B(強制ロールオーバー) 

    • 特記事項:データが入っていなくても使えます。

手順A(インデックスを作り直す)

[1] ライフサイクルポリシーを更新します。
[管理]-[ インデックスライフサイクルポリシー]
image.png
ライフサイクルポリシーの変更が、Beatsのインデックスに反映されてないことを確認できます。
[管理]-[インデックス管理]-[metricbeat-7.4.2-2019.11.26-000001]
image.png
[2] Beatsを止めます。

# systemctl stop metricbeat

[3] ILMを停止します。

POST _ilm/stop

[4] reindexでインデックスを別名でコピーします。

POST _reindex
{
  "source": {
    "index": "metricbeat-7.4.2-2019.11.26-000001"
  },
  "dest": {
    "index": "metricbeat_back"
  }
}

image.png

[5] 元のindexを削除します。

DELETE metricbeat-7.4.2-2019.11.26-000001

[6] reindexで再度削除したものと同名でコピーします。
※ここで、テンプレートを通してライフサイクルポリシーの内容が適用されます。

POST _reindex
{
  "source": {
    "index": "metricbeat_back"
  },
  "dest": {
    "index": "metricbeat-7.4.2-2019.11.26-000001"
  }
}

image.png

[7] バックアップしたindexを削除します。

DELETE metricbeat_back

[8] aliasを設定して、metricbeatから「metricbeat-7.4.2」名で送信されるデータが「metricbeat-7.4.2-2019.11.21-000001」に格納されます。

POST /_aliases
{
  "actions": [
    {
      "add": {
        "index": "metricbeat-7.4.2-2019.11.26-000001",
        "alias": "metricbeat-7.4.2",
        "is_write_index": true
      }
    }
  ]
}

[9] ILMを起動します。

POST _ilm/start

Beatsのインデックスに反映されていることを確認できます。
[管理]-[インデックス管理]-[metricbeat-7.4.2-2019.11.26-000001]
image.png

手順B(強制ロールオーバー)

[1] ライフサイクルポリシーを更新します。
[管理]-[ インデックスライフサイクルポリシー]
image.png

ライフサイクルポリシーの変更が、Beatsのインデックスに反映されてないことを確認できます。
[管理]-[インデックス管理]-[metricbeat-7.4.2-2019.11.26-000001]
image.png

[2] ILMを一旦止めます。

POST _ilm/stop

[3] 手動で rollover します。

POST /metricbeat-7.4.2/_rollover/metricbeat-7.4.2-2019.11.26-000002

image.png

[4] 古いindexにindex.lifecycle.indexing_completeをtrueにセットします。

PUT metricbeat-7.4.2-2019.11.26-000001/_settings
{
  "index.lifecycle.indexing_complete": true
}

[5] ILMを再開します。

POST _ilm/start

Beatsのインデックスに反映されていることを確認できます。
[管理]-[インデックス管理]-[metricbeat-7.4.2-2019.11.26-000001]
image.png

[管理]-[インデックス管理]-[metricbeat-7.4.2-2019.11.26-000002]
image.png

おわりに

ライフサイクルポリシーには、テンプレートやエイリアスも関わってくるため、Elasticsearchのインデックス周りをきちんと把握しておくことが重要となります。

参考リンク

手順A[4], 手順A[6] reindexの参考URL
https://www.elastic.co/guide/en/elasticsearch/reference/7.4/ilm-reindexing-into-rollover.html

手順A[8] aliasの参考URL
https://www.elastic.co/guide/en/elasticsearch/reference/7.4/indices-aliases.html

手順A[3] ILM停止の参考URL, 手順A[9] ILM起動の参考URL, 手順B[2] ILM停止の参考URL, 手順B[5] ILM起動の参考URL
https://www.elastic.co/guide/en/elasticsearch/reference/7.4/start-stop-ilm.html

手順B[3] rolloverの参考URL
https://www.elastic.co/guide/en/elasticsearch/reference/7.4/indices-rollover-index.html

手順B[4] completeの参考URL
https://www.elastic.co/guide/en/elasticsearch/reference/7.4/skipping-rollover.html

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.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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
ユーザーは見つかりませんでした