第4章 ユーザーワークロードモニタリングの設定


4.1. ユーザーワークロードモニタリングスタックの設定の準備

このセクションでは、どのユーザー定義のモニタリングコンポーネントを設定できるか、ユーザーワークロード監視を有効にする方法、およびユーザーワークロードモニタリングスタックの設定を準備する方法について説明します。

重要

4.1.1. 設定可能なモニタリングコンポーネント

以下の表は、設定可能なモニタリングコンポーネントと、user-workload-monitoring-config 設定マップでコンポーネントを指定するために使用されるキーを示しています。

表4.1 ユーザー定義プロジェクトの設定可能なモニタリングコンポーネント
コンポーネントuser-workload-monitoring-config config map キー

Prometheus Operator

prometheusOperator

Prometheus

prometheus

Alertmanager

Alertmanager

Thanos Ruler

thanosRuler

警告

ConfigMap オブジェクトの設定変更によって、結果も異なります。

  • Pod は再デプロイされません。したがって、サービスの停止はありません。
  • 変更された Pod が再デプロイされます。

    • 単一ノードクラスターの場合、一時的なサービスが停止します。
    • マルチノードクラスターの場合、高可用性であるため、影響を受ける Pod は徐々にロールアウトされ、モニタリングスタックは引き続き利用可能です。
    • 永続ボリュームの設定およびサイズ変更を行うと、高可用性であるかどうかに関係なく、常にサービスが停止します。

config map の変更を必要とする手順にはそれぞれ、想定される結果が含まれます。

4.1.2. ユーザー定義プロジェクトのモニタリングの有効化

OpenShift Container Platform では、デフォルトのプラットフォームのモニタリングに加えて、ユーザー定義プロジェクトのモニタリングを有効にできます。追加のモニタリングソリューションを必要とせずに、OpenShift Container Platform で独自のプロジェクトをモニタリングできます。この機能を使用することで、コアプラットフォームコンポーネントおよびユーザー定義プロジェクトのモニタリングが一元化されます。

注記

Operator Lifecycle Manager (OLM) を使用してインストールされた Prometheus Operator のバージョンは、ユーザー定義のモニタリングと互換性がありません。そのため、OLM Prometheus Operator によって管理される Prometheus カスタムリソース (CR) としてインストールされるカスタム Prometheus インスタンスは OpenShift Container Platform ではサポートされていません。

4.1.2.1. ユーザー定義プロジェクトのモニタリングの有効化

クラスター管理者は、クラスターモニタリング ConfigMap オブジェクトに enableUserWorkload: true フィールドを設定し、ユーザー定義プロジェクトのモニタリングを有効にできます。

重要

ユーザー定義プロジェクトのモニタリングを有効にする前に、カスタム Prometheus インスタンスを削除する必要があります。

注記

OpenShift Container Platform のユーザー定義プロジェクトのモニタリングを有効にするには、cluster-admin クラスターロールを持つユーザーとしてクラスターにアクセスできる必要があります。これにより、クラスター管理者は任意で、ユーザー定義のプロジェクトをモニターするコンポーネントを設定する権限をユーザーに付与できます。

前提条件

  • cluster-admin クラスターロールを持つユーザーとしてクラスターにアクセスできる。
  • OpenShift CLI (oc) がインストールされている。
  • cluster-monitoring-config ConfigMap オブジェクトを作成している。
  • オプションで user-workload-monitoring-config ConfigMapopenshift-user-workload-monitoring プロジェクトに作成している。ユーザー定義プロジェクトをモニターするコンポーネントの ConfigMap に設定オプションを追加できます。

    注記

    設定の変更を user-workload-monitoring-config ConfigMap に保存するたびに、openshift-user-workload-monitoring プロジェクトの Pod が再デプロイされます。これらのコンポーネントが再デプロイするまで時間がかかる場合があります。

