Menu Close
Settings Close

Language and Page Formatting Options

5.8. モニタリング関連の問題のトラブルシューティング

ユーザー定義プロジェクトのモニタリングに関する一般的な問題のトラブルシューティング手順を参照してください。

5.8.1. ユーザー定義プロジェクトのメトリクスが利用できない理由の判別

ユーザー定義プロジェクトのモニタリング時にメトリクスが表示されない場合は、以下の手順を実行して問題のトラブルシューティングを実行します。

手順

  1. メトリクス名に対してクエリーを実行し、プロジェクトが正しいことを確認します。

    1. OpenShift Container Platform Web コンソールの Developer パースペクティブから、ObserveMetrics を選択します。
    2. Project: 一覧でメトリクスで表示するプロジェクトを選択します。
    3. Select Query 一覧からクエリーを選択するか、Show PromQL を選択してカスタム PromQL クエリーを実行します。

      Select Query ペインには、メトリクス名が表示されます。

      クエリーはプロジェクトごとに実行される必要があります。表示されるメトリクスは、選択したプロジェクトに関連するメトリクスです。

  2. メトリックが必要な Pod がアクティブにメトリックを提供していることを確認します。以下の oc exec コマンドを Pod で実行し、podIPport、 および /metrics をターゲットにします。

    $ oc exec <sample_pod> -n <sample_namespace> -- curl <target_pod_IP>:<port>/metrics
    注記

    curl がインストールされている Pod でコマンドを実行する必要があります。

    以下の出力例は、有効なバージョンのメトリクスを含む結果を示しています。

    出力例

      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                     Dload  Upload   Total   Spent    Left  Speed
    # HELP version Version information about this binary-- --:--:-- --:--:--     0
    # TYPE version gauge
    version{version="v0.1.0"} 1
    100   102  100   102    0     0  51000      0 --:--:-- --:--:-- --:--:-- 51000

    無効な出力は、対応するアプリケーションに問題があることを示しています。

  3. PodMonitor CRD を使用している場合は、PodMonitor CRD がラベル一致を使用して適切な Pod を参照するよう設定されていることを確認します。詳細は、Prometheus Operator のドキュメントを参照してください。
  4. ServiceMonitor CRD を使用し、Pod の /metrics エンドポイントがメトリクスデータを表示している場合は、以下の手順を実行して設定を確認します。

    1. サービスが正しい /metrics エンドポイントを参照していることを確認します。この出力のサービス labels は、後続の手順でサービスが定義するサービスモニターの labels/metrics エンドポイントと一致する必要があります。

      $ oc get service

      出力例

      apiVersion: v1
      kind: Service 1
      metadata:
        labels: 2
          app: prometheus-example-app
        name: prometheus-example-app
        namespace: ns1
      spec:
        ports:
        - port: 8080
          protocol: TCP
          targetPort: 8080
          name: web
        selector:
          app: prometheus-example-app
        type: ClusterIP

      1
      これがサービス API であることを指定します。
      2
      このサービスに使用されるラベルを指定します。
    2. serviceIPport、および /metrics エンドポイントをクエリーし、以前に Pod で実行した curl コマンドと同じメトリクスがあるかどうかを確認します。

      1. 以下のコマンドを実行してサービス IP を見つけます。

        $ oc get service -n <target_namespace>
      2. /metrics エンドポイントをクエリーします。

        $ oc exec <sample_pod> -n <sample_namespace> -- curl <service_IP>:<port>/metrics

        以下の例では、有効なメトリクスが返されます。

        出力例

        % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                       Dload  Upload   Total   Spent    Left  Speed
        100   102  100   102    0     0  51000      0 --:--:-- --:--:-- --:--:--   99k
        # HELP version Version information about this binary
        # TYPE version gauge
        version{version="v0.1.0"} 1

    3. ラベルのマッチングを使用して、ServiceMonitor オブジェクトが必要なサービスを参照するように設定されていることを確認します。これを実行するには、oc get service 出力の Service オブジェクトを oc get servicemonitor 出力の ServiceMonitor オブジェクトと比較します。メトリックを表示するには、ラベルが一致している必要があります。

      たとえば、直前の手順の Service オブジェクトに app: prometheus-example-app ラベルがあり、ServiceMonitor オブジェクトに同じ app: prometheus-example-app 一致ラベルがある点に注意してください。

  5. すべて有効になっていても、メトリクスが利用できない場合は、サポートチームにお問い合わせください。