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

Container Service for Kubernetes:マルチクラスタアラート管理

最終更新日:Apr 15, 2025

マルチクラスタアラート管理機能を使用すると、Fleet インスタンスでアラート ルールを作成および変更できます。アラート ルールを作成または変更すると、Fleet インスタンスは指定した関連付けられているクラスタにアラート ルールを配布します。これにより、関連付けられているクラスタは同じアラート ルールを使用できます。 Fleet インスタンスは、Fleet インスタンスに新しく関連付けられたクラスタにもアラート ルールを配布できます。このトピックでは、マルチクラスタアラート管理機能の使用方法について説明します。

前提条件

背景情報

マルチクラスタ管理シナリオで、各クラスタに統一されたアラートルールを使用する場合、Container Service for Kubernetes (ACK) コンソールにログインして、各クラスタのアラートルールを変更する必要がある場合があります。ただし、このプロセスは複雑で、不整合が発生しやすくなります。ACK One Fleet インスタンスが提供するマルチクラスタアラート管理機能を使用すると、Fleet インスタンスに関連付けられている複数のクラスタのアラートルールを一元的に構成できます。 Fleet インスタンスでアラートルールを作成し、アラートをトリガーする異常と、アラート通知を受信する連絡先の情報を指定するだけで済みます。詳細については、「アラート管理」をご参照ください。次の図は、マルチクラスタアラート管理の実装方法を示しています。

ステップ 1: 連絡先と連絡先グループを作成する

次の手順を実行して、連絡先と連絡先グループを作成します。連絡先と連絡先グループを作成すると、Alibaba Cloud アカウントに属するすべての ACK クラスタで使用できます。

  1. ACK コンソール にログインします。左側のナビゲーションウィンドウで、[クラスタ] をクリックします。

  2. [クラスタ] ページで、管理するクラスタを見つけ、その名前をクリックします。左側のペインで、[操作] > [アラート] を選択します。

  3. [アラート構成] ページで、[インストールを開始] をクリックします。コンソールは前提条件を自動的にチェックし、コンポーネントをインストールおよびアップグレードします。

  4. [アラート] ページで、次の手順を実行して連絡先と連絡先グループを作成します。

    1. [アラート連絡先] タブをクリックし、[作成] をクリックします。

    2. [アラート連絡先の作成] パネルで、[名前][電話番号]、および [メール] パラメータを構成します。次に、[OK] をクリックします。

      連絡先が作成されると、システムはアクティベーションのために連絡先にショートメッセージまたはメールを送信します。プロンプトに従って連絡先をアクティベートします。

    3. [アラート連絡先グループ] タブをクリックし、[作成] をクリックします。

    4. [アラート連絡先グループの作成] パネルで、[グループ名] パラメータを設定し、[連絡先] セクションで連絡先を選択して、[OK] をクリックします。

      選択済み連絡先列に連絡先を追加したり、連絡先を削除したりできます。

ステップ 2: 連絡先グループ ID を取得する

  1. 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
        }
    }
  2. 出力の情報に基づいて 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 ルールが有効になります。

  1. error-events ルールの rules.enableenable に設定します。

  2. 前のステップで構成した contactGroups パラメータを追加します。変更を保存し、ファイルに ackalertrule.yaml という名前を付けます。

  3. 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 リソースを配布できます。関連付けられたクラスターにアラートルールを配布するには、次の手順を実行します。

  1. ackalertrule-app.yaml という名前のファイルを作成し、次のコンテンツをファイルにコピーします。

    • 方法 1: production=true ラベルが追加されている関連付けられているクラスタにアラート ルールを配布する

      1. 次のコマンドを実行して、Fleet インスタンスに関連付けられているクラスタにラベルを追加します。

        kubectl get managedclusters    # 関連付けられているクラスタの ID をクエリします。
        kubectl label managedclusters <clusterid> production=true
      2. production=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。
      

  2. 次のコマンドを実行して、配布ルールを作成します。

    kubectl apply -f ackalertrule-app.yaml
  3. 次のコマンドを実行して、配布されたリソースのステータスをクエリします。

    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: **
    

アラート ルールを変更する

アラート ルールを変更するには、次の手順を実行します。

  1. ackalertrule.yaml ファイルを変更し、kubectl apply -f ackalertrule.yaml コマンドを実行して、変更をアラート ルールに適用します。

  2. ackalertrule-app.yaml ファイルの annotations: app.oam.dev/publishVersion アノテーションを更新し、kubectl apply -f ackalertrule-app.yaml コマンドを実行して、変更を配布ルールに適用します。