すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:NGINX Ingress コントローラーのトレースを有効にする

最終更新日:May 24, 2025

Container Service for Kubernetes (ACK) では、NGINX Ingress コントローラーのトレースを有効にし、トレースデータを Managed Service for OpenTelemetry にインポートできます。Managed Service for OpenTelemetry は、トレースデータを永続化し、リアルタイムでトレースデータを集計および計算して、トレースの詳細とリアルタイムトポロジを含むモニタリングデータを生成します。 モニタリングデータに基づいて、問題のトラブルシューティングと診断を行うことができます。

前提条件

バージョン説明

トレースのサポートは、NGINX Ingress コントローラー のバージョンによって異なります。 次の表は、トレースをサポートする NGINX Ingress コントローラーのバージョンとサポートしないバージョンを示しています。

NGINX Ingress コントローラーのバージョン

OpenTelemetry

OpenTracing

≥ 1.10.2-aliyun.1

サポート対象

サポート対象外

v1.9.3-aliyun.1

サポート対象

サポート対象

v1.8.2-aliyun.1

サポート対象

サポート対象

< v1.8.2-aliyun.1

サポート対象外

サポート対象

手順

クラスタにインストールされている NGINX Ingress コントローラーのバージョンに基づいて、次の手順を実行します。

OpenTelemetry

手順 1:Managed Service for OpenTelemetry からエンドポイントを取得する

可観測性追跡 OpenTelemetry 版コンソールの新しいバージョン

  1. にログインします。 左側のナビゲーションウィンドウで、[統合センター] をクリックします。

  2. [オープンソースフレームワーク] セクションで、[OpenTelemetry] カードをクリックします。

  3. [OpenTelemetry] パネルで、トレースデータをインポートするリージョンを選択します。

  4. gRPC 経由でデータをインポートするために使用するエンドポイントを記録します。ot-新版-中文.jpg

    説明

    この例では、NGINX Ingress コントローラーは Alibaba Cloud にデプロイされ、Managed Service for OpenTelemetry エージェントと同じリージョンにあります。 そのため、VPC エンドポイントを使用することをお勧めします。 NGINX Ingress コントローラーと 可観測性追跡 OpenTelemetry 版 エージェントが異なるリージョンにデプロイされている場合は、パブリックエンドポイントを使用します。

可観測性追跡 OpenTelemetry 版コンソールの以前のバージョン

  1. 可観測性追跡 OpenTelemetry 版コンソール可観測性追跡 OpenTelemetry 版コンソールACK コンソール にログインします。

  2. 左側のナビゲーションウィンドウで、[クラスタ構成] をクリックします。 表示されるページの右側にある [アクセスポイント情報] タブをクリックします。

  3. ページの上部で、トレースデータをインポートするリージョンを選択します。

  4. [トークンを表示] セクションの [クラスタ情報] を選択し、[クライアント] セクションの [OpenTelemetry] をクリックします。 次に、gRPC 経由でデータをインポートするために使用するエンドポイントを記録します。

    ot-旧版-中文.jpg

    説明

    この例では、NGINX Ingress コントローラーは Alibaba Cloud にデプロイされ、Managed Service for OpenTelemetry エージェントと同じリージョンにあります。 そのため、VPC エンドポイントを使用することをお勧めします。 NGINX Ingress コントローラーと 可観測性追跡 OpenTelemetry 版 エージェントが異なるリージョンにデプロイされている場合は、パブリックエンドポイントを使用します。

