4.5. ユーザーワークロードモニタリングのアラートと通知の設定
ローカルまたは外部の Alertmanager インスタンスを設定して、Prometheus からエンドポイントレシーバーにアラートをルーティングできます。すべての時系列とアラートにカスタムラベルを割り当てて、便利なメタデータ情報を追加することもできます。
4.5.1. 外部 Alertmanager インスタンスの設定 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform モニタリングスタックには、Prometheus からのアラートのルートなど、ローカルの Alertmanager インスタンスが含まれます。
外部 Alertmanager インスタンスを追加して、ユーザー定義プロジェクトのアラートをルーティングできます。
複数のクラスターに同じ外部 Alertmanager 設定を追加し、クラスターごとにローカルインスタンスを無効にする場合には、単一の外部 Alertmanager インスタンスを使用して複数のクラスターのアラートルーティングを管理できます。
前提条件
-
cluster-adminクラスターロールを持つユーザーとして、またはopenshift-user-workload-monitoringプロジェクトのuser-workload-monitoring-config-editロールを持つユーザーとして、クラスターにアクセスできる。 - クラスター管理者は、ユーザー定義プロジェクトのモニタリングを有効にしている。
-
OpenShift CLI (
oc) がインストールされている。
手順
openshift-user-workload-monitoringプロジェクトでuser-workload-monitoring-configconfig map を編集します。oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
$ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-configCopy to Clipboard Copied! Toggle word wrap Toggle overflow data/config.yaml/<component>下に、設定の詳細を含むadditionalAlertmanagerConfigsセクションを追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のサンプル config map は、クライアント TLS 認証でベアラートークンを使用して、Thanos Ruler 用の追加の Alertmanager を設定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を適用するためにファイルを保存します。新しい設定の影響を受ける Pod は自動的に再デプロイされます。
4.5.2. Alertmanager のシークレットの設定 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform モニタリングスタックには、アラートを Prometheus からエンドポイントレシーバーにルーティングする Alertmanager が含まれています。Alertmanager がアラートを送信できるようにレシーバーで認証する必要がある場合は、レシーバーの認証認証情報を含むシークレットを使用するように Alertmanager を設定できます。
たとえば、シークレットを使用して、プライベート認証局 (CA) によって発行された証明書を必要とするエンドポイント受信者を認証するように Alertmanager を設定できます。また、基本 HTTP 認証用のパスワードファイルを必要とする受信者で認証するためにシークレットを使用するように Alertmanager を設定することもできます。いずれの場合も、認証の詳細は、ConfigMap オブジェクトではなく Secret オブジェクトに含まれています。
4.5.2.1. Alertmanager 設定へのシークレットの追加 リンクのコピーリンクがクリップボードにコピーされました!
openshift-user-workload-monitoring プロジェクトの user-workload-monitoring-config config map を編集することで、Alertmanager 設定にシークレットを追加できます。
config map にシークレットを追加すると、シークレットは、Alertmanager Pod の alertmanager コンテナー内の /etc/alertmanager/secrets/<secret_name> にボリュームとしてマウントされます。
前提条件
-
cluster-adminクラスターロールを持つユーザーとして、またはopenshift-user-workload-monitoringプロジェクトのuser-workload-monitoring-config-editロールを持つユーザーとして、クラスターにアクセスできる。 - クラスター管理者は、ユーザー定義プロジェクトのモニタリングを有効にしている。
-
openshift-user-workload-monitoringプロジェクトの Alertmanager で設定するシークレットを作成しました。 -
OpenShift CLI (
oc) がインストールされている。
手順
openshift-user-workload-monitoringプロジェクトでuser-workload-monitoring-configconfig map を編集します。oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
$ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-configCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次の設定で、
data/config.yaml/alertmanagerの下にsecrets:セクションを追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次の config map 設定の例では、
test-secret-basic-authおよびtest-secret-api-tokenという名前の 2 つのSecretオブジェクトを使用するように Alertmanager を設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を適用するためにファイルを保存します。新しい設定は自動的に適用されます。
4.5.3. 追加ラベルの時系列 (time series) およびアラートへの割り当て リンクのコピーリンクがクリップボードにコピーされました!
Prometheus の外部ラベル機能を使用して、Prometheus から送信されるすべての時系列とアラートにカスタムラベルを付けることができます。
前提条件
-
cluster-adminクラスターロールを持つユーザーとして、またはopenshift-user-workload-monitoringプロジェクトのuser-workload-monitoring-config-editロールを持つユーザーとして、クラスターにアクセスできる。 - クラスター管理者は、ユーザー定義プロジェクトのモニタリングを有効にしている。
-
OpenShift CLI (
oc) がインストールされている。
手順
openshift-user-workload-monitoringプロジェクトでuser-workload-monitoring-configconfig map を編集します。oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
$ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-configCopy to Clipboard Copied! Toggle word wrap Toggle overflow data/config.yamlの下の各メトリクスに追加するラベルを定義します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<key>: <value>をキーと値のペアに置き換えます。<key>は新しいラベルの一意の名前、<value>はその値です。
警告-
prometheusまたはprometheus_replicaは予約され、上書きされるため、これらをキー名として使用しないでください。 -
キー名として
クラスターを使用しないでください。これを使用すると、開発者ダッシュボードでデータが表示されないという問題が発生する可能性があります。
注記openshift-user-workload-monitoringプロジェクトでは、Prometheus はメトリクスを処理し、Thanos Ruler はアラートおよび記録ルールを処理します。user-workload-monitoring-configConfigMapオブジェクトでprometheusのexternalLabelsを設定すると、すべてのルールではなく、メトリクスの外部ラベルのみが設定されます。たとえば、リージョンと環境に関するメタデータをすべての時系列とアラートに追加するには、次の例を使用します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を適用するためにファイルを保存します。新しい設定の影響を受ける Pod は自動的に再デプロイされます。
4.5.4. アラート通知の設定 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform では、管理者は次のいずれかの方法でユーザー定義プロジェクトのアラートルーティングを有効にできます。
- デフォルトのプラットフォーム Alertmanager インスタンスを使用します。
- ユーザー定義プロジェクトにのみ、別の Alertmanager インスタンスを使用します。
alert-routing-edit クラスターロールを持つ開発者およびその他のユーザーは、アラートレシーバーを設定することによって、ユーザー定義プロジェクトのカスタムアラート通知を設定できます。
ユーザー定義プロジェクトのアラートルーティングに関する次の制限事項を確認してください。
-
ユーザー定義のアラートルーティングのスコープは、リソースが定義されている namespace に指定されます。たとえば、namespace
ns1のルーティング設定は、同じ namespace のPrometheusRulesリソースにのみ適用されます。 -
namespace がユーザー定義のモニタリングから除外される場合、namespace の
AlertmanagerConfigリソースは、Alertmanager 設定の一部ではなくなります。
4.5.4.1. ユーザー定義プロジェクトのアラートルーティングの設定 リンクのコピーリンクがクリップボードにコピーされました!
alert-routing-edit クラスターロールが付与されている管理者以外のユーザーの場合は、ユーザー定義プロジェクトのアラートルーティングを作成または編集できます。
前提条件
- クラスター管理者は、ユーザー定義プロジェクトのモニタリングを有効にしている。
- クラスター管理者が、ユーザー定義プロジェクトのアラートルーティングを有効にしている。
-
アラートルーティングを作成する必要のあるプロジェクトの
alert-routing-editクラスターロールを持つユーザーとしてログインしている。 -
OpenShift CLI (
oc) がインストールされている。
手順
-
アラートルーティングの YAML ファイルを作成します。この手順の例では、
example-app-alert-routing.yamlという名前のファイルを使用します。 AlertmanagerConfigYAML 定義をファイルに追加します。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - ファイルを保存します。
リソースをクラスターに適用します。
oc apply -f example-app-alert-routing.yaml
$ oc apply -f example-app-alert-routing.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow この設定は Alertmanager Pod に自動的に適用されます。
4.5.4.2. Alertmanager シークレットを使用したユーザー定義プロジェクトのアラートルーティングの設定 リンクのコピーリンクがクリップボードにコピーされました!
ユーザー定義のアラートルーティング専用の Alertmanager の別のインスタンスを有効にしている場合は、openshift-user-workload-monitoring namespace の alertmanager-user-workload シークレットを編集して、インスタンスが通知を送信する場所と方法をカスタマイズできます。
サポート対象のアップストリームバージョンの Alertmanager 機能はすべて、OpenShift Container Platform の Alertmanager 設定でもサポートされます。サポート対象のアップストリーム Alertmanager バージョンのあらゆる設定オプションを確認するには、Alertmanager configuration (Prometheus ドキュメント) を参照してください。
前提条件
-
cluster-adminクラスターロールを持つユーザーとしてクラスターにアクセスできる。 - ユーザー定義のアラートルーティング用に、Alertmanager の別のインスタンスを有効にした。
-
OpenShift CLI (
oc) がインストールされている。
手順
現在アクティブな Alertmanager 設定をファイル
alertmanager.yamlに出力します。oc -n openshift-user-workload-monitoring get secret alertmanager-user-workload --template='{{ index .data "alertmanager.yaml" }}' | base64 --decode > alertmanager.yaml$ oc -n openshift-user-workload-monitoring get secret alertmanager-user-workload --template='{{ index .data "alertmanager.yaml" }}' | base64 --decode > alertmanager.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow alertmanager.yamlで設定を編集します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 新規設定をファイルで適用します。
oc -n openshift-user-workload-monitoring create secret generic alertmanager-user-workload --from-file=alertmanager.yaml --dry-run=client -o=yaml | oc -n openshift-user-workload-monitoring replace secret --filename=-
$ oc -n openshift-user-workload-monitoring create secret generic alertmanager-user-workload --from-file=alertmanager.yaml --dry-run=client -o=yaml | oc -n openshift-user-workload-monitoring replace secret --filename=-Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.5.4.3. デフォルトのプラットフォームアラートとユーザー定義アラートに異なるアラートレシーバーを設定する リンクのコピーリンクがクリップボードにコピーされました!
デフォルトのプラットフォームアラートとユーザー定義アラートに異なるアラートレシーバーを設定して、次の結果を確実に得ることができます。
- すべてのデフォルトのプラットフォームアラートは、これらのアラートを担当するチームが所有する受信機に送信されます。
- すべてのユーザー定義アラートは別の受信者に送信されるため、チームはプラットフォームアラートにのみ集中できます。
これを実現するには、Cluster Monitoring Operator によってすべてのプラットフォームアラートに追加される openshift_io_alert_source="platform" ラベルを使用します。
-
デフォルトのプラットフォームアラートを一致させるには、
openshift_io_alert_source="platform"マッチャーを使用します。 -
ユーザー定義のアラートを一致させるには、
openshift_io_alert_source!="platform"または'openshift_io_alert_source=""'マッチャーを使用します。
ユーザー定義アラート専用の Alertmanager の別のインスタンスを有効にしている場合、この設定は適用されません。