手順

  1. cluster-monitoring-config ConfigMap オブジェクトを編集します。

    $ oc -n openshift-monitoring edit configmap cluster-monitoring-config
  2. enableUserWorkload: truedata/config.yaml の下に追加します。

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: cluster-monitoring-config
      namespace: openshift-monitoring
    data:
      config.yaml: |
        enableUserWorkload: true 1
    1
    true に設定すると、enableUserWorkload パラメーターはクラスター内のユーザー定義プロジェクトのモニタリングを有効にします。
  3. 変更を適用するためにファイルを保存します。ユーザー定義プロジェクトのモニタリングは自動的に有効になります。

    注記

    ユーザー定義プロジェクトの監視を有効にすると、デフォルトで user-workload-monitoring-config ConfigMap オブジェクトが作成されます。

  4. prometheus-operatorprometheus-user-workload および thanos-ruler-user-workload Pod が openshift-user-workload-monitoring プロジェクトで実行中であることを確認します。Pod が起動するまでに少し時間がかかる場合があります。

    $ oc -n openshift-user-workload-monitoring get pod

    出力例

    NAME                                   READY   STATUS        RESTARTS   AGE
    prometheus-operator-6f7b748d5b-t7nbg   2/2     Running       0          3h
    prometheus-user-workload-0             4/4     Running       1          3h
    prometheus-user-workload-1             4/4     Running       1          3h
    thanos-ruler-user-workload-0           3/3     Running       0          3h
    thanos-ruler-user-workload-1           3/3     Running       0          3h

4.1.2.2. ユーザーに対するユーザー定義プロジェクトのモニタリングを設定するための権限の付与

クラスター管理者は、user-workload-monitoring-config-edit ロールをユーザーに割り当てることができます。これにより、OpenShift Container Platform のコアモニタリングコンポーネントの設定および管理権限を付与せずに、ユーザー定義プロジェクトのモニタリングを設定および管理する権限が付与されます。

前提条件

  • cluster-admin クラスターロールを持つユーザーとしてクラスターにアクセスできる。
  • ロールを割り当てるユーザーアカウントがすでに存在している。
  • OpenShift CLI (oc) がインストールされている。

手順

  1. user-workload-monitoring-config-edit ロールを openshift-user-workload-monitoring プロジェクトのユーザーに割り当てます。

    $ oc -n openshift-user-workload-monitoring adm policy add-role-to-user \
      user-workload-monitoring-config-edit <user> \
      --role-namespace openshift-user-workload-monitoring
  2. 関連するロールバインディングを表示して、ユーザーが user-workload-monitoring-config-edit ロールに正しく割り当てられていることを確認します。

    $ oc describe rolebinding <role_binding_name> -n openshift-user-workload-monitoring

    コマンドの例

    $ oc describe rolebinding user-workload-monitoring-config-edit -n openshift-user-workload-monitoring

    出力例

    Name:         user-workload-monitoring-config-edit
    Labels:       <none>
    Annotations:  <none>
    Role:
      Kind:  Role
      Name:  user-workload-monitoring-config-edit
    Subjects:
      Kind  Name  Namespace
      ----  ----  ---------
      User  user1           1

    1
    この例では、user1user-workload-monitoring-config-edit ロールに割り当てられています。

4.1.3. ユーザー定義プロジェクトのアラートルーティングの有効化

OpenShift Container Platform では、管理者はユーザー定義プロジェクトのアラートルーティングを有効にできます。このプロセスは、以下の手順で設定されます。

  • ユーザー定義プロジェクトのアラートルーティングを有効にします。

    • デフォルトのプラットフォーム Alertmanager インスタンスを使用します。
    • ユーザー定義プロジェクトにのみ、別の Alertmanager インスタンスを使用してください。
  • ユーザー定義プロジェクトのアラートルーティングを設定するための権限をユーザーに付与します。

これらの手順を完了すると、開発者およびその他のユーザーはユーザー定義のプロジェクトのカスタムアラートおよびアラートルーティングを設定できます。

4.1.3.1. ユーザー定義のアラートルーティングのプラットフォーム Alertmanager インスタンスの有効化

ユーザーは、Alertmanager のメインプラットフォームインスタンスを使用するユーザー定義のアラートルーティング設定を作成できます。

