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 プロジェクトにデプロイしている。

手順

  1. ServiceMonitor リソース設定の YAML ファイルを作成します。この例では、ファイルは example-app-service-monitor.yaml という名前です。
  2. 以下の 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 フィールドは常に無視されます。

  1. 設定をクラスターに適用します。

    $ oc apply -f example-app-service-monitor.yaml

    ServiceMonitor をデプロイするのに多少時間がかかります。

  2. ServiceMonitor リソースが実行中であることを確認できます。

    $ oc -n ns1 get servicemonitor

    出力例

    NAME                         AGE
    prometheus-example-monitor   81m

関連情報