Amazon Elasticsearch Service の低ストレージ容量を管理するために、Index State Management (ISM) を使用するにはどうすればよいですか?

最終更新日: 2020 年 12 月 23 日

Amazon Elasticsearch Service (Amazon ES) クラスターが、ストレージ容量が低い状態で実行されています。Amazon ES で Index State Management (ISM) を使用してストレージ容量の問題を管理するにはどうすればよいですか?

簡単な説明

Index State Management (ISM) を使用すると、ルーチンタスクを自動化して、Amazon ES のインデックスとインデックスパターンに適用できます。ISM を使用することで、ディスク容量が少ないなどの問題の管理に役立つカスタム管理ポリシーを定義できます。例えば、rollover 操作と ISM ポリシーを使用して、インデックスサイズなどの条件に基づいて古いインデックスの削除を自動化できます。rollover 操作は、既存のインデックスが定義済みの条件を満たしたときに、ターゲットを新しいインデックスにロールオーバーします。

rollover などの操作を使用してインデックスパターンの ISM ポリシーを作成するには、次の手順を実行します。

1.    rollover インデックスを設定します。

2.    ISM ポリシーを作成します。

3.    ポリシーをインデックスにアタッチします。

4.    テンプレートを追加します。

ポリシーをインデックスにアタッチすると、インデックスは初期化を開始し、rollover 操作が完了するまで別の状態に移行します。rollover 操作の詳細については、OpenDistro for Elasticsearch ウェブサイトのRollover をご参照ください。

解決方法

rollover インデックスを設定する

インデックスフォーマットがインデックスパターンに一致するインデックスとエイリアスを作成します。

^.*-\d+$.

重要: rollover エイリアスを正しく設定してください。正しく設定しないと、エラーメッセージが表示されます。

次の例では、「test-index-000001」が作成され、複数のドキュメントが読み込まれます。この例では、rollover インデックスを使用するため、インデックスフォーマットはパターンと一致する必要があります。

PUT test-index-000001/_doc/1
{
    "user" : "testuser",
    "post_date" : "2020-05-08T14:12:12",
    "message" : "ISM testing"
}

rollover インデックスには、最新のインデックスをポイントするエイリアスが必要です。つまり、次のクエリを使用してエイリアス (「test-index」) を作成する必要があります。

POST /_aliases
{
    "actions" : [
        { "add" : { "index" : "test-index-000001", "alias" : "test-index" } }
    ]
}

ISM ポリシーを作成する

Kibana サービスの [Index Management] (インデックス管理) タブで、rollover 操作の ISM ポリシーを次のように作成します。

{
    "policy": {
        "policy_id": "Roll_over_policy",
        "description": "A test policy. DO NOT USE FOR PRODUCTION!",
        "schema_version": 1,
        "error_notification": null,
        "default_state": "hot",
        "states": [
            {
                "name": "hot",
                "actions": [
                    {
                        "rollover": {
                            "min_size": "10mb"
                        }
                    }
                ],
                "transitions": [
                    {
                        "state_name": "warm"
                    }
                ]
            },
            {
                "name": "warm",
                "actions": [
                    {
                        "replica_count": {
                            "number_of_replicas": 2
                        }
                    }
                ],
                "transitions": []
            }
        ]
    }
}

この ISM ポリシーでは、[hot] と [warm] の 2 つの状態が定義されています。 デフォルトでは、インデックスは [hot] 状態です。10 MB に達するとすぐに、インデックスは [warm] 状態に移行し、新しい rollover インデックスが作成されます。[warm] 状態では、レプリカ数を 2 に変更したり、force_merge 操作を実行するなど、インデックスに対してさまざまなアクションを実行できます。

ポリシーをインデックスにアタッチする

ISM ポリシーをインデックスにアタッチするには、次の手順を実行します。

1.    Amazon ES コンソールから Kibana を開きます。

2.    [Index Management] (インデックスの管理) タブを選択します。

3.    ISM ポリシーをアタッチするインデックスを選択します (例:「test-index-000001」)。

4.    [Apply policy] (ポリシーの適用) を選択します。

5.    (オプション) エイリアスを必要とするアクションがポリシーで指定されている場合は、エイリアスを指定し、[Apply] (適用) を選択します。インデックスが [Managed Indices] (マネージドインデックス) のリストに表示されます。

テンプレートを追加する

ISM ポリシーの結果として作成された「test-index-000002」などの特定のインデックスにポリシーをアタッチします。このアタッチにより、必要な条件 (インデックスサイズなど) が満たされたときに、インデックスが確実にロールオーバーするようにします。

次のようなインデックステンプレートを使用できます。

PUT _template/template_1
{
  "index_patterns": [
    "test-index*"
  ],
  "settings": {
    "index": {
      "opendistro": {
        "index_state_management": {
          "policy_id": "Roll_over_policy",
          "rollover_alias": "test-index"
        }
      }
    }
  }
}

この例では、JSON ポリシー ID は「Roll_over_policy」です。この JSON テンプレートにより、「test-index-000002」インデックスが作成されると、rollover ポリシーがアタッチされます。

GET test-index-000002/_settings
{
  "test-index-000002" : {
    "settings" : {
      "index" : {
        "opendistro" : {
          "index_state_management" : {
            "policy_id" : "Roll_over_policy",
            "rollover_alias" : "test-index"
          }
        },
        "number_of_shards" : "1",
        "provided_name" : "test-index-000002",
        "creation_date" : "1589031424388",
        "number_of_replicas" : "2",
        "uuid" : "DUHeUdTnSveeYsH9aIkt-Q",
        "version" : {
          "created" : "7010199"
        }
      }
    }
  }
}

注: このインデックスは、Kibana の [Managed Indices] (マネージドインデックス) タブの [Index Management] (インデックス管理) セクションにも表示されます。

ISM ポリシーの状態

ISM ポリシーがインデックスにアタッチされると、インデックスは [Initializing] (初期化中) 状態になります。インデックスは [Initializing] (初期化中) 状態から [Default] (デフォルト) 状態に移行します。これはポリシーで定義されています。この [Initializing] (初期化中) 操作と、それ以降のすべての操作には 30 ~ 48 分かかる場合があります。ISM はこの時間を使用してポリシーアクションを実行し、条件をチェックし、インデックスを異なる状態に移行します。また、0~60% のランダムジッターが追加され、同時にすべてのインデックスからアクティビティのサージが発生しないようにします。

注: rollover 操作の場合、インデックスがロールオーバーされた後、インデックスは [complete] (完了) になり、[warm] 状態に移行し、レプリカ数が更新されます。


この記事はお役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?