手順 2: 有効化するManaged Service for OpenTelemetry

  1. にログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター] ページで、管理するクラスターを見つけ、その名前をクリックします。左側のペインで、[ワークロード] > [デプロイメント] を選択します。

  3. ページの上部にある名前空間ドロップダウンリストから kube-system を選択します。次に、検索ボックスに nginx-ingress-controller と入力し、検索アイコンをクリックします。 nginx-ingress-controller を見つけ、[編集] 列の [編集] をクリックします。

  4. [編集] ページの上部で、[nginx-ingress-controller] コンテナーを選択します。[環境] タブで、[追加] をクリックして、次の環境変数を追加します。

    種類

    変数キー

    値/ValueFrom

    説明

    カスタム

    OTEL_EXPORTER_OTLP_HEADERS

    authentication=<Authentication token>

    ステップ 1: Managed Service for OpenTelemetry からエンドポイントを取得する で取得した認証トークンを指定します。例: authentication=bfXXXXXXXe@7bXXXXXXX1_bXXXXXe@XXXXXXX1

    image

    環境変数を追加した後、[編集] ページの右側にある [更新] をクリックします。表示されるメッセージで、[確認] をクリックします。

  5. 左側のナビゲーションウィンドウで、[構成] > [ConfigMap] を選択します。

  6. ConfigMap ページの上部にある名前空間ドロップダウンリストから kube-system を選択します。次に、名前検索ボックスに nginx-configuration と入力し、検索アイコンをクリックします。 nginx-configuration を見つけ、[アクション] 列の [編集] をクリックします。

  7. [編集] パネルで、[追加] をクリックして次の構成を追加し、[OK] をクリックします。

    名前

    説明

    有効な値

    enable-opentelemetry

    Managed Service for OpenTelemetry を有効にするかどうかを指定します。

    • true: Managed Service for OpenTelemetry を有効にします。

    • false: Managed Service for OpenTelemetry を有効にしません。

    true

    main-snippet

    -

    env OTEL_EXPORTER_OTLP_HEADERS;

    env OTEL_EXPORTER_OTLP_HEADERS;

    otel-service-name

    サービス名を入力します。

    カスタム値を構成します。

    nginx-ingress

    otlp-collector-host

    gRPC 経由でデータをインポートするために使用するドメイン名。

    ステップ 1: Managed Service for OpenTelemetry からエンドポイントを取得する で取得した VPC エンドポイントから http:// とポート番号を削除します。例: tracing-analysis-XX-XX-XXXXX.aliyuncs.com。

    tracing-analysis-XX-XX-XXXXX.aliyuncs.com

    otlp-collector-port

    gRPC 経由でデータをインポートするために使用するポート。

    ビジネス要件に基づいて値を入力します。

    8090

    opentelemetry-trust-incoming-span

    他のサービスまたはシステムの呼び出しトレースを信頼するかどうかを指定します。

    • true: 他のサービスまたはシステムの呼び出しトレースを信頼します。

    • false: 他のサービスまたはシステムの呼び出しトレースを信頼しません。

    true

    opentelemetry-operation-name

    呼び出しトレースのスパン形式。

    HTTP $request_method $service_name $uri

    HTTP $request_method $service_name $uri

    otel-sampler

    サンプリングルール。

    詳細については、「opentelemetry」をご参照ください。

    TraceIdRatioBased

    otel-sampler-ratio

    サンプリングレート。

    有効な値: 0 ~ 1。値は小数点以下 2 桁まで正確にすることができます。値 0 は、データが収集されないことを示します。値 1 は、すべてのデータが収集されることを示します。詳細については、「opentelemetry」をご参照ください。

    0.1

    otel-sampler-parent-based

    アップストリームのサンプリング済みフラグを継承するかどうかを指定します。

    • false: アップストリームのサンプリング済みフラグを継承しません。これはデフォルト値です。この場合、otel-sampler と otel-sampler-ratio が有効になります。

    • true: アップストリームのサンプリング済みフラグを継承します。この場合、otel-sampler と otel-sampler-ratio は有効にならず、アップストリームのサンプリング済みフラグが再利用されます。

    詳細については、「opentelemetry」をご参照ください。

    false

