Container Service for Kubernetes (ACK) は、コンテナーのアラートを一元的に設定できるアラート管理機能を提供します。 アラートルールを設定して、サービス例外が発生した場合、または次のメトリックのいずれかがしきい値を超えた場合に通知を受け取ることができます。 クラスターにCustomResourceDefinitions (CRD) をデプロイすることで、クラスターのデフォルトのアラートルールを変更できます。 これにより、クラスターの異常な変更を検出できます。
機能紹介
クラスター例外のイベントによってトリガーされるアラート。 イベントデータは、ACKのイベントセンターから同期される。 Simple Log ServiceおよびManaged Service for PrometheusのKubernetesイベントセンター機能を有効にする必要があります。 詳細については、「イベントモニタリング」および「Prometheusのマネージドサービス」をご参照ください。
基本クラスターリソースの主要メトリックがしきい値を超えたときにトリガーされるアラート。 メトリクスはCloudMonitorから同期されます。 詳細については、「基本リソースの監視」をご参照ください。
シナリオ
クラスターO&M
アラートルールセットを設定して、クラスター管理、ストレージ、ネットワーク、エラスティックスケーリングの例外をできるだけ早く検出できます。
リソース例外に設定されたアラートルールセット: 基本クラスターリソースの主要なメトリックがしきい値を超えた場合に通知します。 CPU使用率、メモリ使用率、ネットワーク遅延などの主要なメトリックが指定されたしきい値を超えると、アラートがトリガーされます。 アラート通知を受け取った場合は、クラスターの安定性を確保するための対策を講じることができます。
クラスター例外のアラートルールセット: ノードまたはコンテナーの例外を通知します。 アラートは、Dockerプロセス例外、ノードプロセス例外、ポッドの起動失敗などのイベントによってトリガーされます。
ストレージ例外のアラートルールセット: ストレージの変更と例外を通知します。
ネットワーク例外のアラートルールセット: ネットワークの変更と例外を通知します。
O&M例外のアラートルールセット: クラスター制御に関連する変更と例外を通知します。
アプリケーション開発
アラートルールを設定して、クラスター内の実行中のアプリケーションの例外と異常なメトリックを通知することができます。 たとえば、ポッドレプリカの例外に関する通知を受け取るようにアラートルールを設定したり、デプロイのCPUとメモリの使用率がしきい値を超えた場合に通知したりできます。 デフォルトのアラートルールテンプレートを使用して、クラスター内のポッドレプリカの例外に関する通知を受信するアラートをすばやく設定できます。 たとえば、ポッド例外のアラートルールセットを設定および有効にして、アプリケーションのポッドで例外を通知することができます。
アプリケーション管理
アプリケーションのライフサイクル全体で発生する問題を通知するには、アプリケーションの正常性、容量計画、クラスターの安定性、例外、およびエラーに注意することをお勧めします。 重要なイベントに設定されたアラートルールセットを設定および有効にして、クラスター内の警告とエラーを通知することができます。 リソース例外のアラートルールセットを設定および有効にして、クラスターでの異常なリソース使用量を通知し、容量計画を最適化できます。
マルチクラスター管理
複数のクラスターを管理する場合、クラスター間でアラートルールを設定して同期することは複雑なタスクになる場合があります。 ACKを使用すると、クラスターにCRDをデプロイしてアラートルールを管理できます。 同じCRDを設定して、複数のクラスター間でアラートルールを同期できます。
ステップ1: アラート管理の有効化
アラート管理は、ACK管理クラスターとACK専用クラスターに対してのみ有効にできます。
ACK管理クラスター
クラスター作成時にPrometheusのマネージドサービスを有効にする
[コンポーネント設定] ウィザードページで、[アラート] の右側にある [デフォルトのアラートルールテンプレートを使用] を選択し、連絡先グループを選択します。 詳細については、「ACK管理クラスターの作成」をご参照ください。
クラスターが作成されると、クラスターのデフォルトのアラートルールが自動的に有効になり、デフォルトのアラートルールがトリガーされると、デフォルトの連絡先グループに通知が送信されます。 アラート送信先またはアラート送信先グループの情報を変更できます。 詳細については、「アラート送信先またはアラート送信先グループの変更」をご参照ください。
既存のクラスターに対するPrometheusのマネージドサービスの有効化
既存のクラスターに対してManaged Service for Prometheusを有効にするには、次の手順を実行します。
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、 を選択します。
[アラート] ページで、画面の指示に従って必要なコンポーネントをインストールおよび更新します。
ACKコンソールは、クラスターが次の条件を満たしているかどうかを自動的にチェックし、必要なコンポーネントをアクティブ化、インストール、および更新する方法について説明します。
すべての条件が満たされていない場合は、画面の指示に従って必要なコンポーネントをインストールまたは更新します。
Simple Log Serviceが有効化されています。 Log Serviceが有効化されていない場合は、log Serviceコンソールにログインし、画面の指示に従ってサービスを有効化します。
説明Simple Log Serviceの課金ルールの詳細については、「課金機能の課金項目」をご参照ください。
Event Centerがインストールされています。 詳細については、「イベントモニタリング」をご参照ください。
alicloud-monitor-controllerコンポーネントが最新バージョンに更新されました。 詳細については、「alicloud-monitor-controller」をご参照ください。
必要なコンポーネントをインストールして更新した後、[アラート] ページでアラートルールを設定できます。
[アラートルール] タブで、アラートルールセットを選択し、[ステータス] をオンにしてアラートルールセットを有効にします。 [連絡先の変更] をクリックすると、アラートの送信先の連絡先グループを指定できます。
既定では、ACKは例外とメトリックに基づいてアラートを生成するために使用できるアラートルールテンプレートを提供します。
アラートルールは、いくつかのアラートルールセットに分類される。 アラートルールセットを有効にし、アラートルールセットを無効にし、アラートルールセットに複数のアラート連絡先グループを設定できます。
アラートルールセットには、複数のアラートルールが含まれています。 各アラートルールは、アラートアイテムに対応する。 YAMLファイルを作成して、クラスターに複数のアラートルールセットを設定できます。 YAMLファイルを変更してアラートルールを更新することもできます。
YAMLファイルを使用してアラートルールを設定する方法の詳細については、「手順2: CRDを使用してアラートルールを設定する」をご参照ください。 デフォルトのアラートルールテンプレートの詳細については、「デフォルトのアラートルールテンプレート」をご参照ください。
次の表に、[アラート] ページのタブを示します。
タブ
説明
アラート履歴
最大100の履歴アラートを表示できます。 アラートを選択し、[アラートルール] 列のリンクをクリックすると、モニタリングシステムのルールの詳細を表示できます。 [詳細] をクリックすると、アラートがトリガーされたリソースページに移動できます。 アラートは、例外または異常なメトリックによってトリガされ得る。
アラート連絡先
アラート連絡先を作成、編集、または削除できます。
リソース例外のアラートルールセットには、基本ノードリソースのアラートルールが含まれます。 アラート連絡先が基本クラスターリソースに関するアラートを受信する前に、CloudMonitorコンソールで連絡先の携帯電話番号とメールアドレスを確認する必要があります。 CloudMonitorコンソールでアラート送信先に関する情報を表示および更新できます。 検証の有効期限が切れている場合は、CloudMonitorコンソールで連絡先を削除し、ACKコンソールでアラート連絡先ページを更新します。
アラート連絡先グループ
アラート連絡先グループを作成、編集、または削除できます。 アラート連絡先グループが存在しない場合、ACKコンソールは、登録時に指定した情報に基づいて、デフォルトのアラート連絡先グループを自動的に作成します。
ACK専用クラスター
アラート管理を有効にし、ACK専用クラスターでデフォルトのアラートルールを使用する前に、クラスターのワーカーリソースアクセス管理 (RAM) ロールに必要な権限を付与する必要があります。
システムは、Simple Log Serviceのアラート機能に関連するリソースにアクセスする権限をACK管理クラスターに自動的に付与します。
1. ワーカーRAMロールに権限を付与する
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、[クラスター情報] をクリックします。
[クラスター情報] ページで、[クラスターリソース] セクションの [Worker RAMロール] の右側にあるロール名をコピーし、名前をクリックしてRAMコンソールのロールの詳細ページに移動します。 RAMコンソールでロールに権限を付与できます。
次のコードブロックに基づいてカスタムRAMポリシーを作成します。 詳細については、「JSONタブでカスタムポリシーを作成する」をご参照ください。
{ "Action": [ "log:*", "arms:*", "cms:*", "cs:UpdateContactGroup" ], "Resource": [ "*" ], "Effect": "Allow" }
[ロール] ページで、クラスターのワーカーRAMロールを見つけ、前述のカスタムポリシーをロールにアタッチします。 詳細については、「方法1: [ロール] ページの [権限の付与] をクリックしてRAMロールに権限を付与する」をご参照ください。
コンポーネントログを確認して、権限が付与されていることを確認します。
詳細ページの左側のナビゲーションウィンドウで、 .
セット名前空間kube-systemに移動し、[デプロイメント] リストでalicloud-monitor-controllerを見つけ、名前列を作成します。
をクリックし、ログタブをクリックし、認証が成功したことを示す情報がログに含まれているかどうかを確認します。
2. アラート管理を有効にし、デフォルトのアラートルールを設定します。
左側のナビゲーションウィンドウで、[操作] > [アラート] を選択します。
[アラート] ページで、次の操作を実行して、デフォルトのアラートルールを設定します。
[アラートルール] タブで、アラートルールセットを選択し、[ステータス] をオンにしてアラートルールセットを有効にします。 [連絡先の変更] をクリックすると、アラートの送信先の連絡先グループを指定できます。
既定では、ACKは例外とメトリックに基づいてアラートを生成するために使用できるアラートルールテンプレートを提供します。
アラートルールは、いくつかのアラートルールセットに分類される。 アラートルールセットを有効にし、アラートルールセットを無効にし、アラートルールセットに複数のアラート連絡先グループを設定できます。
アラートルールセットには、複数のアラートルールが含まれています。 各アラートルールは、アラートアイテムに対応する。 YAMLファイルを作成して、クラスターに複数のアラートルールセットを設定できます。 YAMLファイルを変更してアラートルールを更新することもできます。
YAMLファイルを使用してアラートルールを設定する方法の詳細については、「手順2: CRDを使用してアラートルールを設定する」をご参照ください。 デフォルトのアラートルールテンプレートの詳細については、「デフォルトのアラートルールテンプレート」をご参照ください。
次の表に、[アラート] ページのタブを示します。
タブ
説明
アラート履歴
最大100の履歴アラートを表示できます。 アラートを選択し、[アラートルール] 列のリンクをクリックすると、モニタリングシステムのルールの詳細を表示できます。 [詳細] をクリックすると、アラートがトリガーされたリソースページに移動できます。 アラートは、例外または異常なメトリックによってトリガされ得る。
アラート連絡先
アラート連絡先を作成、編集、または削除できます。
リソース例外のアラートルールセットには、基本ノードリソースのアラートルールが含まれます。 アラート連絡先が基本クラスターリソースに関するアラートを受信する前に、CloudMonitorコンソールで連絡先の携帯電話番号とメールアドレスを確認する必要があります。 CloudMonitorコンソールでアラート送信先に関する情報を表示および更新できます。 検証の有効期限が切れている場合は、CloudMonitorコンソールで連絡先を削除し、ACKコンソールでアラート連絡先ページを更新します。
アラート連絡先グループ
アラート連絡先グループを作成、編集、または削除できます。 アラート連絡先グループが存在しない場合、ACKコンソールは、登録時に指定した情報に基づいて、デフォルトのアラート連絡先グループを自動的に作成します。
手順2: CRDを使用したアラートルールの設定
アラート機能が有効になると、システムは自動的にkube-system名前空間にAckAlertRuleオブジェクトを作成します。 AckAlertRuleオブジェクトには、デフォルトのアラートルールテンプレートが含まれます。 AckAlertRuleオブジェクトを変更して、ビジネス要件に基づいてデフォルトのアラートルールを変更します。
デフォルトのアラートルールテンプレート
次の表に、デフォルトのアラートルールテンプレートのアラートルールを示します。
アラートルールの設定
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、 を選択します。
[アラートルール] タブの右上隅にある [アラートルールの設定] をクリックします。 アラートルールパネルで、[操作] 列の [YAML] をクリックして、AckAlertRuleオブジェクトの設定を表示します。
デフォルトのアラートルールテンプレートの前述の説明に基づいて、YAMLファイルを変更できます。
例:
apiVersion: alert.alibabacloud.com/v1beta1 kind: AckAlertRule metadata: name: default spec: groups: # The following code is a sample alert rule based on cluster events. - name: pod-exceptions # The name of the alert rule set. This parameter corresponds to the Group_Name field in the alert rule template. rules: - name: pod-oom # The name of the alert rule. type: event # The type of the alert rule, which corresponds to the Rule_Type parameter. Valid values: event and metric-cms. expression: sls.app.ack.pod.oom # The alert rule expression. If you set the rule type to event, the expression is set to the value of Rule_Expression_Id in the default alert rule template. enable: enable # The status of the alert rule. Valid values: enable and disable. - name: pod-failed type: event expression: sls.app.ack.pod.failed enable: enable # The following code is a sample alert rule for basic cluster resources. - name: res-exceptions # The name of the alert rule set. This parameter corresponds to the Group_Name field in the alert rule template. rules: - name: node_cpu_util_high # The name of the alert rule. type: metric-cms # The type of the alert rule, which corresponds to the Rule_Type parameter. Valid values: event and metric-cms. expression: cms.host.cpu.utilization # The alert rule expression. If you set the rule type to event, the expression is set to the value of Rule_Expression_Id in the default alert rule template. contactGroups: # The contact group that is associated with the alert rule. The contacts created by an Alibaba Cloud account are shared by all clusters within the account. enable: enable # The status of the alert rule. Valid values: enable and disable. thresholds: # The alert threshold. For more information, see the "Modify the alert threshold for basic cluster resources" section of this topic. - key: CMS_ESCALATIONS_CRITICAL_Threshold unit: percent value: '1'
例-CRDを使用した基本クラスターリソースのアラートしきい値の変更
リソース例外に設定されたアラートルールセットのルールタイプはmetric-cmsです。これは、ルールがCloudMonitorから同期されていることを示します。 次の例は、Node - CPU使用率ルールが属するアラートルールセット用に作成されたCRDにthreshold
パラメーターを追加する方法を示しています。 このパラメーターを使用して、アラートのしきい値、アラートがトリガーされる前にCPU使用率がしきい値を超えた回数、およびアラートがトリガーされた後の無音期間を設定できます。
apiVersion: alert.alibabacloud.com/v1beta1
kind: AckAlertRule
metadata:
name: default
spec:
groups:
# The following code is a sample alert rule for basic cluster resources.
- name: res-exceptions # The name of the alert rule set. This parameter corresponds to the Group_Name field in the alert rule template.
rules:
- name: node_cpu_util_high # The name of the alert rule.
type: metric-cms # The type of the alert rule. Valid values: event and metric-cms.
expression: cms.host.cpu.utilization # The alert rule expression. If you set the rule type to event, the expression is set to the value of Rule_Expression_Id in the default alert rule template.
contactGroups: # The contact group associated with the alert rule. You can add contact groups in the ACK console. The contacts created by an Alibaba Cloud account are shared by all clusters within the account.
enable: enable # The status of the alert rule. Valid values: enable and disable.
thresholds: # The alert threshold. For more information, see Configure alert rules by using CRDs.
- key: CMS_ESCALATIONS_CRITICAL_Threshold
unit: percent
value: '1'
- key: CMS_ESCALATIONS_CRITICAL_Times
value: '3'
- key: CMS_RULE_SILENCE_SEC
value: '900'
パラメーター | 説明 | デフォルト |
| アラートしきい値。
This parameter is required. このパラメーターを空のままにすると、変更は有効にならず、アラートルールは無効になります。 | デフォルト値は、デフォルトのアラートルールテンプレートで指定されたデフォルト値と同じです。 |
| アラートがトリガーされるまでにアラートのしきい値を超えた回数。 このパラメーターはオプションです。 このパラメーターを空のままにすると、デフォルト値が使用されます。 | 3 |
| アラートがトリガーされた後の無音期間。 このパラメーターは、頻繁なアラートを防ぐために使用します。 単位は秒です。 このパラメーターはオプションです。 このパラメーターを空のままにすると、デフォルト値が使用されます。 | 900 |
よくある質問
アラートルールの更新に失敗し、次のエラーメッセージが返された場合はどうすればよいですか: プロジェクトは存在しません: k8s-log-xxx?
問題:
システムがアラートルールを更新すると、次のエラーメッセージが返されます。プロジェクトは存在しません: k8s-log-xxx
。
原因:
クラスターのSimple Log Serviceにイベントセンターを作成していません。
解決策:
Simple Log Serviceコンソールに移動します。 プロジェクト数がクォータ制限に達しているかどうかを確認します。 クォータ制限に達した場合は、過剰なプロジェクトまたはを削除します。
チケットを起票し、クォータの増加を申請します。 Simple Log Serviceプロジェクトを削除する方法の詳細については、「プロジェクトの管理」をご参照ください。ack-node-problem-detectorを再インストールします。
ACKコンソールのクラスター詳細ページの左側のナビゲーションウィンドウで、 を選択します。
YAMLファイルを使用してack-node-problem-detectorを再インストールする場合は、次の手順を実行してack-node-problem-detectorのYAMLテンプレートのコピーを取得します。
Helmページで、ack-node-problem-detectorを見つけ、[操作] 列の [更新] をクリックします。 ack-node-problem-detectorが更新されたら、[操作] 列の [詳細の表示] をクリックします。 ack-node-problem-detectorの詳細ページで、リソースを選択し、[YAMLで表示] をクリックして、YAMLコンテンツをオンプレミスマシンにコピーします。 各リソースに対して同じ操作を実行して、YAMLテンプレートのコピーを取得します。
Helmページで、ack-node-problem-detectorを選択し、[操作] 列の [削除] をクリックします。
詳細ページの左側のナビゲーションウィンドウで、
を選択します。[ログとモニタリング] タブをクリックし、ack-node-problem-detectorを見つけて、[インストール] をクリックします。
[メモ] メッセージで、プラグインのバージョンを確認し、[OK] をクリックします。 ack-node-problem-detectorがインストールされた後、単語「installed」とバージョン情報がack-node-problem-detectorセクションに表示されます。
連絡先グループがアラートルールをサブスクライブしていないためにアラートルールの更新に失敗した場合はどうすればよいですか。
問題:
システムがアラートルールを更新すると、次のエラーメッセージが返されます。このルールにはxxx連絡先グループ参照がありません
。
原因:
アラートルールをサブスクライブする連絡先グループはありません。
解決策:
連絡先グループを作成し、連絡先を追加します。
アラートルールを見つけて、[連絡先の変更] をクリックします。 [連絡先の変更] パネルで、サブスクライバーとして作成した連絡先グループを追加します。