Menu Close

1.5. OpenShift インスタンスへの Jaeger のインストール

3scale API プロバイダーは、Jaeger と共に OpenTracing を使用して、API への呼び出しのトレースおよびトラブルシューティングを行うことができます。そのためには、3scale を実行中の OpenShift インスタンスにJaeger をインストールします。

警告

Jaeger はサードパーティーコンポーネントであり、APIcast と共に使用する場合を除き 3scale はサポートを提供しません。以下の手順は参考例としてのみ提供され、実稼働環境での使用には適しません。

手順

  1. 現在の namespace に Jaeger オールインワンテンプレートをインストールします。

    oc process -f https://raw.githubusercontent.com/jaegertracing/jaeger-openshift/master/all-in-one/jaeger-all-in-one-template.yml | oc create -f -
  2. 以下の内容で Jaeger 設定ファイル jaeger_config.json を作成します。

    {
        "service_name": "apicast",
        "disabled": false,
        "sampler": {
          "type": "const",
          "param": 1
        },
        "reporter": {
          "queueSize": 100,
          "bufferFlushInterval": 10,
          "logSpans": false,
          "localAgentHostPort": "jaeger-agent:6831"
        },
        "headers": {
          "jaegerDebugHeader": "debug-id",
          "jaegerBaggageHeader": "baggage",
          "TraceContextHeaderName": "uber-trace-id",
          "traceBaggageHeaderPrefix": "testctx-"
        },
        "baggage_restrictions": {
            "denyBaggageOnInitializationFailure": false,
            "hostPort": "127.0.0.1:5778",
            "refreshInterval": 60
        }
     }
    • sampler 定数を 1 に設定すると、すべてのリクエストがサンプリングされます。
    • reporter の場所およびキューサイズは必須です。
    • リクエストを追跡するためには、headers セクションの TraceContextHeaderName エントリーは必須です。
  3. Jaeger 設定ファイルから ConfigMap を作成し、それを APIcast にマウントします。

    oc create configmap jaeger-config --from-file=jaeger_config.json
    oc set volumes dc/apicast --add -m /tmp/jaeger/ --configmap-name jaeger-config
  4. 前のステップで追加した設定で、OpenTracing および Jaeger を有効にします。

    oc set env deploymentConfig/apicast OPENTRACING_TRACER=jaeger OPENTRACING_CONFIG=/tmp/jaeger/jaeger_config.json
  5. Jaeger インターフェースが動作している URL を確認します。

    oc get route
    (…) jaeger-query-myproject.127.0.0.1.nip.io
  6. 前のステップで確認した URL から Jaeger インターフェースを開きます。Openshift のヘルスチェックから読み込まれているデータが表示されます。
  7. リクエストのトレースをすべて表示できるように、OpenTracing および Jaeger のサポートをバックエンド API に追加します。この操作は、使用されるフレームワークおよび言語に応じてバックエンドごとに異なります。例として「Using OpenTracing with Jaeger to collect Application Metrics in Kubernetes」を参照してください。