Container Service for Kubernetes (ACK) では、アラートを設定してクラスター内の例外を一元管理し、さまざまなシナリオに対応するさまざまなメトリックを提供できます。クラスターにカスタムリソース定義 (CRD) をデプロイして、アラートルールを設定および管理できます。このトピックでは、登録済みクラスターのアラートを設定し、アラートルールを構成する方法について説明します。
前提条件
ACK One 登録済みクラスターが作成され、オンプレミス データセンターにデプロイされた外部 Kubernetes クラスターが ACK One 登録済みクラスター に接続されていること。
登録済みクラスターで alicloud-monitor-controller を構成する
手順 1:alicloud-monitor-controller に RAM 権限を付与する
onectl を使用する
オンプレミス マシンに onectl をインストールします。詳細については、「onectl を使用して登録済みクラスターを管理する」をご参照ください。
次のコマンドを実行して、alicloud-monitor-controller に Resource Access Management (RAM) 権限を付与します。
onectl ram-user grant --addon alicloud-monitor-controller
期待される出力:
Ram policy ack-one-registered-cluster-policy-alicloud-monitor-controller granted to ram user ack-one-user-ce313528c3 successfully.
コンソールを使用する
登録済みクラスターにコンポーネントをインストールする前に、登録済みクラスターに Alibaba Cloud リソースへのアクセス権限を付与するために AccessKey ペアを設定する必要があります。AccessKey ペアを設定する前に、RAM ユーザーを作成し、Alibaba Cloud リソースにアクセスするための権限を RAM ユーザーに付与します。
例:
{ "Action": [ "log:*", "arms:*", "cms:*", "cs:UpdateContactGroup" ], "Resource": [ "*" ], "Effect": "Allow" }
- 警告
AccessKey のセキュリティを強化するために、ネットワークアクセス制御用の AccessKey ペアベースのポリシーを設定し、AccessKey の呼び出し元を信頼できるネットワーク環境に制限することをお勧めします。
AccessKey ペアを使用して、登録済みクラスターに alibaba-addon-secret という名前のシークレットを作成します。
alicloud-monitor-controller をインストールすると、システムは AccessKey ペアを使用してクラウド リソースに自動的にアクセスします。
kubectl -n kube-system create secret generic alibaba-addon-secret --from-literal='access-key-id=<your access key id>' --from-literal='access-key-secret=<your access key secret>'
説明<your access key id>
と<your access key secret>
は、前の手順で取得した AccessKey ペアに置き換えます。
手順 2:alicloud-monitor-controller をインストールおよび更新する
onectl を使用する
次のコマンドを実行して、alicloud-monitor-controller をインストールします。
onectl addon install alicloud-monitor-controller
期待される出力:
Addon alicloud-monitor-controller, version **** installed.
コンソールを使用する
コンソールは、アラート設定が要件を満たしているかどうかを自動的にチェックし、alicloud-monitor-controller をアクティブ化、インストール、または更新するようにガイドします。
ACK コンソール にログインします。左側のナビゲーション ウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターを見つけ、その名前をクリックします。左側のウィンドウで、 を選択します。
[アラート設定] ページで、[インストールを開始] をクリックします。コンソールは前提条件を自動的にチェックし、コンポーネントをインストールおよびアップグレードします。
インストールとアップグレードが完了したら、[アラート設定] ページでアラートを設定します。
タブ
説明
[アラートルール管理]
[有効] をオンにして、対応するアラートルール セットを有効にします。[通知オブジェクトの編集] をクリックして、関連付けられた通知オブジェクトを設定します。
[アラート履歴]
過去 1 日以内に送信された最新の 100 件の履歴レコードを表示できます。[アラートルール] 列のリンクをクリックして、対応するモニタリング システムに移動し、詳細なルール設定を表示します。[トラブルシューティング] をクリックすると、例外が発生したリソース ページ (イベントまたはメトリック例外) にすばやく移動できます。
[連絡先管理]
アラート連絡先を作成、編集、または削除できます。
連絡方法は、ショートメッセージ、メールボックス、ロボット タイプで設定できます。CloudMonitor コンソール の で認証して、アラートメッセージを受信する必要があります。連絡先の同期もサポートされています。認証情報の有効期限が切れた場合は、CloudMonitor で対応する連絡先を削除し、連絡先ページを更新できます。通知オブジェクトのロボット タイプ設定については、「DingTalk ロボット」、「WeCom ロボット」、および「Lark ロボット」をご参照ください。
[連絡グループ管理]
アラート連絡グループを作成、編集、または削除できます。アラート連絡グループが存在しない場合、ACK コンソールは登録時に入力した情報に基づいてデフォルトのアラート連絡グループを自動的に作成します。
アラートを設定する
手順 1:デフォルトのアラートルールを有効にする
ACK コンソール にログインします。左側のナビゲーション ウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターを見つけ、その名前をクリックします。左側のウィンドウで、 を選択します。
[アラートルール] タブで、アラートルール セットを有効にします。
手順 2:アラートルールを設定する
ACK コンソール にログインします。左側のナビゲーション ウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターを見つけ、その名前をクリックします。左側のウィンドウで、 を選択します。
[アラートルール] タブで、[連絡先を変更] をクリックして、アラートの送信先の連絡グループを指定します。[ステータス] をオンまたはオフにして、アラートルール セットを有効または無効にできます。
機能
説明
[アラートルール]
デフォルトでは、ACK は例外とメトリックに基づいてアラートを生成するために使用できるアラートルール テンプレートを提供します。
アラートルールは複数のアラートルール セットに分類されます。アラートルール セットを有効化、無効化、およびアラートルール セットに複数のアラート連絡グループを設定できます。
アラートルール セットには複数のアラートルールが含まれています。各アラートルールはアラート項目に対応しています。YAML ファイルを作成して、クラスターに複数のアラートルール セットを設定できます。また、YAML ファイルを変更してアラートルールを更新することもできます。
YAML ファイルを使用してアラートルールを設定する方法の詳細については、「CRD を使用してアラートルールを設定する」をご参照ください。
デフォルトのアラート テンプレートの詳細については、「デフォルトのアラートルール テンプレート」をご参照ください。
[アラート履歴]
最大 100 件の履歴アラートを表示できます。アラートを選択し、[アラートルール] 列のリンクをクリックして、モニタリング システムでルール詳細を表示できます。[詳細] をクリックすると、アラートがトリガーされたリソース ページに移動できます。アラートは、例外または異常なメトリックによってトリガーされる場合があります。
[アラート連絡先]
アラート連絡先を作成、編集、または削除できます。
[アラート連絡グループ]
アラート連絡グループを作成、編集、または削除できます。アラート連絡グループが存在しない場合、ACK コンソールは登録時に入力した情報に基づいてデフォルトのアラート連絡グループを自動的に作成します。
CRD を使用してアラートルールを設定する
アラート機能が有効になっていると、システムは [kube-system] 名前空間に AckAlertRule を自動的に作成します。AckAlertRule にはデフォルトのアラートルール テンプレートが含まれています。AckAlertRule を使用してアラートルール セットを設定できます。
ACK コンソール にログインします。左側のナビゲーション ウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターを見つけ、その名前をクリックします。左側のウィンドウで、 を選択します。
[アラートルール管理] タブで、右上隅にある [アラート設定の編集] をクリックします。次に、ターゲット ルールの行で [アクション] > [YAML] をクリックして、現在のクラスターの AckAlertRule リソース設定を表示します。
デフォルトのアラートルール テンプレートの説明を参照して、サンプル YAML ファイルを変更します。
例:
apiVersion: alert.alibabacloud.com/v1beta1 kind: AckAlertRule metadata: name: default spec: groups: # 以下は、クラスターイベントアラートルールの設定例です。 - name: pod-exceptions # アラートルールグループの名前。アラートテンプレートの Group_Name フィールドに対応します。 rules: - name: pod-oom # アラートルールの名前。 type: event # アラートルールのタイプ (Rule_Type)。有効な値:event および metric-cms。 expression: sls.app.ack.pod.oom # アラートルールの式。ルールタイプが event の場合、式の値は、このトピックで説明されているデフォルトのアラートルール テンプレートの Rule_Expression_Id の値です。 enable: enable # アラートルールのステータス。有効な値:enable および disable。 - name: pod-failed type: event expression: sls.app.ack.pod.failed enable: enable # 以下は、クラスター基本リソースアラートルールの設定例です。 - name: res-exceptions # アラートルールグループの名前。アラートテンプレートの Group_Name フィールドに対応します。 rules: - name: node_cpu_util_high # アラートルールの名前。 type: metric-cms # アラートルールのタイプ (Rule_Type)。有効な値:event および metric-cms。 expression: cms.host.cpu.utilization # アラートルールの式。ルールタイプが metric-cms の場合、式の値は、このトピックで説明されているデフォルトのアラートルール テンプレートの Rule_Expression_Id の値です。 contactGroups: # アラートルールにマッピングされるアラート連絡グループ設定。設定は ACK コンソールによって生成されます。同じアカウントには同じ連絡先が使用されます。連絡先は複数のクラスターで再利用できます。 enable: enable # アラートルールのステータス。有効な値:enable および disable。 thresholds: # アラートルールのしきい値。詳細については、アラートルールのしきい値を変更する方法に関するセクションを参照してください。 - key: CMS_ESCALATIONS_CRITICAL_Threshold unit: percent value: '1'
デフォルトのアラートルール テンプレート
ACK は、次の条件に基づいて登録済みクラスターにデフォルトのアラートルールを作成します。
デフォルトのアラートルールが有効になっている。
初めて [アラートルール] タブに移動し、デフォルトのアラートルールが有効になっていない。
次の表は、デフォルトのアラートルールについて説明しています。
アラート項目 | ルールの説明 | アラートソース | Rule_Type | ACK_CR_Rule_Name | SLS_Event_ID |
クラスター検査で異常が検出されました | 自動検査メカニズムが潜在的な異常を検出すると、アラートがトリガーされます。具体的な問題と日々のメンテナンス戦略を分析する必要があります。チケットを送信する して ACK チームに連絡してください。 | Simple Log Service | event | cis-sched-failed | sls.app.ack.cis.schedule_task_failed |