前提条件

  • cluster-admin クラスターロールを持つユーザーとしてクラスターにアクセスできる。
  • クラスター管理者は、ユーザー定義プロジェクトのモニタリングを有効にしている。
  • OpenShift CLI (oc) がインストールされている。

手順

  1. cluster-monitoring-config ConfigMap オブジェクトを編集します。

    $ oc -n openshift-monitoring edit configmap cluster-monitoring-config
  2. alertmanagerMain セクションに enableUserAlertmanagerConfig: truedata/config.yaml の下に追加します。

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: cluster-monitoring-config
      namespace: openshift-monitoring
    data:
      config.yaml: |
        # ...
        alertmanagerMain:
          enableUserAlertmanagerConfig: true 1
        # ...
    1
    enableUserAlertmanagerConfig 値を true に設定して、ユーザーが Alertmanager のメインプラットフォームインスタンスを使用するユーザー定義のアラートルーティング設定を作成できるようにします。
  3. 変更を適用するためにファイルを保存します。新しい設定は自動的に適用されます。

4.1.3.2. ユーザー定義のアラートルーティング用の個別の Alertmanager インスタンスの有効化

クラスターによっては、ユーザー定義のプロジェクト用に専用の Alertmanager インスタンスをデプロイする必要がある場合があります。これは、デフォルトのプラットフォーム Alertmanager インスタンスの負荷を軽減するのに役立ちます。また、デフォルトのプラットフォームアラートとユーザー定義のアラートを分離することができます。このような場合、必要に応じて、Alertmanager の別のインスタンスを有効にして、ユーザー定義のプロジェクトのみにアラートを送信できます。

前提条件

  • cluster-admin クラスターロールを持つユーザーとしてクラスターにアクセスできる。
  • ユーザー定義プロジェクトのモニタリングが有効化されている。
  • OpenShift CLI (oc) がインストールされている。

手順

  1. user-workload-monitoring-config ConfigMap オブジェクトを編集します。

    $ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
  2. data/config.yaml の下にある alertmanager セクションに enabled: true および enableAlertmanagerConfig: true を追加します。

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: user-workload-monitoring-config
      namespace: openshift-user-workload-monitoring
    data:
      config.yaml: |
        alertmanager:
          enabled: true 1
          enableAlertmanagerConfig: true 2
    1
    enabled の値を true に設定して、クラスター内のユーザー定義プロジェクトの Alertmanager の専用インスタンスを有効にします。値を false に設定するか、キーを完全に省略してユーザー定義プロジェクトの Alertmanager を無効にします。この値を false に設定した場合や、キーを省略すると、ユーザー定義のアラートはデフォルトのプラットフォーム Alertmanager インスタンスにルーティングされます。
    2
    enableAlertmanagerConfig 値を true に設定して、ユーザーが AlertmanagerConfig オブジェクトで独自のアラートルーティング設定を定義できるようにします。
  3. 変更を適用するためにファイルを保存します。ユーザー定義プロジェクトの Alertmanager の専用インスタンスが自動的に起動します。

検証

  • user-workload Alertmanager インスタンスが起動していることを確認します。

    # oc -n openshift-user-workload-monitoring get alertmanager

    出力例

    NAME            VERSION   REPLICAS   AGE
    user-workload   0.24.0    2          100s

4.1.3.3. ユーザー定義プロジェクトのアラートルーティングを設定するためのユーザーへの権限の付与

ユーザー定義プロジェクトのアラートルーティングを設定する権限をユーザーに付与できます。

前提条件

  • cluster-admin クラスターロールを持つユーザーとしてクラスターにアクセスできる。
  • ユーザー定義プロジェクトのモニタリングが有効化されている。
  • ロールを割り当てるユーザーアカウントがすでに存在している。
  • OpenShift CLI (oc) がインストールされている。

手順

  • ユーザー定義プロジェクトのユーザーに alert-routing-edit クラスターロールを割り当てます。

    $ oc -n <namespace> adm policy add-role-to-user alert-routing-edit <user> 1
    1
    <namespace>の場合は、ユーザー定義プロジェクトの代わりに namespace を使用します (例: ns1)。<user> の場合は、ロールを割り当てるアカウントの代わりにユーザー名を使用します。