ステップ 3: Managed Service for OpenTelemetry コンソールでトレースデータを表示する

  1. Managed Service for OpenTelemetry コンソールにログオンします。

  2. 左側のナビゲーションウィンドウで、[アプリケーション] をクリックします。

  3. [アプリケーション] ページの上部で、トレースデータをインポートするリージョンを選択します。次に、[nginx-ingress] をクリックします。

  4. アプリケーション詳細ページで、トレースデータを表示できます。

    • [アプリケーション概要] タブで、リクエスト数とエラー数を確認できます。应用概览-中.jpg

    • [トレース分析] タブで、トレースリストと平均期間を表示できます。调用链分析-中.jpg

    • [トレース分析] タブで、トレース ID をクリックしてトレースの詳細を表示できます。trace详情-中.jpg

OpenTracing

ステップ 1:Managed Service for OpenTelemetry からエンドポイントを取得する

Managed Service for OpenTelemetry コンソールの新しいバージョン

  1. Managed Service for OpenTelemetry コンソール にログインします。左側のナビゲーションウィンドウで、[統合センター] をクリックします。

  2. [オープンソースフレームワーク] セクションで、[Zipkin] カードをクリックします。

    説明

    データ収集に使用するクライアントのエンドポイントを取得します。この例では、Zipkin クライアントを使用します。

  3. [Zipkin] パネルで、トレースデータをインポートするリージョンを選択します。

  4. エンドポイントを記録します。zipkin-新版-中.jpg

    説明

    この例では、NGINX Ingress コントローラーは Alibaba Cloud にデプロイされており、Managed Service for OpenTelemetry エージェントと同じリージョンにあります。そのため、VPC エンドポイントを使用することをお勧めします。NGINX Ingress コントローラーと Managed Service for OpenTelemetry エージェントが異なるリージョンにデプロイされている場合は、パブリックエンドポイントを使用します。

Managed Service for OpenTelemetry コンソールの以前のバージョン

  1. Managed Service for OpenTelemetry コンソール にログインします。

  2. 左側のナビゲーションウィンドウで、[クラスタ構成] をクリックします。表示されるページで、[アクセスポイント情報] タブをクリックします。

  3. ページの上部で、トレースデータをインポートするリージョンを選択します。

  4. [クラスタ情報] セクションで [トークンの表示] を選択し、[クライアント] セクションで [Zipkin] をクリックします。次に、エンドポイントを記録します。

    zipkin-旧版-中文.jpg

    説明

    この例では、NGINX Ingress コントローラーは Alibaba Cloud にデプロイされており、Managed Service for OpenTelemetry エージェントと同じリージョンにあります。そのため、VPC エンドポイントを使用することをお勧めします。NGINX Ingress コントローラーと Managed Service for OpenTelemetry エージェントが異なるリージョンにデプロイされている場合は、パブリックエンドポイントを使用します。

ステップ 2:NGINX Ingress コントローラーに対して Managed Service for OpenTelemetry を有効にする

  1. ACK コンソール にログインします。左側のナビゲーションウィンドウで、[クラスタ] をクリックします。

  2. [クラスタ] ページで、変更するクラスタの名前をクリックします。左側のナビゲーションウィンドウで、[構成] > [ConfigMap] を選択します。

  3. [ConfigMap] ページの上部で、[名前空間] ドロップダウンリストから [kube-system] を選択します。次に、[名前] 検索ボックスに「nginx-configuration」と入力し、検索アイコンをクリックします。[nginx-configuration] を見つけ、[アクション] 列の [編集] をクリックします。

  4. [編集] パネルで、[追加] をクリックして次の構成を追加し、[OK] をクリックします。

    名前

    説明

    有効な値

    enable-opentracing

    トレース分析を有効にするかどうかを指定します。

    • true:トレース分析を有効にします。

    • false:トレース分析を有効にしません。

    true

    zipkin-service-name

    サービス名。

    カスタム値を構成します。

    nginx-ingress

    zipkin-collector-host

    gRPC 経由でデータをインポートするために使用されるドメイン名。

    ステップ 1: Managed Service for OpenTelemetry からエンドポイントを取得する で取得したエンドポイント情報を変更します。http:// を削除し、最後に疑問符を追加します。例:

    • 元のエンドポイント情報は http://tracing-analysis-dc-hz-internal.aliyuncs.com/adapt_******_******/api/v1/spans です。

    • 変更後の値は tracing-analysis-dc-hz-internal.aliyuncs.com/adapt_******_******/api/v1/spans? です。

    tracing-analysis-dc-hz-internal.aliyuncs.com/adapt_******_******/api/v1/spans?

    opentracing-trust-incoming-span

    他のサービスまたはシステムの呼び出しトレースを信頼するかどうかを指定します。

    • true:他のサービスまたはシステムの呼び出しトレースを信頼します。

    • false:他のサービスまたはシステムの呼び出しトレースを信頼しません。

    true

    zipkin-sample-rate

    サンプリングレート。

    有効な値: 0 ~ 1 。値は小数点以下 2 桁まで正確にすることができます。値 0 は、データが収集されないことを示します。値 1 は、すべてのデータが収集されることを示します。

    0.1

