16.4. サービスを関しするための Cluster Observability Operator 設定

重要

Cluster Observability Operator はテクノロジープレビュー機能としてのみ使用できます。テクノロジープレビュー機能は、Red Hat 製品サポートのサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではない場合があります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。

Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。

Cluster Observability Operator (COO) で管理されるモニタリングスタックを設定することで、サービスのメトリクスを監視できます。

サービスのモニタリングをテストするには、次の手順に従います。

  • サービスエンドポイントを定義するサンプルサービスをデプロイします。
  • COO によるサービスのモニタリング方法を指定する ServiceMonitor オブジェクトを作成します。
  • ServiceMonitor オブジェクトを検出するための MonitoringStack オブジェクトを作成します。

16.4.1. Cluster Observability Operator のサンプルサービスをデプロイする

この設定では、ユーザー定義の ns1-coo プロジェクトに prometheus-coo-example-app という名前のサンプルサービスをデプロイします。このサービスは、カスタム version メトリクスを公開します。

前提条件

  • cluster-admin クラスターロールを持つユーザーとして、または namespace の管理権限を持つユーザーとして、クラスターにアクセスできる。

手順

  1. prometheus-coo-example-app.yaml という名前の YAML ファイルを作成します。このファイルには、namespace、デプロイメント、およびサービスに関する次の設定の詳細が含まれます。

    apiVersion: v1
    kind: Namespace
    metadata:
      name: ns1-coo
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        app: prometheus-coo-example-app
      name: prometheus-coo-example-app
      namespace: ns1-coo
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: prometheus-coo-example-app
      template:
        metadata:
          labels:
            app: prometheus-coo-example-app
        spec:
          containers:
          - image: ghcr.io/rhobs/prometheus-example-app:0.4.2
            imagePullPolicy: IfNotPresent
            name: prometheus-coo-example-app
    ---
    apiVersion: v1
    kind: Service
    metadata:
      labels:
        app: prometheus-coo-example-app
      name: prometheus-coo-example-app
      namespace: ns1-coo
    spec:
      ports:
      - port: 8080
        protocol: TCP
        targetPort: 8080
        name: web
      selector:
        app: prometheus-coo-example-app
      type: ClusterIP
  2. ファイルを保存します。
  3. 次のコマンドを実行して、設定をクラスターに適用します。

    $ oc apply -f prometheus-coo-example-app.yaml
  4. 次のコマンドを実行して出力を確認し、Pod が実行されていることを確認します。

    $ oc -n ns1-coo get pod

    出力例

    NAME                                      READY     STATUS    RESTARTS   AGE
    prometheus-coo-example-app-0927545cb7-anskj   1/1       Running   0          81m

16.4.2. Cluster Observability Operator によるサービスのモニタリング方法を指定する

「Cluster Observability Operator のサンプルサービスをデプロイする」セクションで作成したサンプルサービスが公開するメトリクスを使用するには、/metrics エンドポイントからメトリクスを取得するようにモニタリングコンポーネントを設定する必要があります。

この設定は、サービスのモニタリング方法を指定する ServiceMonitor オブジェクト、または Pod のモニタリング方法を指定する PodMonitor オブジェクトを使用して作成できます。ServiceMonitor オブジェクトには Service オブジェクトが必要です。PodMonitor オブジェクトには必要ないため、MonitoringStack オブジェクトは Pod が公開するメトリクスエンドポイントから直接メトリクスを取得できます。

この手順は、ns1-coo namespace に prometheus-coo-example-app という名前のサンプルサービスの ServiceMonitor オブジェクトを作成する方法を示しています。

前提条件

  • cluster-admin クラスターロールを持つユーザーとして、または namespace の管理権限を持つユーザーとして、クラスターにアクセスできる。
  • Cluster Observability Operator がインストールされている。
  • prometheus-coo-example-app サンプルサービスを ns1-coo namespace にデプロイしている。

    注記

    prometheus-example-app サンプルサービスは、TLS 認証をサポートしていません。

手順

  1. 次の ServiceMonitor オブジェクト設定の詳細を含む YAML ファイルを、example-coo-app-service-monitor.yaml という名前で作成します。

    apiVersion: monitoring.rhobs/v1
    kind: ServiceMonitor
    metadata:
      labels:
        k8s-app: prometheus-coo-example-monitor
      name: prometheus-coo-example-monitor
      namespace: ns1-coo
    spec:
      endpoints:
      - interval: 30s
        port: web
        scheme: http
      selector:
        matchLabels:
          app: prometheus-coo-example-app

    この設定は、prometheus-coo-example-app サンプルサービスが公開するメトリクスデータを収集するために MonitoringStack オブジェクトが参照する ServiceMonitor オブジェクトを定義します。

  2. 次のコマンドを実行して、設定をクラスターに適用します。

    $ oc apply -f example-app-service-monitor.yaml
  3. 次のコマンドを実行して出力を観察し、ServiceMonitor リソースが作成されたことを確認します。

    $ oc -n ns1-coo get servicemonitors.monitoring.rhobs

    出力例

    NAME                         AGE
    prometheus-coo-example-monitor   81m

16.4.3. Cluster Observability Operator の MonitoringStack オブジェクトを作成する

ターゲット prometheus-coo-example-app サービスが公開するメトリクスデータを収集するには、「Cluster Observability Operator でサービスを監視する方法を指定する」セクションで作成した ServiceMonitor オブジェクトを参照する MonitoringStack オブジェクトを作成します。この MonitoringStack オブジェクトはサービスを検出し、そこから公開されているメトリクスデータを収集できます。

前提条件

  • cluster-admin クラスターロールを持つユーザーとして、または namespace の管理権限を持つユーザーとして、クラスターにアクセスできる。
  • Cluster Observability Operator がインストールされている。
  • prometheus-coo-example-app サンプルサービスを ns1-coo namespace にデプロイしている。
  • ns1-coo namespace に、prometheus-coo-example-monitor という名前の ServiceMonitor オブジェクトを作成している。

手順

  1. MonitoringStack オブジェクト設定の YAML ファイルを作成します。この例では、ファイル名を example-coo-monitoring-stack.yaml にします。
  2. 以下の MonitoringStack オブジェクト設定の詳細を追加します。

    MonitoringStack オブジェクトの例

    apiVersion: monitoring.rhobs/v1alpha1
    kind: MonitoringStack
    metadata:
      name: example-coo-monitoring-stack
      namespace: ns1-coo
    spec:
      logLevel: debug
      retention: 1d
      resourceSelector:
        matchLabels:
          k8s-app: prometheus-coo-example-monitor

  3. 次のコマンドを実行して、MonitoringStack オブジェクトを適用します。

    $ oc apply -f example-coo-monitoring-stack.yaml
  4. 次のコマンドを実行し、出力で MonitoringStack オブジェクトが利用可能であることを確認します。

    $ oc -n ns1-coo get monitoringstack

    出力例

    NAME                         AGE
    example-coo-monitoring-stack   81m