4.1.4. ユーザーに対するユーザー定義プロジェクトのモニタリングパーミッションの付与

クラスター管理者は、すべての OpenShift Container Platform のコアプロジェクトおよびユーザー定義プロジェクトを監視できます。

以下の場合に、開発者と他のユーザーに異なる権限を付与することもできます。

  • ユーザー定義プロジェクトの監視
  • ユーザー定義プロジェクトを監視するコンポーネントの設定
  • ユーザー定義プロジェクトのアラートルーティングの設定
  • ユーザー定義プロジェクトのアラートとサイレンスの管理

次のいずれかのモニタリングロールまたはクラスターロールを割り当てることで、権限を付与できます。

表4.2 モニタリングロール
ロール名説明プロジェクト

user-workload-monitoring-config-edit

このロールを持つユーザーは、user-workload-monitoring-config ConfigMap オブジェクトを編集して、ユーザー定義のワークロードモニタリング用に Prometheus、Prometheus Operator、Alertmanager、および Thanos Ruler を設定できます。

openshift-user-workload-monitoring

monitoring-alertmanager-api-reader

このロールを持つユーザーには、ユーザー定義の Alertmanager が有効な場合、全プロジェクトのユーザー定義の Alertmanager API に対する読み取りアクセス権が付与されます。

openshift-user-workload-monitoring

monitoring-alertmanager-api-writer

このロールを持つユーザーには、ユーザー定義の Alertmanager が有効な場合、全プロジェクトのユーザー定義の Alertmanager API に対する読み取りおよび書き込みアクセス権が付与されます。

openshift-user-workload-monitoring

表4.3 モニタリングクラスターロール
クラスターロール名説明プロジェクト

monitoring-rules-view

このクラスターロールを持つユーザーには、ユーザー定義プロジェクトの PrometheusRule カスタムリソース (CR) への読み取りアクセス権が付与されます。OpenShift Container Platform Web コンソールの Developer パースペクティブでアラートとサイレンスを表示することもできます。

RoleBinding を使用して任意のユーザープロジェクトにバインドできます。

monitoring-rules-edit

このクラスターロールを持つユーザーは、ユーザー定義プロジェクトの PrometheusRule CR を作成、変更、および削除できます。また、OpenShift Container Platform Web コンソールの Developer パースペクティブでアラートとサイレンスを管理することもできます。

RoleBinding を使用して任意のユーザープロジェクトにバインドできます。

monitoring-edit

このクラスターロールを持つユーザーには、monitoring-rules-edit クラスターロールを持つユーザーと同じ特権があります。さらに、ユーザーは ServiceMonitor および PodMonitor リソースを作成、読み取り、変更、削除して、サービスと Pod からメトリクスを収集できます。

RoleBinding を使用して任意のユーザープロジェクトにバインドできます。

alert-routing-edit

このクラスターロールを持つユーザーは、ユーザー定義プロジェクトの AlertmanagerConfig CR を作成、更新、および削除できます。

RoleBinding を使用して任意のユーザープロジェクトにバインドできます。

4.1.4.1. Web コンソールを使用したユーザー権限の付与

OpenShift Container Platform Web コンソールを使用して、openshift-monitoring プロジェクトまたはユーザー自身のプロジェクトに対する権限をユーザーに付与できます。

前提条件

  • cluster-admin クラスターロールを持つユーザーとしてクラスターにアクセスできる。
  • ロールを割り当てるユーザーアカウントがすでに存在している。

手順

  1. OpenShift Container Platform Web コンソールの Administrator パースペクティブで、User Management RoleBindings Create binding に移動します。
  2. Binding Type セクションで、Namespace Role Binding タイプを選択します。
  3. Name フィールドに、ロールバインディングの名前を入力します。
  4. Namespace フィールドで、アクセスを許可するプロジェクトを選択します。

    重要

    この手順を使用してユーザーに付与するモニタリングロールまたはクラスターロールの権限は、Namespace フィールドで選択したプロジェクトにのみ適用されます。

  5. Role Name リストからモニタリングロールまたはクラスターロールを選択します。
  6. Subject セクションで、User を選択します。
  7. Subject Name フィールドにユーザーの名前を入力します。
  8. Create を選択して、ロールバインディングを適用します。

