5.14. Prometheus による組み込みモニタリングの設定
このガイドでは、Prometheus Operator を使用して Operator SDK が提供する組み込みの監視サポートを説明し、Go ベースおよび Ansible ベースの Operator の作成者向けの使用法を詳説します。
Operator プロジェクトの関連スキャフォールディングおよびテストツールなど、Red Hat がサポートするバージョンの Operator SDK CLI ツールは非推奨となり、OpenShift Container Platform の今後のリリースで削除される予定です。Red Hat は、現在のリリースライフサイクル中にこの機能のバグ修正とサポートを提供しますが、この機能は今後、機能拡張の提供はなく、OpenShift Container Platform リリースから削除されます。
新しい Operator プロジェクトを作成する場合、Red Hat がサポートするバージョンの Operator SDK は推奨されません。既存の Operator プロジェクトを使用する Operator 作成者は、OpenShift Container Platform 4.17 でリリースされるバージョンの Operator SDK CLI ツールを使用してプロジェクトを維持し、OpenShift Container Platform の新しいバージョンを対象とする Operator リリースを作成できます。
Operator プロジェクトの次の関連ベースイメージは 非推奨 ではありません。これらのベースイメージのランタイム機能と設定 API は、バグ修正と CVE への対応のために引き続きサポートされます。
- Ansible ベースの Operator プロジェクトのベースイメージ
- Helm ベースの Operator プロジェクトのベースイメージ
OpenShift Container Platform で非推奨となったか、削除された主な機能の最新の一覧は、OpenShift Container Platform リリースノートの 非推奨および削除された機能 セクションを参照してください。
サポートされていない、コミュニティーによって管理されているバージョンの Operator SDK は、Operator SDK (Operator Framework) を参照してください。
5.14.1. Prometheus Operator のサポート リンクのコピーリンクがクリップボードにコピーされました!
Prometheus はオープンソースのシステムモニタリングおよびアラートツールキットです。Prometheus Operator は、OpenShift Container Platform などの Kubernetes ベースのクラスターで実行される Prometheus クラスターを作成し、設定し、管理します。
ヘルパー関数は、デフォルトで Operator SDK に存在し、Prometheus Operator がデプロイされているクラスターで使用できるように生成された Go ベースの Operator にメトリックを自動的にセットアップします。
5.14.2. Go ベースの Operator のカスタムメトリックの公開 リンクのコピーリンクがクリップボードにコピーされました!
Operator の作成者は、controller-runtime/pkg/metricsライブラリーのグローバル Prometheus レジストリーを使用してカスタムメトリックを公開できます。
前提条件
- Operator SDK を使用して生成される Go ベースの Operator
- Prometheus Operator。デフォルトで OpenShift Container Platform クラスターにデプロイされます
手順
Operator SDK プロジェクトで、
config/default/kustomization.yamlファイルの次の行のコメントを解除します。../prometheus
../prometheusCopy to Clipboard Copied! Toggle word wrap Toggle overflow カスタムコントローラークラスを作成して、Operator からの追加のメトリックを公開します。次の例では、
widgetsとwidgetFailuresコレクターをグローバル変数として宣言してコントローラーのパッケージのinit()関数に登録します。例5.34
controllers/memcached_controller_test_metrics.goファイルCopy to Clipboard Copied! Toggle word wrap Toggle overflow mainコントローラークラスの調整ループの任意の部分から、これらのコレクターに記録し、これをもとにメトリックのビジネスロジックを決定します。例5.35
controllers/memcached_controller.goファイルCopy to Clipboard Copied! Toggle word wrap Toggle overflow Operator をビルドし、プッシュします。
make docker-build docker-push IMG=<registry>/<user>/<image_name>:<tag>
$ make docker-build docker-push IMG=<registry>/<user>/<image_name>:<tag>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Operator をデプロイします。
make deploy IMG=<registry>/<user>/<image_name>:<tag>
$ make deploy IMG=<registry>/<user>/<image_name>:<tag>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ロールおよびロールバインディング定義を作成して、Operator のサービスモニターが OpenShift Container Platform クラスターの Prometheus インスタンスによってスクレイプされるようにします。
サービスアカウントに namespace のメトリックをスクレイプする権限が指定されるように、ロールを割り当てる必要があります。
例5.36
config/prometheus/role.yamlロールCopy to Clipboard Copied! Toggle word wrap Toggle overflow 例5.37
config/prometheus/rolebinding.yamlロールバインディングCopy to Clipboard Copied! Toggle word wrap Toggle overflow デプロイされた Operator にロールとロールバインディングを適用します。
oc apply -f config/prometheus/role.yaml
$ oc apply -f config/prometheus/role.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc apply -f config/prometheus/rolebinding.yaml
$ oc apply -f config/prometheus/rolebinding.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow スクレイプするネームスペースのラベルを設定します。これにより、そのネームスペースの OpenShift クラスターモニタリングが有効になります。
oc label namespace <operator_namespace> openshift.io/cluster-monitoring="true"
$ oc label namespace <operator_namespace> openshift.io/cluster-monitoring="true"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
-
OpenShift Container Platform Web コンソールでメトリックを照会および表示します。カスタムコントローラークラスで設定された名前 (
widgets_totalやwidget_failures_totalなど) を使用できます。
5.14.3. Ansible ベースの Operator のカスタムメトリックの公開 リンクのコピーリンクがクリップボードにコピーされました!
Ansible ベースの Operator を作成する Operator 作成者は、Operator SDK のosdk_metricsモジュールを使用して、カスタムの Operator および Operand メトリックの公開、イベントの発行、ログのサポートが可能です。
前提条件
- Operator SDK を使用して生成される Ansible ベースの Operator
- Prometheus Operator。デフォルトで OpenShift Container Platform クラスターにデプロイされます
手順
Ansible ベースの Operator を生成します。この例では、
testmetrics.comドメインを使用しています。operator-sdk init \ --plugins=ansible \ --domain=testmetrics.com$ operator-sdk init \ --plugins=ansible \ --domain=testmetrics.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow metricsAPI を作成します。この例では、Testmetricsという名前のkindを使用しています。operator-sdk create api \ --group metrics \ --version v1 \ --kind Testmetrics \ --generate-role$ operator-sdk create api \ --group metrics \ --version v1 \ --kind Testmetrics \ --generate-roleCopy to Clipboard Copied! Toggle word wrap Toggle overflow roles/testmetrics/tasks/main.ymlファイルを編集し、osdk_metricsモジュールを使用して Operator プロジェクトのカスタムメトリックを作成します。例5.38
roles/testmetrics/tasks/main.ymlファイルの例Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
クラスターで Operator を実行します。たとえば、"run as a deployment" メソッドを使用するには、次のようにします。
Operator イメージをビルドし、これをレジストリーにプッシュします。
make docker-build docker-push IMG=<registry>/<user>/<image_name>:<tag>
$ make docker-build docker-push IMG=<registry>/<user>/<image_name>:<tag>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Operator をクラスターにインストールします。
make install
$ make installCopy to Clipboard Copied! Toggle word wrap Toggle overflow Operator をデプロイします。
make deploy IMG=<registry>/<user>/<image_name>:<tag>
$ make deploy IMG=<registry>/<user>/<image_name>:<tag>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Testmetricsカスタムリソース (CR) を作成します。CR 仕様を定義します。
例5.39
config/samples/metrics_v1_testmetrics.yamlファイルの例Copy to Clipboard Copied! Toggle word wrap Toggle overflow オブジェクトを作成します。
oc create -f config/samples/metrics_v1_testmetrics.yaml
$ oc create -f config/samples/metrics_v1_testmetrics.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Pod の詳細を取得します。
oc get pods
$ oc get podsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME READY STATUS RESTARTS AGE ansiblemetrics-controller-manager-<id> 2/2 Running 0 149m testmetrics-sample-memcached-<id> 1/1 Running 0 147m
NAME READY STATUS RESTARTS AGE ansiblemetrics-controller-manager-<id> 2/2 Running 0 149m testmetrics-sample-memcached-<id> 1/1 Running 0 147mCopy to Clipboard Copied! Toggle word wrap Toggle overflow エンドポイントの詳細を取得します。
oc get ep
$ oc get epCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME ENDPOINTS AGE ansiblemetrics-controller-manager-metrics-service 10.129.2.70:8443 150m
NAME ENDPOINTS AGE ansiblemetrics-controller-manager-metrics-service 10.129.2.70:8443 150mCopy to Clipboard Copied! Toggle word wrap Toggle overflow カスタムメトリックトークンをリクエストします。
token=`oc create token prometheus-k8s -n openshift-monitoring`
$ token=`oc create token prometheus-k8s -n openshift-monitoring`Copy to Clipboard Copied! Toggle word wrap Toggle overflow メトリック値を確認します。
my_counter_metric値を確認します。oc exec ansiblemetrics-controller-manager-<id> -- curl -k -H "Authoriza
$ oc exec ansiblemetrics-controller-manager-<id> -- curl -k -H "Authoriza tion: Bearer $token" 'https://10.129.2.70:8443/metrics' | grep my_counterCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
HELP my_counter_metric Add 3.14 to the counter TYPE my_counter_metric counter my_counter_metric 2
HELP my_counter_metric Add 3.14 to the counter TYPE my_counter_metric counter my_counter_metric 2Copy to Clipboard Copied! Toggle word wrap Toggle overflow my_gauge_metric値を確認します。oc exec ansiblemetrics-controller-manager-<id> -- curl -k -H "Authoriza
$ oc exec ansiblemetrics-controller-manager-<id> -- curl -k -H "Authoriza tion: Bearer $token" 'https://10.129.2.70:8443/metrics' | grep gaugeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
HELP my_gauge_metric Create my gauge and set it to 2.
HELP my_gauge_metric Create my gauge and set it to 2.Copy to Clipboard Copied! Toggle word wrap Toggle overflow my_histogram_metricとmy_summary_metricの値を確認します。oc exec ansiblemetrics-controller-manager-<id> -- curl -k -H "Authoriza
$ oc exec ansiblemetrics-controller-manager-<id> -- curl -k -H "Authoriza tion: Bearer $token" 'https://10.129.2.70:8443/metrics' | grep ObserveCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
HELP my_histogram_metric Observe my histogram HELP my_summary_metric Observe my summary
HELP my_histogram_metric Observe my histogram HELP my_summary_metric Observe my summaryCopy to Clipboard Copied! Toggle word wrap Toggle overflow