4.2.2. サービスのモニター方法の指定
サービスが公開するメトリクスを使用するには、OpenShift Container モニタリングを、/metrics
エンドポイントからメトリクスを収集できるように設定する必要があります。これは、サービスのモニタリング方法を指定する ServiceMonitor
カスタムリソース定義、または Pod のモニタリング方法を指定する PodMonitor
CRD を使用して実行できます。前者の場合は Service
オブジェクトが必要ですが、後者の場合は不要です。これにより、Prometheus は Pod によって公開されるメトリクスエンドポイントからメトリクスを直接収集することができます。
OpenShift Container Platform 4.6 では、ServiceMonitor
リソースの tlsConfig
プロパティーを使用し、エンドポイントからメトリクスを収集する際に使用する TLS 設定を指定できます。tlsConfig
プロパティーは PodMonitor
リソースではまだ利用できません。メトリクスの収集時に TLS 設定を使用する必要がある場合は、ServiceMonitor
リソースを使用する必要があります。
この手順では、ユーザー定義プロジェクトでサービスの ServiceMonitor
リソースを作成する方法を説明します。
前提条件
-
cluster-admin
ロールまたはmonitoring-edit
ロールを持つユーザーとしてクラスターにアクセスできる。 - ユーザー定義プロジェクトのモニタリングを有効にしている。
-
この例では、
prometheus-example-app
サンプルサービスをns1
プロジェクトにデプロイしている。
手順
-
ServiceMonitor
リソース設定の YAML ファイルを作成します。この例では、ファイルはexample-app-service-monitor.yaml
という名前です。 以下の
ServiceMonitor
リソース設定の詳細を追加します。apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: labels: k8s-app: prometheus-example-monitor name: prometheus-example-monitor namespace: ns1 spec: endpoints: - interval: 30s port: web scheme: http selector: matchLabels: app: prometheus-example-app
これは、
prometheus-example-app
サンプルサービスによって公開されるメトリクスを収集するServiceMonitor
リソースを定義します。これにはversion
メトリクスが含まれます。
ユーザー定義の namespace の ServiceMonitor
リソースは、同じ namespace のサービスのみを検出できます。つまり、ServiceMonitor
リソースの namespaceSelector
フィールドは常に無視されます。
設定をクラスターに適用します。
$ oc apply -f example-app-service-monitor.yaml
ServiceMonitor
をデプロイするのに多少時間がかかります。ServiceMonitor
リソースが実行中であることを確認できます。$ oc -n ns1 get servicemonitor
出力例
NAME AGE prometheus-example-monitor 81m
関連情報
-
ServiceMonitor
およびPodMonitor
リソースについての詳細は、Prometheus Operator API のドキュメント を参照してください。