第4章 ユーザーワークロードモニタリングの設定
4.1. ユーザーワークロードモニタリングスタックの設定の準備
このセクションでは、どのユーザー定義のモニタリングコンポーネントを設定できるか、ユーザーワークロード監視を有効にする方法、およびユーザーワークロードモニタリングスタックの設定を準備する方法について説明します。
- モニタリングスタックのすべての設定パラメーターが公開されるわけではありません。設定では、Cluster Monitoring Operator の config map リファレンス にリストされているパラメーターとフィールドのみがサポートされます。
- モニタリングスタックには、追加のリソース要件があります。詳細は、Cluster Monitoring Operator のスケーリング を参照し、十分なリソースがあることを確認してください。
4.1.1. 設定可能なモニタリングコンポーネント
以下の表は、設定可能なモニタリングコンポーネントと、user-workload-monitoring-config
設定マップでコンポーネントを指定するために使用されるキーを示しています。
コンポーネント | user-workload-monitoring-config config map キー |
---|---|
Prometheus Operator |
|
Prometheus |
|
Alertmanager |
|
Thanos Ruler |
|
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
ConfigMap
をopenshift-user-workload-monitoring
プロジェクトに作成している。ユーザー定義プロジェクトをモニターするコンポーネントのConfigMap
に設定オプションを追加できます。注記設定の変更を
user-workload-monitoring-config
ConfigMap
に保存するたびに、openshift-user-workload-monitoring
プロジェクトの Pod が再デプロイされます。これらのコンポーネントが再デプロイするまで時間がかかる場合があります。
手順
cluster-monitoring-config
ConfigMap
オブジェクトを編集します。$ oc -n openshift-monitoring edit configmap cluster-monitoring-config
enableUserWorkload: true
をdata/config.yaml
の下に追加します。apiVersion: v1 kind: ConfigMap metadata: name: cluster-monitoring-config namespace: openshift-monitoring data: config.yaml: | enableUserWorkload: true 1
- 1
true
に設定すると、enableUserWorkload
パラメーターはクラスター内のユーザー定義プロジェクトのモニタリングを有効にします。
変更を適用するためにファイルを保存します。ユーザー定義プロジェクトのモニタリングは自動的に有効になります。
注記ユーザー定義プロジェクトの監視を有効にすると、デフォルトで
user-workload-monitoring-config
ConfigMap
オブジェクトが作成されます。prometheus-operator
、prometheus-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
) がインストールされている。
手順
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
関連するロールバインディングを表示して、ユーザーが
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
- この例では、
user1
がuser-workload-monitoring-config-edit
ロールに割り当てられています。
4.1.3. ユーザー定義プロジェクトのアラートルーティングの有効化
OpenShift Container Platform では、管理者はユーザー定義プロジェクトのアラートルーティングを有効にできます。このプロセスは、以下の手順で設定されます。
ユーザー定義プロジェクトのアラートルーティングを有効にします。
- デフォルトのプラットフォーム Alertmanager インスタンスを使用します。
- ユーザー定義プロジェクトにのみ、別の Alertmanager インスタンスを使用してください。
- ユーザー定義プロジェクトのアラートルーティングを設定するための権限をユーザーに付与します。
これらの手順を完了すると、開発者およびその他のユーザーはユーザー定義のプロジェクトのカスタムアラートおよびアラートルーティングを設定できます。
4.1.3.1. ユーザー定義のアラートルーティングのプラットフォーム Alertmanager インスタンスの有効化
ユーザーは、Alertmanager のメインプラットフォームインスタンスを使用するユーザー定義のアラートルーティング設定を作成できます。
前提条件
-
cluster-admin
クラスターロールを持つユーザーとしてクラスターにアクセスできる。 - クラスター管理者は、ユーザー定義プロジェクトのモニタリングを有効にしている。
-
OpenShift CLI (
oc
) がインストールされている。
手順
cluster-monitoring-config
ConfigMap
オブジェクトを編集します。$ oc -n openshift-monitoring edit configmap cluster-monitoring-config
alertmanagerMain
セクションにenableUserAlertmanagerConfig: true
をdata/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 のメインプラットフォームインスタンスを使用するユーザー定義のアラートルーティング設定を作成できるようにします。
- 変更を適用するためにファイルを保存します。新しい設定は自動的に適用されます。
4.1.3.2. ユーザー定義のアラートルーティング用の個別の Alertmanager インスタンスの有効化
クラスターによっては、ユーザー定義のプロジェクト用に専用の Alertmanager インスタンスをデプロイする必要がある場合があります。これは、デフォルトのプラットフォーム Alertmanager インスタンスの負荷を軽減するのに役立ちます。また、デフォルトのプラットフォームアラートとユーザー定義のアラートを分離することができます。このような場合、必要に応じて、Alertmanager の別のインスタンスを有効にして、ユーザー定義のプロジェクトのみにアラートを送信できます。
前提条件
-
cluster-admin
クラスターロールを持つユーザーとしてクラスターにアクセスできる。 - ユーザー定義プロジェクトのモニタリングが有効化されている。
-
OpenShift CLI (
oc
) がインストールされている。
手順
user-workload-monitoring-config
ConfigMap
オブジェクトを編集します。$ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
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
オブジェクトで独自のアラートルーティング設定を定義できるようにします。
- 変更を適用するためにファイルを保存します。ユーザー定義プロジェクトの 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 のコアプロジェクトおよびユーザー定義プロジェクトを監視できます。
以下の場合に、開発者と他のユーザーに異なる権限を付与することもできます。
- ユーザー定義プロジェクトの監視
- ユーザー定義プロジェクトを監視するコンポーネントの設定
- ユーザー定義プロジェクトのアラートルーティングの設定
- ユーザー定義プロジェクトのアラートとサイレンスの管理
次のいずれかのモニタリングロールまたはクラスターロールを割り当てることで、権限を付与できます。
ロール名 | 説明 | プロジェクト |
---|---|---|
|
このロールを持つユーザーは、 |
|
| このロールを持つユーザーには、ユーザー定義の Alertmanager が有効な場合、全プロジェクトのユーザー定義の Alertmanager API に対する読み取りアクセス権が付与されます。 |
|
| このロールを持つユーザーには、ユーザー定義の Alertmanager が有効な場合、全プロジェクトのユーザー定義の Alertmanager API に対する読み取りおよび書き込みアクセス権が付与されます。 |
|
クラスターロール名 | 説明 | プロジェクト |
---|---|---|
|
このクラスターロールを持つユーザーには、ユーザー定義プロジェクトの |
|
|
このクラスターロールを持つユーザーは、ユーザー定義プロジェクトの |
|
|
このクラスターロールを持つユーザーには、 |
|
|
このクラスターロールを持つユーザーは、ユーザー定義プロジェクトの |
|
関連情報
4.1.4.1. Web コンソールを使用したユーザー権限の付与
OpenShift Container Platform Web コンソールを使用して、openshift-monitoring
プロジェクトまたはユーザー自身のプロジェクトに対する権限をユーザーに付与できます。
前提条件
-
cluster-admin
クラスターロールを持つユーザーとしてクラスターにアクセスできる。 - ロールを割り当てるユーザーアカウントがすでに存在している。
手順
-
OpenShift Container Platform Web コンソールの Administrator パースペクティブで、User Management
RoleBindings Create binding に移動します。 - Binding Type セクションで、Namespace Role Binding タイプを選択します。
- Name フィールドに、ロールバインディングの名前を入力します。
Namespace フィールドで、アクセスを許可するプロジェクトを選択します。
重要この手順を使用してユーザーに付与するモニタリングロールまたはクラスターロールの権限は、Namespace フィールドで選択したプロジェクトにのみ適用されます。
- Role Name リストからモニタリングロールまたはクラスターロールを選択します。
- Subject セクションで、User を選択します。
- Subject Name フィールドにユーザーの名前を入力します。
- 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 に追加します。
手順
ラベルをプロジェクト namespace に追加します。
$ oc label namespace my-project 'openshift.io/user-monitoring=false'
モニタリングを再度有効にするには、namespace からラベルを削除します。
$ oc label namespace my-project 'openshift.io/user-monitoring-'
注記プロジェクトにアクティブなモニタリングターゲットがあった場合、ラベルを追加した後、Prometheus がそれらのスクレイピングを停止するまでに数分かかる場合があります。
4.1.6. ユーザー定義プロジェクトのモニタリングの無効化
ユーザー定義プロジェクトのモニタリングを有効にした後に、クラスターモニタリング ConfigMap
オブジェクトに enableUserWorkload: false
を設定してこれを再度無効にできます。
または、enableUserWorkload: true
を削除して、ユーザー定義プロジェクトのモニタリングを無効にできます。
手順
cluster-monitoring-config
ConfigMap
オブジェクトを編集します。$ oc -n openshift-monitoring edit configmap cluster-monitoring-config
data/config.yaml
でenableUserWorkload:
をfalse
に設定します。apiVersion: v1 kind: ConfigMap metadata: name: cluster-monitoring-config namespace: openshift-monitoring data: config.yaml: | enableUserWorkload: false
- 変更を適用するためにファイルを保存します。ユーザー定義プロジェクトのモニタリングは自動的に無効になります。
prometheus-operator
、prometheus-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
で作成した可能性のあるカスタム設定を保持されます。