すべてのプロダクト
Search
ドキュメントセンター

Elasticsearch:ILM を使用した Heartbeat データの管理

最終更新日:Mar 26, 2026

Heartbeat の時系列モニタリングデータが増加するにつれて、シャード数も増加し、クラスターへの負荷が高まります。インデックスライフサイクル管理 (ILM) を使用して、heartbeat-* インデックスのロールオーバーポリシーを作成します。このポリシーにより、ホットフェーズでのインデックスのロールオーバー、ウォームフェーズでのシャードの縮小とセグメントのマージ、コールドフェーズでのウォームノードへのデータ移行、そして削除フェーズでの期限切れデータの定期的な削除が可能になります。

操作手順

  1. ステップ 1:ホット/ウォームクラスターの作成と設定

    ホット/ウォームクラスターを作成し、インデックスの自動作成を有効にし、パブリックエンドポイントのアクセスホワイトリストを設定します。

  2. ステップ 2:Heartbeat での ILM の設定

    `heartbeat.yml` ファイルで ILM パラメーターを有効にして設定します。Heartbeat を起動すると、Heartbeat インデックステンプレートが Elasticsearch に自動的に生成されます。

  3. ステップ 3:ILM ポリシーの作成

    ILM ポリシー API を使用して、インデックスのロールオーバーとアーカイブの条件を定義するライフサイクル管理ポリシーを作成します。

  4. ステップ 4:ILM ポリシーとインデックステンプレートの関連付け

    ILM ポリシーを Heartbeat インデックステンプレートに関連付けます。

  5. ステップ 5:インデックスと ILM ポリシーの関連付け

    ILM ポリシーを最初の Heartbeat インデックスに関連付けて、ポリシーがインデックステンプレートでカバーされるすべてのインデックスに適用されるようにします。

  6. ステップ 6:各フェーズのインデックスの表示

    ホット、ウォーム、コールド、削除の各フェーズでアーカイブされたインデックスを表示します。

ステップ 1:ホット/ウォームクラスターの作成と設定

  1. ホット/ウォームクラスターを作成し、そのノードのホット属性とウォーム属性を表示します。ノードタイプの違いは次のとおりです。

    ノードタイプ

    データストレージ要件

    読み書き性能

    仕様

    ストレージ要件

    ホットノード

    最近のデータ (過去 2 日間のログデータなど)。

    高 (32 コア 64 GB など)

    SSD クラウドディスクを推奨します。

    ウォームノード

    履歴データ (2 日以上前のログデータなど)。

    低 (8 コア 32 GB など)

    高効率クラウドディスクを推奨します。OpenStore を使用して、大量のデータをサーバーレスでストレージすることもできます。

    Alibaba Cloud Elasticsearch では、ウォームノードの box_type の値は warm であり、`cold` ではありません。これは、このノードタイプがネイティブ Elasticsearch アーキテクチャのウォーム層に対応するためです。
    1. Alibaba Cloud Elasticsearch インスタンスを作成する際に、ウォームノードを有効にしてホット/ウォームクラスターを作成します。

      ウォームノードを有効にして購入すると、システムは -Enode.attr.box_type パラメーターをノード起動パラメーターに追加します。

      • ホットデータノード: -Enode.attr.box_type=hot

      • ウォームデータノード: -Enode.attr.box_type=warm

      ウォームノードを有効にして初めて、データノードがホットノードになります。
    2. クラスターの Kibana コンソールにログインします。詳細については、「Kibana を使用したクラスターへの接続」をご参照ください。

    3. 左側のナビゲーションウィンドウで、[開発ツール] をクリックします。

    4. [コンソール] で、次のコマンドを実行してノードのホット属性とウォーム属性を表示します。

      GET _cat/nodeattrs?v&h=host,attr,value

      結果にホットノードとウォームノードの両方が含まれている場合、クラスターはホット/ウォームアーキテクチャをサポートしています。

  2. クラスターのインデックス自動作成を有効にします。詳細については、「YML パラメーターを設定してインデックスの自動作成を有効にする」をご参照ください。

  3. クラスターのパブリックエンドポイントのアクセスホワイトリストを設定し、Heartbeat サーバーの IP アドレスをホワイトリストに追加します。詳細については、「IP アドレスホワイトリストの設定」をご参照ください。

ステップ 2:Heartbeat での ILM の設定

