このトピックでは、インデックスライフサイクル管理 (ILM) を使用して Heartbeat 時系列データを管理し、古くなったモニタリングデータをホットノードからウォームノードに自動的に移動して、パフォーマンスを最適化し、ストレージコストを削減する方法について説明します。
前提条件
ILM で Heartbeat データを管理するには、以下が必要です。
クラスター用にウォームノードが構成されていること。
ウォームノードは次のいずれかの方法で取得できます。
クラスター作成時
注意事項
テンプレートとエイリアスの要件: ライフサイクルポリシーを設定する前に、インデックステンプレートとエイリアスを定義します。
ポリシー変更のタイミング: ロールオーバー中にライフサイクルポリシーを変更した場合、新しいポリシーは次のロールオーバーイベントで有効になります。
操作手順
ステップ 1: ウォームノード構成の確認
続行する前に、クラスターにウォームノードが正しくプロビジョニングされていることを確認します。
Alibaba Cloud Elasticsearch コンソール
Elasticsearch クラスターの基本情報ページに移動し、[ノードの可視化] セクションでクラスタアーキテクチャを確認します。

Kibana
Kibana コンソールに移動し、[Dev Tools] を選択して、[Console] で次のコマンドを実行します。
GET _cat/nodeattrs?v&h=node,attr,value&s=attr:desc応答に box_type:warm 属性が含まれていることは、クラスターにウォームノードが設定されていることを示します。
ステップ 2: Heartbeat での ILM の構成
Heartbeat を Elasticsearch ILM とシームレスに統合するには、heartbeat.yml ファイルで ILM 構成を定義する必要があります。詳細については、「インデックスライフサイクル管理の設定」をご参照ください。
Heartbeat インストールパッケージをダウンロードし、解凍します。
「
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.kibana: # Kibana Host # Scheme and port can be left out and will be set to the default (http and 5601) # In case you specify and additional path, the scheme is required: http://localhost:5601/path # IPv6 addresses should always be defined as: https://[2001:db8::1]:5601 host: "https://es-cn-4591jumei00xxxxxx.kibana.elasticsearch.aliyuncs.com:5601" output.elasticsearch: # Array of hosts to connect to. hosts: ["es-cn-4591jumei00xxxxxx.elasticsearch.aliyuncs.com:9200"] ilm.enabled: true setup.template.overwrite: true ilm.rollover_alias: "heartbeat" ilm.pattern: "{now/d}-000001" # Enabled ilm (beta) to use index lifecycle management instead daily indices. #ilm.enabled: false # Optional protocol and basic auth credentials. #protocol: "https" username: "elastic" password: "<your_password>"パラメーター:
index.number_of_shards: プライマリシャードの数。デフォルト値は 1 です。
index.routing.allocation.require.box_type: インデックスデータをホットノードに書き込みます。
host: ご利用の Kibana サービスのパブリックエンドポイントに置き換えます。エンドポイントは Kibana 構成ページから取得します。
hosts: ご利用の Elasticsearch クラスターのパブリックまたは内部エンドポイントに置き換えます。エンドポイントはクラスターの基本情報ページから取得します。詳細については、「インスタンスの基本情報の表示」をご参照ください。
説明これをパブリックエンドポイントに設定する場合、クラスターのパブリックネットワークアクセスホワイトリストを構成します。詳細については、「インスタンスのパブリックまたはプライベートアクセスホワイトリストの構成」をご参照ください。これを内部エンドポイントに設定する場合、クラスターと Heartbeat がインストールされているサーバーが同じ VPC 内にあることを確認します。
ilm.enabled:
trueに設定すると、ILM を有効化します。setup.template.overwrite: 元のインデックステンプレートを上書きするかどうかを指定します。すでにこのバージョンのインデックステンプレートを Elasticsearch に読み込んでいる場合は、このパラメーターを
trueに設定して、元のテンプレートを上書きします。ilm.rollover_alias: ロールオーバー中に生成されるインデックスのエイリアス。デフォルトは heartbeat-\{beat.version\} です。
ilm.pattern: ロールオーバー中に生成されるインデックスのパターン。日付演算をサポートします。デフォルトは {now/d}-000001 です。ロールオーバーがトリガーされると、新しいインデックス名の最後の桁が 1 ずつ増分されます。たとえば、最初のロールオーバーでは heartbeat-2020.04.29-000001 という名前のインデックスが作成されます。ロールオーバー条件が再度満たされると、Elasticsearch は heartbeat-2020.04.29-000002 という名前の新しいインデックスを作成します。
ユーザー名: デフォルトのユーザー名は
elasticです。password: elastic ユーザーのパスワードは、クラスター作成時に設定されます。
その他のパラメーターの詳細については、「Heartbeat 公式構成ドキュメント」をご参照ください。
重要インデックス テンプレートを読み込んだ後に ilm.rollover_alias または ilm.pattern を変更した場合は、setup.template.overwrite を
trueに設定してインデックス テンプレートを再書き込みします。Heartbeat を起動します。
sudo ./heartbeat -e
ステップ 3: ILM ポリシーの作成
ILM API または Kibana コンソールを使用して heartbeat-policy を作成します。この例では ILM API を使用します。
Heartbeat にはデフォルトポリシーが含まれています。./heartbeat setup --ilm-policy でロードするか、./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": {}
}
}
}
}
}ポリシー名は作成後に変更できません。
Kibana コンソールでポリシーを作成することもできます。ただし、Kibana の max_age の最小単位は時間です。API を使用する場合、最小単位を秒で指定できます。
ステップ 4: ILM ポリシーのインデックステンプレートへの適用
Heartbeat を開始すると、お使いの Elasticsearch クラスターに Heartbeat インデックス テンプレートが自動的に作成されます。ステップ 3: ILM ポリシーを作成するで作成した ILM ポリシーをこのテンプレートに適用します。
左側のナビゲーションメニューで、[管理] をクリックします。
Elasticsearch エリアで、[インデックスライフサイクルポリシー] をクリックします。
[インデックスライフサイクルポリシー] リストで、 を選択します。

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

[ポリシーを追加] をクリックします。
ステップ 5: インデックスと ILM ポリシーの関連付け
Heartbeat の起動後、インデックスが Elasticsearch クラスターに自動的に作成されます。初期化のために、対応する ILM ポリシーをインデックスに手動でリンクする必要があります。
[管理] ページの [Elasticsearch] エリアで、[インデックス管理] を選択します。
[インデックス管理] リストで、対象のインデックスを見つけ、その名前をクリックします。
「概要」ページで、 をクリックして、Heartbeat に付属するデフォルトポリシーを削除します。

ダイアログボックスで、[ポリシーの削除] をクリックします。
次に、 を選択します。
ダイアログボックスで、手順 3: ILM ポリシーの作成で作成したライフサイクルポリシーを、[ライフサイクルポリシー] から選択します。[インデックスロールオーバーエイリアス] テキストボックスに、手順 4: ILM ポリシーをインデックステンプレートに適用するで定義したインデックスエイリアスを入力し、[ポリシーの追加] をクリックします。

ILM ポリシーが初期インデックスに関連付けられた後、結果は次の図に示されます。

ステップ 6: 各フェーズでのインデックスの表示
ホット段階のインデックスを表示するには、[インデックス管理] ページで、 を選択します。
他のフェーズのインデックスを表示するには、同じ方法を使用できます。