6.2.4.2. ユーザー定義プロジェクトのクロスプロジェクトアラートルールの作成


user-workload-monitoring-config config map でプロジェクトを設定することにより、元のプロジェクトにバインドされないアラートルールを作成できます。このプロジェクトで作成された PrometheusRule オブジェクトは、すべてのプロジェクトに適用できます。

そのため、各ユーザープロジェクトに個別の PrometheusRule オブジェクトを用意する代わりに、複数のユーザー定義プロジェクトに適用される汎用のアラートルールを設定できます。PrometheusRule オブジェクトで PromQL クエリーを使用すると、アラートルールに追加または除外するプロジェクトをフィルタリングできます。

前提条件

  • クラスター管理者の場合は、cluster-admin クラスターロールを持つユーザーとしてクラスターにアクセスできる。
  • 管理者以外のユーザーの場合は、次のユーザーロールを持つユーザーとしてクラスターにアクセスできる。

    • user-workload-monitoring-config config map を編集するための、openshift-user-workload-monitoring プロジェクトの user-workload-monitoring-config-edit ロール。
    • アラートルールを作成するプロジェクトの monitoring-rules-edit クラスターロール。
  • クラスター管理者は、ユーザー定義プロジェクトのモニタリングを有効にしている。
  • OpenShift CLI (oc) がインストールされている。

手順

  1. openshift-user-workload-monitoring プロジェクトで user-workload-monitoring-config config map を編集します。

    $ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
  2. 特定のプロジェクトにバインドされないアラートルールを作成するプロジェクトを設定します。

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: user-workload-monitoring-config
      namespace: openshift-user-workload-monitoring
    data:
      config.yaml: |
        namespacesWithoutLabelEnforcement: [ <namespace1>, <namespace2> ] 
    1
    
        # ...
    1
    クロスプロジェクトアラートルールを作成するプロジェクトを 1 つ以上指定します。ユーザー定義のモニタリング用の Prometheus および Thanos Ruler は、これらのプロジェクトで作成された PrometheusRule オブジェクトの namespace ラベルを適用しません。そのため、PrometheusRule オブジェクトはすべてのプロジェクトに適用できます。
  3. アラートルールの YAML ファイルを作成します。この例では、example-cross-project-alerting-rule.yaml という名前です。
  4. アラートルール設定を YAML ファイルに追加します。次の例では、example-security という名前の新しいクロスプロジェクトアラートルールを作成します。ユーザープロジェクトが制限付き Pod セキュリティーポリシーを適用しない場合、このアラートルールが起動します。

    クロスプロジェクトアラートルールの例

    apiVersion: monitoring.coreos.com/v1
    kind: PrometheusRule
    metadata:
      name: example-security
      namespace: ns1 
    1
    
    spec:
      groups:
        - name: pod-security-policy
          rules:
            - alert: "ProjectNotEnforcingRestrictedPolicy" 
    2
    
              for: 5m 
    3
    
              expr: kube_namespace_labels{namespace!~"(openshift|kube).*|default",label_pod_security_kubernetes_io_enforce!="restricted"} 
    4
    
              annotations:
                message: "Restricted policy not enforced. Project {{ $labels.namespace }} does not enforce the restricted pod security policy." 
    5
    
              labels:
                severity: warning 
    6

    1
    必ず namespacesWithoutLabelEnforcement フィールドで定義したプロジェクトを指定します。
    2
    作成する必要のあるアラートルールの名前。
    3
    アラートが発せられる前に条件が真である必要がある期間。
    4
    新規ルールを定義する PromQL クエリー式。namespace ラベルにラベルマッチャーを使用すると、アラートルールに追加および除外するプロジェクトをフィルタリングできます。
    5
    アラートに関連付けられたメッセージ。
    6
    アラートルールがアラートに割り当てる重大度。
    重要

    namespacesWithoutLabelEnforcement フィールドで指定したプロジェクトのうちの 1 つにだけ、特定のクロスプロジェクトアラートルールを作成してください。複数のプロジェクトで同じクロスプロジェクトアラートルールを作成すると、アラートが繰り返し発生します。

  5. 設定ファイルをクラスターに適用します。

    $ oc apply -f example-cross-project-alerting-rule.yaml
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

Red Hat ドキュメントについて

Legal Notice

Theme

© 2026 Red Hat
トップに戻る