PrometheusRule を使用して Managed Service for Prometheus でアラートルールを作成する方法について説明します。
背景情報
PrometheusRule は、Prometheus Operator のカスタムリソース定義 (CRD) で、アラートの管理に使用されます。PrometheusRule は、Prometheus のアラートルールまたはレコーディングルールのグループを定義します。Prometheus Operator がインストールされた Kubernetes クラスターでは、PrometheusRule を使用してアラートを作成できます。Monitoring as Code の実装として、PrometheusRule は GitOps ベースの開発と運用保守 (DevOps) システムの構築に最適です。
また、PrometheusRule を使用して Managed Service for Prometheus でアラートルールを作成することもできます。Managed Service for Prometheus は、アラートを管理するためのユーザーフレンドリな UI を提供し、Prometheus Operator の PrometheusRule を使用したアラート作成とも互換性があります。
注意事項
Managed Service for Prometheus は、PrometheusRule を使用してアラートルールを作成および管理するための次の 2 つの方法をサポートしています。
-
方法 1:PrometheusRule をアラートルールテンプレートとしてインポートし、UI 上でアラートを一括で視覚的に作成および更新します。この方法は、Alibaba Cloud コンソールで UI を使用して多数のアラートルールを効率的に管理したいユーザーに適しています。詳細については、「方法 1:PrometheusRule をアラートルールテンプレートとしてインポート」をご参照ください。
-
方法 2:Managed Service for Prometheus のエージェントを有効にして、PrometheusRule を自動的に同期させます。これにより、既存のオープンソースのアラート設定を引き続き使用できます。この方法は、オープンソースのプラクティスに慣れており、Monitoring as Code ベースの運用システムを構築したいユーザーに適しています。詳細については、「方法 2:エージェントを有効にして PrometheusRule アラートルールを同期」をご参照ください。
デフォルトでは、Managed Service for Prometheus は Kubernetes で作成された PrometheusRule を読み取りません。そのため、ビジネス要件に応じて、いずれかの方法を使用して PrometheusRule によるアラートの作成と管理ができます。
方法 1:PrometheusRule をテンプレートとしてインポート
メリット
Managed Service for Prometheus は、アラートルールテンプレート機能を提供し、複数のリージョンやクラスターにまたがるアラート設定を簡素化します。アラートルールテンプレートを一度設定すれば、世界中のさまざまなクラスターに適用できるため、設定のワークロードが大幅に削減され、効率が向上します。
Managed Service for Prometheus では、PrometheusRule の設定をアラートルールテンプレートとして一括でインポートできるため、クラスターごとに個別の PrometheusRule を作成する必要がありません。
操作手順
-
Cloud Monitor コンソールにログインします。
-
左側のナビゲーションウィンドウで、[アラートルールテンプレート] をクリックします。
-
[Prometheus アラートルールテンプレート] ページで、左下隅にある [テンプレートのインポート] をクリックします。
-
[インポート] ダイアログボックスで、ご利用の PrometheusRule の `spec` フィールドの内容をテキストボックスに貼り付け、[アラートルールテンプレートのインポート] をクリックします。
例:次の例は、サンプル PrometheusRule の `spec` フィールドの内容を示しています。
apiVersion: monitoring.coreos.com/v1 kind: PrometheusRule metadata: creationTimestamp: null labels: prometheus: example role: alert-rules name: prometheus-example-rules spec: groups: - name: ./example.rules rules: - alert: ExampleAlert expr: vector(1) for: 1m labels: severity: critical annotations: message: testalert`spec` の内容を [インポート] ダイアログボックスに貼り付け、[アラートルールテンプレートのインポート] をクリックする必要があります。
インポートが成功したら、新しいテンプレートを選択し、[Prometheus アラートルールテンプレート] ページの左下隅にある [テンプレートの適用] をクリックして一括で適用します。
方法 2:Managed Service for Prometheus エージェントを有効にして PrometheusRule を同期
利用シーン
-
GitOps などのシステムを使用しており、Monitoring as Code のアプローチでアラートルールの設定を継続したい場合。
-
Managed Service for Prometheus に接続されている ACK クラスターに対して、PrometheusRule を使用してアラートを作成したい場合。この方法は ACS クラスターには適用されません。
操作手順
-
ACK コンソールにログインします。左側のナビゲーションウィンドウで、クラスターリスト をクリックします。
-
[クラスター] ページで、ご利用のクラスターを見つけ、[操作] 列の [アプリケーション] をクリックします。
-
[デプロイメント] ページで、Namespace ドロップダウンリストから [arms-prom] を選択します。[名前] 列で、名前が `arms-prometheus` で始まる Deployment (例:`arms-prometheus-ack-arms-prometheus`) を見つけます。次に、[操作] 列の [編集] をクリックします。
-
[編集] ページの [ライフサイクル] セクションで、[開始] の [パラメーター] を設定します。[パラメーター] フィールドに
--alert=true引数を追加します。次に、[編集] ページの右上隅で [更新] をクリックします。
Managed Service for Prometheus エージェントが更新された後、3 分から 5 分待ちます。その後、Managed Service for Prometheus コンソールの [アラートルールリスト] ページで、すべてのアラートのステータスが [実行中] と表示されていることを確認できます。
クラスターの PrometheusRule の自動同期を有効にした後は、Managed Service for Prometheus コンソールで同期されたアラートルールを変更しないでください。予期しない動作を引き起こす可能性があります。例えば、コンソールでアラートルールの名前変更や削除ができなくなります。さらに、Managed Service for Prometheus コンソールでこれらのルールを変更すると、Monitoring as Code のメカニズムが崩れます。これは、変更されたルールが GitOps などの外部システムに同期できなくなることを意味します。
次のステップ
Managed Service for Prometheus エージェントのアラート同期を有効にすると、Managed Service for Prometheus エージェントは `arms-prom` Namespace に一連の組み込みのアラートルールを作成します。以下の出力例をご参照ください。これらの自動作成される組み込みのアラートルールの詳細については、「Prometheus アラートルールの作成」をご参照ください。
$kubectl get prometheusrule -n arms-prom
NAME AGE
prometheus-arms-rules 439d
prometheus-event-rules 439d
prometheus-k8s-rules 439d
これらの組み込みのアラートルールが不要な場合は、Managed Service for Prometheus エージェントの defaultAlert パラメーターを変更することで、自動作成を無効にできます。
defaultAlert パラメーターは、デフォルトアラートの自動作成を制御します。デフォルトでは、このパラメーターは true に設定されています。デフォルトアラートの作成を防ぐには、このパラメーターを false に設定します。
-
Managed Service for Prometheus エージェントの
defaultAlertパラメーターをfalseに設定します。-
ACK コンソールにログインします。左側のナビゲーションウィンドウで、クラスターリスト をクリックします。
-
[クラスター] ページで、対象のクラスターを見つけ、[操作] 列の [アプリケーション] をクリックします。
-
[デプロイメント] ページで、Namespace ドロップダウンリストから [arms-prom] を選択します。[名前] 列で、名前が `arms-prometheus` で始まる Deployment を見つけます。次に、[操作] 列の [編集] をクリックします。
-
[編集] ページの [ライフサイクル] セクションで、[開始] のパラメーターを設定します。[パラメーター] テキストボックスに
--defaultAlert=falseを追加します。次に、[編集] ページの右上隅にある [更新] をクリックします。
説明Managed Service for Prometheus エージェントが更新された後、3 分から 5 分待ちます。Managed Service for Prometheus は、クラスターのデフォルトアラートを作成しなくなります。
-
-
(任意) デフォルトのアラートルールを削除します。
-
Managed Service for Prometheus コンソールにログインします。
-
左側のナビゲーションウィンドウで、[インスタンス] をクリックします。
-
対象の Kubernetes クラスターの Prometheus インスタンスの名前をクリックします。
-
左側のナビゲーションウィンドウで、[アラートルール] をクリックします。[Prometheus アラートルール] ページで、削除したいアラートルールを見つけ、[操作] 列の [削除] をクリックし、表示されるダイアログボックスで [OK] をクリックします。
-