4.1.4.2. CLI を使用したユーザー権限の付与

OpenShift CLI (oc) を使用して、openshift-monitoring プロジェクトまたはユーザー自身のプロジェクトに対する権限をユーザーに付与できます。

重要

どちらのロールまたはクラスターロールを選択する場合でも、クラスター管理者が特定のプロジェクトにバインドする必要があります。

前提条件

  • cluster-admin クラスターロールを持つユーザーとしてクラスターにアクセスできる。
  • ロールを割り当てるユーザーアカウントがすでに存在している。
  • OpenShift CLI (oc) がインストールされている。

手順

  • プロジェクトのユーザーにモニタリングロールを割り当てるには、次のコマンドを入力します。

    $ oc adm policy add-role-to-user <role> <user> -n <namespace> --role-namespace <namespace> 1
    1
    <role> は必要なモニタリングロールに、<user> はロールを割り当てるユーザーに、<namespace> はアクセスを許可するプロジェクトに置き換えます。
  • プロジェクトのユーザーにモニタリングクラスターロールを割り当てるには、次のコマンドを入力します。

    $ oc adm policy add-cluster-role-to-user <cluster-role> <user> -n <namespace> 1
    1
    <cluster-role> は必要なモニタリングクラスターロールに、<user> はクラスターロールを割り当てるユーザーに、<namespace> はアクセスを許可するプロジェクトに置き換えます。

4.1.5. モニタリングからのユーザー定義のプロジェクトを除く

ユーザー定義のプロジェクトは、ユーザーワークロードモニタリングから除外できます。これを実行するには、openshift.io/user-monitoring ラベルに false を指定して、プロジェクトの namespace に追加します。

手順

  1. ラベルをプロジェクト namespace に追加します。

    $ oc label namespace my-project 'openshift.io/user-monitoring=false'
  2. モニタリングを再度有効にするには、namespace からラベルを削除します。

    $ oc label namespace my-project 'openshift.io/user-monitoring-'
    注記

    プロジェクトにアクティブなモニタリングターゲットがあった場合、ラベルを追加した後、Prometheus がそれらのスクレイピングを停止するまでに数分かかる場合があります。

4.1.6. ユーザー定義プロジェクトのモニタリングの無効化

ユーザー定義プロジェクトのモニタリングを有効にした後に、クラスターモニタリング ConfigMap オブジェクトに enableUserWorkload: false を設定してこれを再度無効にできます。

注記

または、enableUserWorkload: true を削除して、ユーザー定義プロジェクトのモニタリングを無効にできます。

手順

  1. cluster-monitoring-config ConfigMap オブジェクトを編集します。

    $ oc -n openshift-monitoring edit configmap cluster-monitoring-config
    1. data/config.yamlenableUserWorkload:false に設定します。

      apiVersion: v1
      kind: ConfigMap
      metadata:
        name: cluster-monitoring-config
        namespace: openshift-monitoring
      data:
        config.yaml: |
          enableUserWorkload: false
  2. 変更を適用するためにファイルを保存します。ユーザー定義プロジェクトのモニタリングは自動的に無効になります。
  3. prometheus-operatorprometheus-user-workload および thanos-ruler-user-workload Pod が openshift-user-workload-monitoring プロジェクトで終了していることを確認します。これには少し時間がかかる場合があります。

    $ oc -n openshift-user-workload-monitoring get pod

    出力例

    No resources found in openshift-user-workload-monitoring project.

注記

openshift-user-workload-monitoring プロジェクトの user-workload-monitoring-config ConfigMap オブジェクトは、ユーザー定義プロジェクトのモニタリングが無効にされている場合は自動的に削除されません。これにより、ConfigMap で作成した可能性のあるカスタム設定を保持されます。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

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

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

会社概要

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

© 2024 Red Hat, Inc.