Prometheus アラートルールを作成すると、特定のメトリクスを監視し、指定された条件が満たされたときにアラートイベントをトリガーできます。通知ポリシーを設定すると、SMS、E メール、電話、DingTalk、WeCom、または Webhook を介してアラートを受信できます。
前提条件
統合された Prometheus インスタンスが必要です。詳細については、次のトピックをご参照ください。
手順
にログインします。 ARMSコンソールを使用します。
-
左側のナビゲーションペインで、を選択します。
-
Prometheus アラートルール ページで、Prometheus アラートルールの作成 をクリックします。
静的しきい値に基づくPrometheus アラートルールの作成
静的しきい値チェックタイプでは、事前定義されたアラートメトリクスが用意されています。メトリクスを選択すると、アラートルールを迅速に作成できます。
-
Prometheus アラートルールの作成 ページで、以下のパラメーターを設定します。
パラメーター
説明
例
アラート名
アラートルールの名前。
本番クラスター - コンテナ CPU 使用率アラート
チェックタイプ
静的しきい値 を選択します。
静的しきい値
Prometheus インスタンス
アラートルールを作成する Prometheus インスタンスを選択します。
本番クラスター
アラートグループ
アラートグループを選択します。
Prometheus のタイプによって、サポートされるアラートグループは異なります。利用可能なアラートグループのオプションは、選択した Prometheus インスタンスのタイプによって異なります。
Kubernetes ワークロード
アラートメトリクス
アラートを設定するメトリクスを選択します。利用可能なメトリクスは、選択したアラートグループによって異なります。
コンテナ CPU 使用率
アラート条件
アラートイベントをトリガーする条件を設定します。
コンテナの CPU 使用率が 80%
より大きい場合、アラート条件が満たされます。フィルター条件
アラートルールのスコープを定義します。リソースがフィルター条件とアラート条件の両方を満たす場合にのみ、アラートイベントが生成されます。
以下のフィルター条件が利用できます:
-
[トラバーサル]:現在の Prometheus インスタンス内のすべてのリソースにアラートルールを適用します。これはデフォルトの条件です。
-
[等しい]:指定された単一のリソースにアラートルールを適用します。複数のリソースを指定することはできません。
-
[次の値に等しくない:]:指定された単一のリソースを除くすべてのリソースにアラートルールを適用します。複数のリソースを指定することはできません。
-
[正規表現に一致]:名前が指定された正規表現に一致するすべてのリソースにアラートルールを適用します。
-
[正規表現と一致しない]:指定された正規表現に一致するものを除くすべてのリソースにアラートルールを適用します。
説明-
フィルター条件を設定すると、データプレビュー セクションが表示されます。
-
フィルター条件は 300 文字を超えることはできません。
走査
データプレビュー
データプレビュー セクションには、対応する PromQL クエリとメトリックの時系列グラフが表示されます。
デフォルトでは、単一リソースのリアルタイム値が表示されます。フィルターを使用して、異なるリソースや時間範囲を表示します。
説明-
アラートしきい値は、チャート内で赤色の水平線で表されます。しきい値を満たす時系列データは濃い赤色で表示され、しきい値を満たさないデータは青色で表示されます。
-
時系列曲線にカーソルを合わせると、特定の時点でのリソースの詳細が表示されます。
-
チャート上で時間範囲を選択すると、ズームインして対応する時系列曲線を表示できます。
--
継続期間
-
単一のデータポイントがしきい値を満たした場合にアラートをトリガーします。
-
条件が指定された期間 (N 分) 持続した場合にのみアラートをトリガーします。
継続期間パラメーターは、分未満 (秒レベル) の設定をサポートしていません。これは製品仕様上の制限であり、異常な動作ではありません。
1
アラートレベル
カスタムアラートレベルを定義します。デフォルトレベルは Default です。重大度は、デフォルト、 P4、 P3、 P2、 P1 の順に高くなります。
Default
アラートメッセージ
通知の内容。Go テンプレート変数を使用して、アラートメッセージをカスタマイズできます。
Namespace: {{$labels.namespace}} / Pod: {{$labels.pod_name}} / Container: {{$labels.container}} CPU usage {{$labels.metrics_params_opt_label_value}} {{$labels.metrics_params_value}}%, Current value: {{ printf "%.2f" $value }}%
アラート通知
-
[シンプルモード]: Notification Receiver、[通知期間]、および繰り返しポリシー を設定できます。
-
[通常モード]:
-
通知ポリシーを指定しない: このアラートを後で通知ポリシーにリンクする場合に選択します。 アラートルールを作成した後、通知ポリシー ページに移動し、名前または他の条件でこのルールに一致するポリシーを作成します。 詳細については、「通知ポリシー」をご参照ください。
-
ドロップダウンリストからポリシーを選択:ARMS は、選択された通知ポリシーに一致するルールを自動的に追加します。一致ルールは、アラートルール ID (アラートルール名として表示) を使用して、このルールからのアラートイベントが選択されたポリシーによって確実に照合されるようにします。
重要ここで通知ポリシーを指定しても、現在のルールからのアラートイベントが選択されたポリシーによって照合されることが保証されるだけです。このルールからのイベントは、あいまい一致を使用する他のポリシーによっても照合される場合があります。アラートルールと通知ポリシーの関係は多対多です。
-
通知ポリシーを指定しない
[詳細設定]
アラートチェック間隔
チェック間隔 (分)。最小値とデフォルト値は 1 分です。インターフェイスで 1 分未満の値 (たとえば 15 秒) を入力した場合でも、システムは 1 分間隔でチェックを実行します。これは製品仕様上の制限であり、異常な動作ではありません。
1
データ補完チェック
-
はい
-
いいえ
はい
タグ
アラートルールのタグ。タグは、通知ポリシーの一致条件として使用できます。
--
アノテーション
アラートルールのアノテーション。
--
-
-
設定が完了したら、保存をクリックします。Prometheus アラートルールページに、現在のアラートルールのステータスが表示されます。
アラートルールのStatus が 自動的に中断する の場合、提供された中断理由に基づいてアラートルールを編集し、起動 をクリックします。 次に、表示されるダイアログボックスで Confirm をクリックします。 解決できないルールの中断に関する問題が発生した場合は、DingTalk (ID: d9j_rg9e4062f) 上の ARMS アラートサービスにお問い合わせください。
アラートルールは、次の理由で自動的に中断されることがあります:
-
クエリ結果の数が 1,500 を超えています。
-
アラート管理で通知先が設定されていません。
-
Prometheus インスタンスがアンインストールされたか、利用できません。
-
カスタム PromQL アラートルールの作成
静的しきい値オプションで対応していないメトリクスを監視するには、カスタム PromQL チェックタイプを使用します。
-
[Prometheus アラートルールの作成]ページで、次のパラメーターを設定します。
パラメーター
説明
例
アラート名
アラートルールの名前。
Pod の CPU 使用率が 8% を超える
チェックタイプ
[Custom PromQL] に設定します。
[Custom PromQL]
Prometheus インスタンス
アラートルールを作成する Prometheus インスタンスを選択します。
--
参照アラートグループ
アラートグループを選択します。
Prometheus のタイプによって、サポートされるアラートグループは異なります。利用可能なアラートグループのオプションは、選択した Prometheus インスタンスのタイプによって異なります。
[Kubernetes workload]
参照メトリクス
オプションです。参照メトリクスには、一般的なメトリクス用のカスタム PromQL 設定が用意されています。類似のメトリクスを選択してクエリを自動入力し、必要に応じて変更できます。
[Reference Metrics] パラメーターは、選択した Prometheus インスタンスのタイプに基づいて、サポートされているアラートメトリクスを自動的にフィルタリングします。
[Pod disk usage alert]
カスタム PromQL
アラートルールの PromQL 式。
max(container_fs_usage_bytes{pod!="", namespace!="arms-prom",namespace!="monitoring"}) by (pod_name, namespace, device)/max(container_fs_limit_bytes{pod!=""}) by (pod_name,namespace, device) * 100 > 90
データプレビュー
データプレビュー セクションには、対応する PromQL クエリとメトリックの時系列グラフが表示されます。
デフォルトでは、単一リソースのリアルタイム値が表示されます。フィルターを使用して、異なるリソースや時間範囲を表示します。
説明-
時系列曲線にカーソルを合わせると、特定の時点でのリソースの詳細が表示されます。
-
チャート上で時間範囲を選択すると、ズームインして対応する時系列曲線を表示できます。
--
継続時間
-
単一のデータポイントがしきい値を満たした場合にアラートをトリガーします。
-
条件が指定された期間 (N 分) 持続した場合にのみアラートをトリガーします。
継続期間パラメーターは、分未満 (秒レベル) の設定をサポートしていません。これは製品仕様上の制限であり、異常な動作ではありません。
1
アラートレベル
カスタムアラートレベルを定義します。デフォルトレベルは Default です。重大度は、デフォルト、 P4、 P3、 P2、 P1 の順に高くなります。
[Default]
アラートメッセージ
通知の内容。Go テンプレート構文とパラメーター変数を使用して、アラートメッセージをカスタマイズできます。
例 (ディスク使用量アラート) :Namespace: {{$labels.namespace}}/Pod: {{$labels.pod_name}}/Disk device: {{$labels.device}} usage exceeds 90%, current value: {{ printf "%.2f" $value }}%
例 (Pod 再起動アラート) :Namespace: {{$labels.namespace}}/Pod: {{$labels.pod_name}} restarted more than {{ $labels.metrics_params_value}} times in {{$labels.metrics_params_time}} minutes, current restarts: {{ $value }}
Pod 再起動アラートテンプレートを使用すると、Pod が再起動した場合に分かりやすい通知内容を生成できます。
Namespace: {{$labels.namespace}}/Pod: {{$labels.pod_name}}/Disk device: {{$labels.device}} usage exceeds 90%, current value: {{ printf "%.2f" $value }}%
アラート通知
-
[シンプルモード]: Notification Receiver、[通知期間]、および繰り返しポリシー を設定できます。
-
[通常モード]:
-
通知ポリシーを指定しない: このアラートを後で通知ポリシーにリンクする場合に選択します。 アラートルールを作成した後、通知ポリシー ページに移動し、名前または他の条件でこのルールに一致するポリシーを作成します。 詳細については、「通知ポリシー」をご参照ください。
-
ドロップダウンリストからポリシーを選択:ARMS は、選択された通知ポリシーに一致するルールを自動的に追加します。一致ルールは、アラートルール ID (アラートルール名として表示) を使用して、このルールからのアラートイベントが選択されたポリシーによって確実に照合されるようにします。
重要ここで通知ポリシーを指定しても、現在のルールからのアラートイベントが選択されたポリシーによって照合されることが保証されるだけです。このルールからのイベントは、あいまい一致を使用する他のポリシーによっても照合される場合があります。アラートルールと通知ポリシーの関係は多対多です。
-
[Do Not Specify Notification Policy]
詳細設定
アラートチェック周期
チェック間隔 (分)。最小値とデフォルト値は 1 分です。インターフェイスで 1 分未満の値 (たとえば 15 秒) を入力した場合でも、システムは 1 分間隔でチェックを実行します。これは製品仕様上の制限であり、異常な動作ではありません。
1
[Data Completion Check]
-
はい
-
いいえ
[Yes]
タグ
アラートルールのタグ。タグは、通知ポリシーの一致条件として使用できます。
--
アノテーション
アラートルールのアノテーション。
--
-
-
保存 をクリックします。Prometheus アラートルール」ページに、現在のアラートルールのステータスが表示されます。
アラートルールの Status が 自動的に中断する の場合は、表示された理由に基づいてルールを編集し、起動 をクリックしてから、ダイアログボックスで OK をクリックします。解決できない問題が発生した場合は、DingTalk (ID:d9j_rg9e4062f) で Application Real-Time Monitoring Service (ARMS) アラートサービスにお問い合わせください。
アラートルールは、次の理由で自動的に中断されることがあります:
-
クエリ結果の数が 1,500 を超えています。
-
アラート管理で通知対象が設定されていません。
-
Prometheus インスタンスがアンインストールされたか、利用できません。
-
アラートルールの管理
-
Managed Service for Prometheus コンソールで作成された静的しきい値およびカスタム PromQL ルールは、編集、開始、停止、削除、コピー、履歴アラートイベントの表示が可能です。
-
他の Alibaba Cloud サービスに由来するルールは、履歴アラートイベントの表示と、ソースサービスのアラート一覧への移動が可能です。
よくある質問
Q1: アラート回復通知に遅延が発生するのはなぜですか?
アラート回復通知が遅延する理由は次のとおりです。
-
根本原因:システムには最大許容遅延メカニズムがあります。エージェントのレポート遅延によるトリガー漏れを防ぐため、アラートエンジンは各チェック時に過去 10 分間のデータをルックバックウィンドウで確認します。メトリクスがアラート条件を満たさなくなった場合でも、システムはルックバックウィンドウが終了するまで待機してから回復を確認します。
-
タイミング:回復通知は通常、データがアラートをトリガーしなくなってから約 10 分後に送信されます。
-
メカニズムに関する注記:Prometheus 自体には自動回復ロジックが組み込まれていません。ARMS は独自の検出メカニズムを使用して、アラートが回復したタイミングを判断します。
Q2: アラートルールテンプレートを適用した後、通知ポリシーが失われた場合はどうすればよいですか?
-
根本原因:アラートルールテンプレートには通知ポリシー設定が含まれていません。テンプレートを再適用すると、ルール ID が変更される可能性があり、
_aliyun_arms_alert_rule_idに基づく元の通知ポリシーのマッチングが無効になります。 -
解決策: に移動し、対応するポリシーを見つけ、照合にルール ID を使用する代わりに
alertnameやクラスター名clusterなどのより安定したラベルを使用するように [ディスパッチ条件] を更新します。
Q3: アラート式を increase に変更した後も重複アラートを受信する場合はどうすればよいですか?
-
根本原因:通知ポリシーが「N 分ごとに繰り返し通知」と「手動回復」を組み合わせて設定されている場合、メトリクスが新しい式の条件を満たし続ける限り、システムは新しいアラートイベントを継続的に生成します。
-
解決策:通知ポリシーを変更して、繰り返し通知設定を「最初の通知のみ」に変更するか、「自動回復」モードに切り替えてください。また、新しい式が正しく保存され、有効になっていることを確認してください。
Q4: Prometheus アラートルールにデータが表示されない、またはトリガーされない場合のトラブルシューティング方法は?
次の手順に従ってください。
-
コンポーネントの確認:ACK クラスターに kube-state-metrics コンポーネントがインストールされているかどうかを確認してください。インストールされていない場合はインストールしてください。Prometheus コンポーネントのステータスを確認し、必要に応じて ack-arms-prometheus コンポーネントを再インストールしてください。
-
トリガーレコードの確認: レコードを確認するには、ルールの横にある[アラート履歴]をクリックします。
-
記録なし:ルール条件が一度も満たされませんでした。一般的な原因には、メトリクス名の誤り、データが空、またはクエリ時間範囲の誤りなどがあります。
-
記録は存在するが通知が送信されない:通知ポリシーのディスパッチルール (ラベル、クラスター名など) がアラートルールと一致しているかどうかを確認してください。
-
-
推奨事項:古いテンプレートによる誤検知やトリガー漏れを避けるため、Alibaba Cloud で検証された最新のアラートテンプレートを使用してください。
-
構文チェック:ページにエラーが表示される場合は、PromQL の正規表現構文が有効であることを確認してください。たとえば、
{pvc=~}(空の正規表現) はエラーを引き起こします。{pvc=~".*"}に変更するか、具体的な値を指定してください。
Q5: ACS クラスターの Prometheus モニタリング Pod メモリアラート機能は無料ですか?
ACS クラスターは Pod メモリメトリクスのモニタリングとアラート機能をサポートしています。SMS および音声通話アラートには追加料金が発生しますが、DingTalk ボットおよび Webhook アラートは無料です。