ISM を使用して Amazon OpenSearch Service での低ストレージ容量を管理するにはどうすればよいですか?

所要時間3分
0

Amazon OpenSearch Service クラスターのストレージ容量が残り少なくなっています。

簡単な説明

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

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

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

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

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

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

ポリシーをインデックスにアタッチすると、インデックスは初期化を開始し、rollover 操作が完了するまで別の状態に移行します。rollover 操作の詳細については、Open Distro for OpenSearch ウェブサイトの「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"
      }
    }
  ]
}

注: rollover 操作が ISM ポリシーに含まれている場合は、rollover エイリアスを含める必要があります。詳細については、「ISM ポリシーの rollover インデックスアクションが Amazon OpenSearch Service で失敗し続けるのはなぜですか?」を参照してください。

ISM ポリシーを作成する

OpenSearch Dashboards で [インデックス管理] タブを選択し、**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 ポリシーでは、「ホット」と「ウォーム」の 2 つの状態が定義されています。 デフォルトでは、インデックスは「ホット」状態です。インデックスは、サイズが 10 MB に達し、新しい rollover インデックスが作成されると、直ちに「ウォーム」状態に移行します。「ウォーム」状態のときは、レプリカ数を 2 つに変更したり、foforce_merge 操作を実行したりといった、インデックスに対するさまざまなアクションを行うことができます。

数日後に削除へロールオーバー

{
  "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": "delete",
            "conditions": {
              "min_index_age": "30d"
            }
          }
        ]
      },
      {
        "name": "delete",
        "actions": [
          {
            "delete": {}
          }
        ],
        "transitions": []
      }
    ]
  }
}

この ISM ポリシーでは、「ホット」と「削除」の 2 つの状態が定義されています。デフォルトでは、インデックスは「ホット」状態になっています。インデックスが 10 MB に達すると、新しい rollover インデックスが作成されます。それから 30 日後にインデックスは「削除」状態に移行し、そのインデックスは削除されます。

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

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

1.    OpenSearch Service コンソールから OpenSearch Dashboards を開きます。OpenSearch Dashboards へのリンクは、OpenSearch Service コンソールのドメインの概要にあります。

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

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

4.    [ポリシーを適用] を選択します。

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

既存のインデックスのポリシーを更新する

注: 既存のポリシーで行われた更新は、既存のインデックスには自動的に適用されず、インデックスに同じポリシーを適用する必要があります。

既存のインデックスに ISM ポリシーを適用するには、次の手順を実行します。

1.    OpenSearch Service コンソールから OpenSearch Dashboards を開きます。

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

3.    [ポリシーマネージドインデックス] セクションから、**[ポリシーを変更]**を選択します。

4.    変更を適用するインデックスを選択します (例:「test-index-000001」)。

5.    インデックスの現在の状態を選択します。

6.    [新規ポリシーの選択] セクションから、**[ポリシー名を更新]**を選択します。

7.    (オプション) ポリシーが更新された後にインデックスを別の状態に切り替える場合は、[ポリシーが有効になった後にインデックスを次の状態に切り替える] を選択します。次に、ドロップダウンリストから状態を選択します。

テンプレートを追加する

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

次のような ISM テンプレートを作成して使用できます。

PUT _plugins/_ism/policies/test_policy
{
  "policy": {
    "description": "A test policy. DO NOT USE FOR PRODUCTION!",
    "last_updated_time": 1642027350875,
    "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_template": {
      "index_patterns": [
        "test*"
      ],
      "priority": 100
    }
  }
}

以下の例では、作成した「test_policy」テンプレートが新しく作成されたインデックスにアタッチされていることを、 インデックスに対する explain API で検証します。

GET _plugins/_ism/explain/test-index-000002
{
  "test-index-000002": {
    "index.plugins.index_state_management.policy_id": "test_policy",
    "index.opendistro.index_state_management.policy_id": "test_policy",
    "index": "test-index-000002",
    "index_uuid": "CZrQ-RzRS8SmiWIuyqFmVg",
    "policy_id": "test_policy",
    "enabled": true
  },
  "total_managed_indices": 1
}

: このインデックスは、OpenSearch Dashboards の [インデックス管理] タブの [マネージドインデックス] セクションにも表示されます。

ISM ポリシーの状態

ISM ポリシーがインデックスにアタッチされると、インデックスは「初期化中」状態になります。インデックスは「初期化中」状態から、ポリシーで定義されている「デフォルト」状態に移行します。この「初期化中」操作とそれ以降のすべての操作には 30 ~ 48 分かかります。ISM は、この時間を利用してポリシーアクションを実行し、あらゆる条件をチェックしてインデックスを別の状態に移行させます。また、すべてのインデックスにおける同時アクティビティが急増しないように、0 ~ 60% のランダムジッターが追加されます。

注: **rollover **操作では、インデックスは、ロールオーバーされて [ウォーム] 状態に移行し、レプリカ数が更新されると、[完了] となります。

ISM ポリシーを使用していて、インデックスが正しく移行されていない場合は、ISM の状態を確認してください。

特定インデックスの移行の状態を確認するには、次の構文を使用します。

GET _ultrawarm/migration/<put_index_name_here>/_status

すべてのインデックスの移行についての概要を取得するには、次の構文を使用します。

GET _ultrawarm/migration/_status?

関連情報

ポリシーの例

AWS公式
AWS公式更新しました 10ヶ月前
コメントはありません

関連するコンテンツ