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

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

最終更新日:Jun 04, 2026

Heartbeat の監視データは時間とともに増加し、シャード数とクラスターの負荷も増加します。インデックスライフサイクル管理 (ILM) は、heartbeat-* インデックスの、ホット、ウォーム、コールド、削除の各フェーズにわたるロールオーバー、シュリンク、移行、削除を自動化します。

手順

  1. ステップ 1: Hot-Warm クラスターの作成と設定

    Hot-Warm クラスターを作成し、インデックスの自動作成を有効にして、パブリックアクセス IP ホワイトリストを設定します。

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

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

  3. ステップ 3: ライフサイクルポリシーの作成

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

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

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

  5. ステップ 5: ライフサイクルポリシーのインデックスへの適用

    ライフサイクルポリシーを Heartbeat の初期インデックスに適用し、後続のすべてのインデックスがそれを継承するようにします。

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

    ホット、ウォーム、コールド、削除の各ライフサイクルフェーズのインデックスを表示します。

ステップ 1: Hot-Warm クラスターの作成と設定

  1. Hot-Warm クラスターを作成し、そのノード属性を確認します。次の表に、各ノードタイプの比較を示します。

    ノードタイプ

    データストレージ要件

    読み書き性能

    仕様

    ストレージ要件

    ホットノード

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

    高 (例:32 コア 64 GB)。

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

    ウォームノード

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

    低 (例:8 コア 32 GB)。

    Ultra ディスクを推奨します。OpenStore はサーバーレスのコールドデータストレージにも利用できます。

    Alibaba Cloud Elasticsearch では、ウォームノードの box_typewarm (cold ではありません) で、これはネイティブ Elasticsearch のウォーム層に相当します。
    1. Alibaba Cloud Elasticsearch インスタンスを作成する際に、ウォームノードを有効にして Hot-Warm クラスターを作成します。

      ウォームノードを有効にして購入すると、システムはノードの起動パラメーターに -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

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

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

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

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

Elastic のガイド「インデックスライフサイクル管理の設定」で、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

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

    host

    Kibana サービスのパブリックエンドポイント。Kibana 設定ページで確認できます。

    hosts

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

    ilm.enabled

    true に設定して ILM を有効にします。

    ilm.rollover_alias

    ロールオーバーされたインデックスのエイリアス。デフォルト:heartbeat-{beat.version}

    ilm.pattern

    ロールオーバーされたインデックス名のパターン。日付計算をサポートします。デフォルト:{now/d}-000001。ロールオーバー時に、末尾の数値がインクリメントされます (例:heartbeat-2020.04.29-000001heartbeat-2020.04.29-000002 になります)。

    username

    デフォルト:elastic

    password

    elastic ユーザーのパスワード。インスタンス作成時に設定します。パスワードをリセットする必要がある場合は、「インスタンスのアクセスパスワードをリセットする」をご参照ください。

    重要

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

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

    sudo ./heartbeat -e

ステップ 3: ライフサイクルポリシーの作成

ライフサイクルポリシーは、API または Kibana コンソールで作成できます。この例では、API を使用してポリシー heartbeat-policy を作成します。

Heartbeat は ./heartbeat setup --ilm-policy を実行するとデフォルトのポリシーをロードします。このポリシーは ./heartbeat export ilm-policy でエクスポートして、カスタムポリシーの開始点として使用できます。

Kibana コンソールで次のコマンドを実行して、ライフサイクルポリシーを作成します:

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

インデックスが 5 MB、1 日、またはドキュメント数 100 に達すると、ロールオーバーがトリガーされます。ロールオーバーされたインデックスは 60 秒後にウォームフェーズに入ります。

warm

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

cold

インデックスをホットノードからウォームノードに移行します。ロールオーバーから 1 時間後に削除フェーズに入ります。

delete

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

ポリシー名は変更できません。Kibana コンソールでもポリシーを作成できますが、max_age の最小単位は時間です。API では、秒などのより小さな単位をサポートしています。

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

Heartbeat は起動時に Elasticsearch にインデックステンプレートを自動的に作成します。ステップ 3: ライフサイクルポリシーの作成で作成した heartbeat-policy をこのテンプレートに関連付けます。

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

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

  3. Elasticsearch セクションで、[インデックスライフサイクルポリシー] をクリックします。

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

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

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

ステップ 5: ライフサイクルポリシーのインデックスへの適用

Heartbeat は起動時に初期インデックスを作成します。このインデックスにライフサイクルポリシーを適用します。後続のインデックスは、ステップ 4: ライフサイクルポリシーとインデックステンプレートの関連付けで設定したテンプレートからポリシーを継承します。

  1. [管理] ページで、Elasticsearch セクションに移動し、[インデックス管理] をクリックします。

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

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

  4. 確認のダイアログボックスで、[ポリシーを削除] をクリックします。

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

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

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

[インデックス管理] ページで、[ライフサイクルフェーズ] ドロップダウンリストからフェーズを選択してインデックスをフィルタリングします。

よくある質問

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

デフォルトでは、ILM は 10 分ごとに対象のインデックスをチェックします。この間隔の間に、データ量がしきい値を超える可能性があります。たとえば、ステップ 3: ライフサイクルポリシーの作成では max_docs が 100 に設定されていますが、ロールオーバーがトリガーされる前に実際のカウントが 100 を超える可能性があります。

indices.lifecycle.poll_interval パラメーターでチェック頻度を調整します:

重要

間隔を短くするとノードの負荷が増加します。ポリシーの応答性とクラスターのパフォーマンスのバランスを取ってください。

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