ILM の詳細な設定手順については、「インデックスライフサイクル管理の設定」をご参照ください。

  1. Heartbeat インストールパッケージをダウンロードして解凍します。

  2. `heartbeat.yml` ファイルで、`heartbeat.monitors`、`setup.template.settings`、`setup.kibana`、および `output.elasticsearch` の設定を定義します。

    次の例は、設定のサンプルを示しています。

    heartbeat.monitors:
    - type: icmp
      schedule: '*/5 * * * * * *'
      hosts: ["47.111.xx.xx"]
    
    setup.template.settings:
      index.number_of_shards: 3
      index.codec: best_compression
      index.routing.allocation.require.box_type: "hot"
    
    setup.template.overwrite: true
    
    setup.kibana:
      host: "https://es-cn-4591jumei00xxxxxx.kibana.elasticsearch.aliyuncs.com:5601"
    
    output.elasticsearch:
      hosts: ["es-cn-4591jumei00xxxxxx.elasticsearch.aliyuncs.com:9200"]
      ilm.enabled: true
      ilm.rollover_alias: "heartbeat"
      ilm.pattern: "{now/d}-000001"
      username: "elastic"
      password: "<your_password>"

    次の表に、一部のパラメーターについて説明します。詳細については、「Heartbeat 設定ドキュメント」をご参照ください。

    パラメーター

    説明

    index.number_of_shards

    プライマリシャードの数。デフォルト値は 1 です。

    index.routing.allocation.require.box_type

    インデックスデータがホットノードに書き込まれるように指定します。

    setup.template.overwrite

    既存のインデックステンプレートを上書きするかどうかを指定します。このバージョンのインデックステンプレートをすでに Elasticsearch にロードしている場合は、このパラメーターを true に設定してテンプレートを上書きする必要があります。これは、setup.template.settings と同じレベルのトップレベルの設定項目です。

    host

    値をご利用の Kibana サービスのパブリックエンドポイントに置き換えます。このエンドポイントは Kibana 設定ページで確認できます。

    hosts

    値をご利用の Elasticsearch クラスターのパブリックまたはプライベートエンドポイントに置き換えます。これはクラスターの基本情報ページで確認できます。詳細については、「インスタンスの基本情報の表示」をご参照ください。パブリックエンドポイントを使用する場合は、クラスターのアクセスホワイトリストを設定する必要があります。詳細については、「IP アドレスホワイトリストの設定」をご参照ください。プライベートエンドポイントを使用する場合は、クラスターと Heartbeat サーバーが同じ VPC にあることを確認してください。

    ilm.enabled

    インデックスライフサイクル管理 (ILM) を有効にするには、このパラメーターを true に設定します。

    ilm.rollover_alias

    ロールオーバー中に生成されるインデックスのエイリアス。デフォルト値は heartbeat-\{beat.version\} です。

    ilm.pattern

    ロールオーバー中に生成されるインデックスのパターン。このパラメーターは日付演算をサポートしています。デフォルト値は {now/d}-000001 です。ロールオーバーがトリガーされると、新しいインデックス名の最後の桁が 1 ずつ増分します。たとえば、最初のロールオーバーで heartbeat-2020.04.29-000001 という名前のインデックスが作成された場合、次のロールオーバーでは heartbeat-2020.04.29-000002 という名前のインデックスが作成されます。

    username

    デフォルトのユーザー名は elastic です。

    password

    elastic ユーザーのパスワードは、インスタンスの作成時に設定します。パスワードを忘れた場合は、「インスタンスのアクセスパスワードのリセット」の手順に従ってリセットしてください。

    重要

    インデックステンプレートがロードされた後に `ilm.rollover_alias` または `ilm.pattern` を変更する場合は、`setup.template.overwrite` を true に設定してインデックステンプレートを上書きする必要があります。

  3. Heartbeat サービスを開始します。

    sudo ./heartbeat -e

ステップ 3:ILM ポリシーの作成

ILM ポリシーは、API を使用するか、Kibana コンソールで作成できます。このセクションでは、API を使用して `heartbeat-policy` ポリシーを作成する方法について説明します。

Heartbeat は、./heartbeat setup --ilm-policy コマンドを使用して、デフォルトポリシーを Elasticsearch にロードすることをサポートしています。デフォルトポリシーは、./heartbeat export ilm-policy コマンドでエクスポートできます。デフォルトポリシーを変更して、手動でポリシーを作成できます。

Kibana コンソールで、次のコマンドを実行して ILM ポリシーを作成します。

PUT /_ilm/policy/heartbeat-policy
{
  "policy": {
    "phases": {
      "hot": {
        "actions": {
          "rollover": {
            "max_size": "5mb",
            "max_age": "1d",
            "max_docs": 100
          }
        }
      },
      "warm": {
        "min_age": "60s",
        "actions": {
          "forcemerge": {
                "max_num_segments":1
              },
          "shrink": {
                "number_of_shards":1
              }
        }
      },
      "cold": {
        "min_age": "3m",
        "actions": {
          "allocate": {
            "require": {
              "box_type": "warm"
            }
          }
        }
      },
      "delete": {
        "min_age": "1h",
        "actions": {
          "delete": {}
        }
      }
    }
  }
}

