Heartbeat によって生成される時系列モニタリングデータは、時間の経過とともに増加し、シャード数とクラスターの負荷が増大します。 インデックスライフサイクル管理 (ILM) を使用して、heartbeat-* インデックスのロールオーバーポリシーを定義できます。 このポリシーでは、ホットフェーズでインデックスをロールオーバーし、ウォームフェーズでシャードを縮小してセグメントを強制的にマージし、コールドフェーズでデータをウォームノードに移行し、削除フェーズで期限切れのデータを定期的に削除できます。
操作手順
-
ホットノードとウォームノードを含むクラスターを作成し、自動インデックス作成を有効にして、パブリックアクセス用の IP ホワイトリストを設定します。
-
ILM 機能を有効にし、heartbeat.yml ファイルでそのパラメーターを設定します。Heartbeat を起動すると、Elasticsearch は自動的に Heartbeat のインデックステンプレートを生成します。
-
ILM ポリシー API を使用して、インデックスのロールオーバーとアーカイブの条件を定義するポリシーを作成します。
-
手順4:ILM ポリシーとインデックステンプレートの関連付け
ILM ポリシーを Heartbeat のインデックステンプレートに関連付けます。
-
ILM ポリシーを最初の Heartbeat インデックスに関連付けて、ポリシーをインデックステンプレートの対象となるすべてのインデックスに適用します。
-
ホット、ウォーム、コールド、デリートの各フェーズでアーカイブされたインデックスを表示します。
手順1:ホット/ウォームクラスターの作成と設定
-
ホットノードとウォームノードの両方を含むホット/ウォームクラスターを作成し、それらの属性を確認します。違いを以下の表に示します。
ノードタイプ
データ要件
読み書きパフォーマンス
仕様
ストレージ
ホットノード
過去 2 日間のログデータなど、最近のデータ。
高
32 コア 64 GB など、高スペック。
SSD クラウドディスクを推奨します。
ウォームノード
2 日以上前のログデータなど、履歴データ。
低
8 コア 32 GB など、低スペック。
ウルトラディスクを推奨します。OpenStore を使用して、大量のコールドデータ用のサーバーレスストレージを利用することもできます。
Alibaba Cloud Elasticsearch では、ウォームノードの
box_typeの値はwarmであり、coldではありません。これは、Alibaba Cloud Elasticsearch のウォームノードが、ネイティブの Elasticsearch アーキテクチャにおけるウォームティアに対応するためです。-
Alibaba Cloud Elasticsearch インスタンスを作成する際に、ウォームノードを有効にしてホット/ウォームクラスターを作成します。
ウォームノードを有効にして購入すると、ノードの起動パラメーターに
-Enode.attr.box_typeパラメーターが追加されます:-
ホットノード:
-Enode.attr.box_type=hot -
ウォームノード:
-Enode.attr.box_type=warm
ウォームノードを有効にすると、既存のデータノードがホットノードとして指定されます。
-
-
クラスターの Kibana コンソールにログインします。詳細については、「Kibana を使用したクラスターへの接続」をご参照ください。
-
左側のナビゲーションペインで、[Dev Tools] をクリックします。
-
[Console] ページで、次のコマンドを実行して、クラスター内のホットノードとウォームノードの属性を確認します。
GET _cat/nodeattrs?v&h=host,attr,value出力にホットノードとウォームノードが含まれている場合、クラスターはホット/ウォームアーキテクチャをサポートしています。
-
-
クラスターの自動インデックス作成を有効にします。詳細については、「YML パラメーターを設定して自動インデックス作成を有効にする」をご参照ください。
-
クラスターへのパブリックアクセス用の IP ホワイトリストを設定し、Heartbeat がインストールされているサーバーの IP アドレスをホワイトリストに追加します。詳細については、「IP ホワイトリストの設定」をご参照ください。
手順2:Heartbeat での ILM の設定
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.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.overwriteをtrueに設定してテンプレートを上書きする必要があります。 -
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 を超えると、ロールオーバーがトリガーされます。 |
|
ウォーム |
インデックスは 1 つのシャードにシュリンクされ、次に 1 つのセグメントにフォースマージされます。その後、インデックスはロールオーバーから 3 分後にコールドフェーズに入ります。 |
|
コールド |
インデックスはホットノードからウォームノードに移行され、1 時間後にデリートフェーズに入ります。 |
|
デリート |
インデックスは削除されます。 |
ポリシー名は作成後に変更できません。Kibana コンソールでポリシーを作成することもできます。ただし、Kibana では max_age の最小単位は時間です。API を使用する場合は、最小単位を秒で指定できます。
手順4:ILM ポリシーとインデックステンプレートの関連付け
Heartbeat を起動すると、Heartbeat のインデックステンプレートが Elasticsearch に自動的に作成されます。「手順3:ILM ポリシーの作成」で作成した heartbeat-policy ポリシーをこのインデックステンプレートに関連付けます。
-
Alibaba Cloud Elasticsearch インスタンスの Kibana コンソールにログインします。詳細については、「Kibana を使用したクラスターへの接続」をご参照ください。
-
左側のナビゲーションペインで、[Management] をクリックします。
-
Elasticsearch エリアで、[Index Lifecycle Policies] をクリックします。
-
[Index Lifecycle Policies] リストで、heartbeat-policy ポリシーを見つけ、ポリシーの行で [Actions] > [Add policy to index template] を選択します。
-
表示されたダイアログボックスで、[Index templates] リストからインデックステンプレートを選択し、[Rollover alias] テキストボックスにインデックスエイリアスを入力します。
-
[Add policy] をクリックします。
手順5:インデックスと ILM ポリシーの関連付け
Heartbeat を起動すると、Elasticsearch は自動的にインデックスを作成します。「手順4:ILM ポリシーとインデックステンプレートの関連付け」で説明されているように、ポリシーはすでにインデックステンプレートに関連付けられていますが、デフォルトのポリシーを上書きするには、この最初のインデックスに ILM ポリシーを手動で関連付ける必要があります。
-
[Management] ページの Elasticsearch エリアで、[Index Management] をクリックします。
-
[Index Management] の一覧で、対象のインデックスを見つけてインデックス名をクリックします。
-
概要 ページで、[Manage] > [Remove lifecycle policy] を選択して、Heartbeat に付属のデフォルトポリシーを削除します。
-
表示されたダイアログボックスで、[Remove policy] をクリックします。
-
次に、[Manage] > [Add lifecycle policy] を選択します。
-
表示されたダイアログボックスで、[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"
}
}