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

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

最終更新日:Aug 20, 2026

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

操作手順

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

    ホットノードとウォームノードを含むクラスターを作成し、自動インデックス作成を有効にして、パブリックアクセス用の IP ホワイトリストを設定します。

  2. 手順2:Heartbeat での ILM の設定

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

  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 ではありません。これは、Alibaba Cloud Elasticsearch のウォームノードが、ネイティブの Elasticsearch アーキテクチャにおけるウォームティアに対応するためです。
    1. Alibaba Cloud Elasticsearch インスタンスを作成する際に、ウォームノードを有効にしてホット/ウォームクラスターを作成します。

      ウォームノードを有効にして購入すると、ノードの起動パラメーターに -Enode.attr.box_type パラメーターが追加されます:

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

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

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

    3. 左側のナビゲーションペインで、[Dev Tools] をクリックします。

    4. [Console] ページで、次のコマンドを実行して、クラスター内のホットノードとウォームノードの属性を確認します。

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

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

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

  3. クラスターへのパブリックアクセス用の IP ホワイトリストを設定し、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 ホワイトリストを設定する必要があります。詳細については、「IP ホワイトリストの設定」をご参照ください。このパラメーターをプライベートエンドポイントに設定する場合は、クラスターと Heartbeat がインストールされているサーバーが同じ VPC にあることを確認してください。

    ilm.enabled

    ILM を有効にするには、このパラメーターを true に設定します。

    ilm.rollover_alias

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

    ilm.pattern

    ロールオーバー中に生成されるインデックスのパターン。このパラメーターは Date Math をサポートしています。デフォルト値は {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.overwritetrue に設定してテンプレートを上書きする必要があります。

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

    sudo ./heartbeat -e

手順3:ILM ポリシーの作成

API または Kibana コンソールを使用して、Elasticsearch で ILM ポリシーを作成できます。次の例は、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": {}
        }
      }
    }
  }
}

フェーズ

説明

ホット

インデックスサイズが 5 MB を超えるか、経過期間が 1 日を超えるか、またはドキュメント数が 100 を超えると、ロールオーバーがトリガーされます。rollover アクションは max_docsmax_size、および max_age の条件をサポートしており、これらのいずれかの条件が満たされると実行されます。ロールオーバー後、古いインデックスは 60 秒の遅延の後にウォームフェーズに入ります。

ウォーム

インデックスは 1 つのシャードにシュリンクされ、次に 1 つのセグメントにフォースマージされます。その後、インデックスはロールオーバーから 3 分後にコールドフェーズに入ります。

コールド

インデックスはホットノードからウォームノードに移行され、1 時間後にデリートフェーズに入ります。

デリート

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

ポリシー名は作成後に変更できません。Kibana コンソールでポリシーを作成することもできます。ただし、Kibana では max_age の最小単位は時間です。API を使用する場合は、最小単位を秒で指定できます。

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

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

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

  2. 左側のナビゲーションペインで、[Management] をクリックします。

  3. Elasticsearch エリアで、[Index Lifecycle Policies] をクリックします。

  4. [Index Lifecycle Policies] リストで、heartbeat-policy ポリシーを見つけ、ポリシーの行で [Actions] > [Add policy to index template] を選択します。

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

  6. [Add policy] をクリックします。

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

Heartbeat を起動すると、Elasticsearch は自動的にインデックスを作成します。「手順4:ILM ポリシーとインデックステンプレートの関連付け」で説明されているように、ポリシーはすでにインデックステンプレートに関連付けられていますが、デフォルトのポリシーを上書きするには、この最初のインデックスに ILM ポリシーを手動で関連付ける必要があります。

  1. [Management] ページの Elasticsearch エリアで、[Index Management] をクリックします。

  2. [Index Management] の一覧で、対象のインデックスを見つけてインデックス名をクリックします。

  3. 概要 ページで、[Manage] > [Remove lifecycle policy] を選択して、Heartbeat に付属のデフォルトポリシーを削除します。

  4. 表示されたダイアログボックスで、[Remove policy] をクリックします。

  5. 次に、[Manage] > [Add lifecycle policy] を選択します。

  6. 表示されたダイアログボックスで、[Lifecycle policy] リストから、「手順3:ILM ポリシーの作成」で作成した heartbeat-policy ポリシーを選択します。[Rollover alias] テキストボックスに、「手順4:ILM ポリシーとインデックステンプレートの関連付け」で定義したインデックスエイリアスを入力します。次に、[Add policy] をクリックします。

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

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

よくある質問

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

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

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

重要

チェック頻度が高いと、ノードの負荷が増加します。ビジネス要件に応じて、このパラメーターを慎重に設定してください。

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