パラメーター

説明

hot

`max_docs`、`max_size`、または `max_age` のいずれかの条件を満たすと、ロールオーバーがトリガーされます。ロールオーバー後、古いインデックスは 60 秒待機してからウォームフェーズに入ります。

warm

インデックスは 1 つのシャードに縮小され、その後 1 つのセグメントに強制的にマージされます。これらの操作の後、インデックスはロールオーバーから 3 分後にコールドフェーズに入ります。

cold

インデックスはホットノードからウォームノードに移行されます。この操作が完了すると、インデックスは 1 時間後に削除フェーズに入ります。

delete

インデックスは削除されます。

ポリシー名は作成後に変更できません。Kibana コンソールでもポリシーを作成できます。ただし、Kibana は `max_age` を時間単位で設定しますが、API は秒単位をサポートしています。

ステップ 4:ILM ポリシーとインデックステンプレートの関連付け

Heartbeat を起動すると、Heartbeat インデックステンプレートが Elasticsearch に自動的に作成されます。ステップ 3:ILM ポリシーの作成で作成した `heartbeat-policy` ポリシーをこのインデックステンプレートに関連付けます。

  1. ご利用の Alibaba Cloud Elasticsearch インスタンスの Kibana コンソールにログインします。詳細については、「Kibana コンソールを使用してクラスターに接続する」をご参照ください。

  2. 左側のナビゲーションウィンドウで、[管理] をクリックします。

  3. [Elasticsearch] セクションで、[Index Lifecycle Policies] をクリックします。

  4. [インデックスライフサイクルポリシー] リストで、`heartbeat-policy` ポリシーを見つけ、[アクション] > [ポリシーをインデックステンプレートに追加] をクリックします。

  5. 表示されるダイアログボックスで、[インデックステンプレート] リストからインデックステンプレートを選択し、[ロールオーバーインデックスのエイリアス] テキストボックスにインデックスエイリアスを入力します。

  6. [ポリシーを追加] をクリックします。

ステップ 5:インデックスと ILM ポリシーの関連付け

Heartbeat を起動すると、インデックスが Elasticsearch に自動的に作成されます。最初のインデックスを、ステップ 4:ILM ポリシーとインデックステンプレートの関連付けでインデックステンプレートに関連付けた ILM ポリシーに関連付けます。

  1. 管理」ページの「Elasticsearch」セクションで、「インデックス管理」をクリックします。

  2. [インデックス管理] リストで、対象のインデックスを見つけてインデックス名をクリックします。

  3. [概要] ページで、[管理] > [ライフサイクルポリシーを削除] を選択して、デフォルトの Heartbeat ポリシーを削除します。

  4. 表示されるダイアログボックスで、[ポリシーを削除] をクリックします。

  5. 次に、[管理] > [ライフサイクルポリシーを追加] を選択します。

  6. 表示されるダイアログボックスで、[ライフサイクルポリシー] リストからステップ 3:ILM ポリシーの作成で作成した `heartbeat-policy` ポリシーを選択します。[インデックスロールオーバーエイリアス] テキストボックスに、ステップ 4:ILM ポリシーとインデックステンプレートの関連付けで定義したインデックスエイリアスを入力し、[ポリシーを追加] をクリックします。

ステップ 6:各フェーズのインデックスの表示

[インデックス管理] ページで、[ライフサイクルフェーズ] ドロップダウンリストをクリックし、ホット、ウォーム、コールドなどのフェーズを選択して、そのフェーズのインデックスをフィルターして表示します。

よくある質問

ILM ポリシーのチェック頻度を調整するにはどうすればよいですか?

デフォルトでは、ILM は 10 分ごとにポリシーに一致するインデックスをチェックします。これは、チェックが行われる前にデータ量が指定されたしきい値を超える可能性があることを意味します。たとえば、ステップ 3:ILM ポリシーの作成では、`max_docs` は 100 に設定されていますが、ドキュメント数が 100 を超えた後にのみロールオーバーがトリガーされる場合があります。

indices.lifecycle.poll_interval パラメーターを変更することで、チェック頻度を制御できます。

重要

チェック頻度を高くすると、ノードへの負荷が増加する可能性があります。ビジネスニーズに基づいて、このパラメーターは慎重に設定することを推奨します。

PUT _cluster/settings
{
  "transient": {
    "indices.lifecycle.poll_interval":"1m"
  }
}