ステップ 3:Managed Service for OpenTelemetry コンソールでトレースデータを表示する

  1. Managed Service for OpenTelemetry コンソール にログインします。

  2. 左側のナビゲーションウィンドウで、[アプリケーション] をクリックします。

  3. [アプリケーション] ページの上部で、トレースデータをインポートするリージョンを選択します。次に、[nginx] をクリックします。

  4. 詳細ページの左側のナビゲーションウィンドウで、[インターフェース呼び出し] をクリックします。ページの右側で、トレースデータを表示できます。

    • [概要] タブで、トレーストポロジーを表示できます。3.jpg

    • [トレース] タブをクリックすると、アプリケーションの上位 100 件の処理時間のかかるトレースを表示できます。詳細については、「インターフェース呼び出し」をご参照ください。调用链路

    • [トレース] タブで、トレース ID をクリックすると、トレースの詳細を表示できます。2.jpg

(オプション) Managed Service for OpenTelemetry がトレースデータを渡すために使用するプロトコルを変更する

Managed Service for OpenTelemetry を使用して NGINX Ingress コントローラーのトレースを有効にすると、Managed Service for OpenTelemetry は W3C トレースコンテキスト仕様でトレースデータをダウンストリーム サービスに渡します。フロントエンド アプリケーションとバックエンド アプリケーションが Jaeger や Zipkin などの他のプロトコルを使用している場合は、Managed Service for OpenTelemetry がトレースデータを渡すために使用するプロトコルを変更する必要があります。こうすることで、フロントエンド アプリケーション、NGINX Ingress、およびバックエンド アプリケーションのトレースを合理化できます。次の例では、Managed Service for OpenTelemetry がトレースデータを渡すために使用するプロトコルを変更する方法について説明します。

  1. 手順 2 の 4 番目のサブステップで、OTEL_PROPAGATORS 環境変数を追加します。その後、変更を保存し、nginx-ingress-controller を再デプロイします。

    変数キー

    説明

    OTEL_PROPAGATORS

    tracecontext,baggage,b3,jaeger

    トレースデータを渡すために使用されるプロトコル。詳細については、「トレースデータを渡す形式を指定する」をご参照ください。

  2. 手順 2 の 7 番目のサブステップで main-snippet 構成を変更し、OTEL_PROPAGATORS 環境変数を有効にします。

    名前

    説明

    main-snippet

    env OTEL_EXPORTER_OTLP_HEADERS; env OTEL_PROPAGATORS;

    OTEL_PROPAGATORS 環境変数をロードします。

参照資料

  • Managed Service for OpenTelemetry の詳細については、「Managed Service for OpenTelemetry とは」をご参照ください。

  • ACK の詳細については、「Container Service for Kubernetes とは」をご参照ください。

  • Zipkin、Jaeger、SkyWalking など、異なるクライアントを使用してトレースデータを収集するには、nginx-configuration ConfigMap で異なるパラメーターを構成する必要があります。Managed Service for OpenTelemetry にデータをインポートする方法の詳細については、「準備」をご参照ください。