マルチクラスタアラート管理機能を使用すると、Fleet インスタンスでアラート ルールを作成および変更できます。アラート ルールを作成または変更すると、Fleet インスタンスは指定した関連付けられているクラスタにアラート ルールを配布します。これにより、関連付けられているクラスタは同じアラート ルールを使用できます。 Fleet インスタンスは、Fleet インスタンスに新しく関連付けられたクラスタにもアラート ルールを配布できます。このトピックでは、マルチクラスタアラート管理機能の使用方法について説明します。
前提条件
Fleet 管理機能が有効になっている。
2 つのクラスタが Fleet インスタンスに関連付けられている(サービスプロバイダークラスタとサービス利用者クラスタ)。
Alibaba Cloud CLI の最新バージョンがインストールされている、およびAlibaba Cloud CLI が構成されている。
背景情報
マルチクラスタ管理シナリオで、各クラスタに統一されたアラートルールを使用する場合、Container Service for Kubernetes (ACK) コンソールにログインして、各クラスタのアラートルールを変更する必要がある場合があります。ただし、このプロセスは複雑で、不整合が発生しやすくなります。ACK One Fleet インスタンスが提供するマルチクラスタアラート管理機能を使用すると、Fleet インスタンスに関連付けられている複数のクラスタのアラートルールを一元的に構成できます。 Fleet インスタンスでアラートルールを作成し、アラートをトリガーする異常と、アラート通知を受信する連絡先の情報を指定するだけで済みます。詳細については、「アラート管理」をご参照ください。次の図は、マルチクラスタアラート管理の実装方法を示しています。
ステップ 1: 連絡先と連絡先グループを作成する
次の手順を実行して、連絡先と連絡先グループを作成します。連絡先と連絡先グループを作成すると、Alibaba Cloud アカウントに属するすべての ACK クラスタで使用できます。
ACK コンソール にログインします。左側のナビゲーションウィンドウで、[クラスタ] をクリックします。
[クラスタ] ページで、管理するクラスタを見つけ、その名前をクリックします。左側のペインで、 を選択します。
[アラート構成] ページで、[インストールを開始] をクリックします。コンソールは前提条件を自動的にチェックし、コンポーネントをインストールおよびアップグレードします。
[アラート] ページで、次の手順を実行して連絡先と連絡先グループを作成します。
[アラート連絡先] タブをクリックし、[作成] をクリックします。
[アラート連絡先の作成] パネルで、[名前]、[電話番号]、および [メール] パラメータを構成します。次に、[OK] をクリックします。
連絡先が作成されると、システムはアクティベーションのために連絡先にショートメッセージまたはメールを送信します。プロンプトに従って連絡先をアクティベートします。
[アラート連絡先グループ] タブをクリックし、[作成] をクリックします。
[アラート連絡先グループの作成] パネルで、[グループ名] パラメータを設定し、[連絡先] セクションで連絡先を選択して、[OK] をクリックします。
選択済み連絡先列に連絡先を追加したり、連絡先を削除したりできます。
ステップ 2: 連絡先グループ ID を取得する
Alibaba Cloud CLI で次のコマンドを実行して、作成した連絡先グループの ID をクエリします。
aliyun cs GET /alert/contact_groups予想される出力:
{ "contact_groups": [ { "ali_uid": 14783****, "binding_info": "{\"sls_id\":\"ack_14783****_***\",\"cms_contact_group_name\":\"ack_Default Contact Group\",\"arms_id\":\"1****\"}", "contacts": null, "created": "2021-07-21T12:18:34+08:00", "group_contact_ids": [ 2*** ], "group_name": "Default Contact Group", "id": 3***, "updated": "2022-09-19T19:23:57+08:00" } ], "page_info": { "page_number": 1, "page_size": 100, "total_count": 1 } }出力の情報に基づいて contactGroups パラメータを設定します。
contactGroups: - arms_contact_group_id: "1****" # 出力の contact_groups.binding_info.arms_id フィールドの値にパラメータを設定します。 cms_contact_group_name: ack_Default Contact Group # 出力の contact_groups.binding_info.cms_contact_group_name フィールドの値にパラメータを設定します。 id: "3***" # 出力の contact_groups.id フィールドの値にパラメータを設定します。
ステップ 3: アラート ルールを作成する
次のテンプレートに基づいてアラート ルールを作成できます。テンプレートには、ACK でサポートされているすべてのアラート ルールが含まれています。このステップでは、error-events ルールを有効にする方法について説明します。
アラートルールの名前は default である必要があります。アラートルールの名前空間は kube-system である必要があります。サポートされているアラートルールについて詳しくは、「CRD を使用してアラートルールを設定する」セクション(「アラート管理」トピック内)をご参照ください。
アラート ルールを作成した後、error-events ルールは有効になりません。配布ルールを作成して、error-events ルールを関連付けられているクラスタに配布する必要があります。その後、error-events ルールが有効になります。
error-events ルールの
rules.enableをenableに設定します。前のステップで構成した contactGroups パラメータを追加します。変更を保存し、ファイルに ackalertrule.yaml という名前を付けます。
kubectl apply -f ackalertrule.yamlコマンドを実行して、Fleet インスタンスにアラート ルールを作成します。
次のサンプル コードは例を示しています。
apiVersion: alert.alibabacloud.com/v1beta1
kind: AckAlertRule
metadata:
name: default
namespace: kube-system
spec:
groups:
- name: error-events
rules:
- enable: enable // error-events ルールを有効にする
contactGroups:
- arms_contact_group_id: "1****"
cms_contact_group_name: ack_Default Contact Group
id: "3***"
expression: sls.app.ack.error
name: error-event
notification:
message: kubernetes cluster error event. // Kubernetes クラスタエラーイベント
type: event
# ... (残りのコードは省略)
ステップ 4: 配布ルールを作成する
アラートルールは Kubernetes リソースの一種です。アラートルールの配布と アプリケーションの配布 は、オープンソースの Kubevela に基づいて実装されます。これは、Fleet インスタンスから関連付けられたクラスターに Kubernetes リソースを配布できます。関連付けられたクラスターにアラートルールを配布するには、次の手順を実行します。
ackalertrule-app.yaml という名前のファイルを作成し、次のコンテンツをファイルにコピーします。
方法 1: production=true ラベルが追加されている関連付けられているクラスタにアラート ルールを配布する
次のコマンドを実行して、Fleet インスタンスに関連付けられているクラスタにラベルを追加します。
kubectl get managedclusters # 関連付けられているクラスタの ID をクエリします。 kubectl label managedclusters <clusterid> production=trueproduction=true ラベルが追加されている関連付けられているクラスタにアラート ルールを配布します。
apiVersion: core.oam.dev/v1beta1 kind: Application metadata: name: alertrules namespace: kube-system annotations: app.oam.dev/publishVersion: version1 spec: components: - name: alertrules type: ref-objects properties: objects: - resource: ackalertrules name: default policies: - type: topology name: prod-clusters properties: clusterSelector: production: "true" # 関連付けられているクラスタを選択するために使用されるラベル。方法 2: 指定した関連付けられているクラスタにアラート ルールを配布する
<clusterid>を、アラート ルールを配布するクラスタの ID に置き換えます。apiVersion: core.oam.dev/v1beta1 kind: Application metadata: name: alertrules namespace: kube-system annotations: app.oam.dev/publishVersion: version1 spec: components: - name: alertrules type: ref-objects properties: objects: - resource: ackalertrules name: default policies: - type: topology name: prod-clusters properties: clusters: ["<clusterid1>", "<clusterid2>"] # アラート ルールを配布するクラスタの ID。
次のコマンドを実行して、配布ルールを作成します。
kubectl apply -f ackalertrule-app.yaml次のコマンドを実行して、配布されたリソースのステータスをクエリします。
kubectl amc appstatus alertrules -n kube-system --tree --detail予想される出力:
CLUSTER NAMESPACE RESOURCE STATUS APPLY_TIME DETAIL c565e4**** (cluster1)─── kube-system─── AckAlertRule/default updated 2022-**-** **:**:** Age: ** cbaa12**** (cluster2)─── kube-system─── AckAlertRule/default updated 2022-**-** **:**:** Age: **
アラート ルールを変更する
アラート ルールを変更するには、次の手順を実行します。
ackalertrule.yaml ファイルを変更し、
kubectl apply -f ackalertrule.yamlコマンドを実行して、変更をアラート ルールに適用します。ackalertrule-app.yaml ファイルの
annotations: app.oam.dev/publishVersionアノテーションを更新し、kubectl apply -f ackalertrule-app.yamlコマンドを実行して、変更を配布ルールに適用します。