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

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

最終更新日:Dec 10, 2024

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. 最初に OpenTelemetryコンソールのマネージドサービス。 左側のナビゲーションウィンドウで、[統合センター] をクリックします。

  2. [Open Source Frameworks] セクションで、[OpenTelemetry] カードをクリックします。

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

  4. gRPCを介したデータのインポートに使用されるエンドポイントを記録します。ot-新版-中文.jpg

    説明

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

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

  1. 最初に OpenTelemetryコンソールのマネージドサービス

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

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

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

    ot-旧版-中文.jpg

    説明

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

手順2: 有効化Managed Service for OpenTelemetryNGINX Ingressコントローラー

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

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

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

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

    タイプ

    可変キー

    値 /ValueFrom

    説明

    Custom

    OTEL_EXPORTER_OTLP_HEADERS

    authentication=<認証トークン>

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

    image

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

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

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

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

    名前

    説明

    enable-opentelemetry

    OpenTelemetryのマネージドサービスを有効にするかどうかを指定します。

    true: OpenTelemetryのマネージドサービスを有効にします。

    main-スニペット

    -

    env OTEL_EXPORTER_OTLP_HEADERS;

    ホテルサービス名

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

    例: nginx-ingress。

    otlp-collector-host

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

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

    otlp-collector-port

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

    8090

    opentelemetry-trust-incoming-span

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

    他のサービスまたはシステムの呼び出しトレースを信頼するには、trueの値を設定します。

    opentelemetry-operation-name

    コールトレースのスパン形式。

    HTTP $request_method $service_name $uri

手順3: Managed Service for OpenTelemetryコンソールでのトレースデータの表示

  1. 最初に OpenTelemetryのマネージドサービスコンソール

  2. 左側のナビゲーションウィンドウで、アプリケーション.

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

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

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

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

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

OpenTracing

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

OpenTelemetryコンソールのマネージドサービスの新しいバージョン

  1. 最初に OpenTelemetryコンソールのマネージドサービス。 左側のナビゲーションウィンドウで、[統合センター] をクリックします。

  2. [Open Source Frameworks] セクションで、[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. 最初に OpenTelemetryコンソールのマネージドサービス

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

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

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

    zipkin-旧版-中文.jpg

    説明

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

手順2: 有効化Managed Service for OpenTelemetryNGINX Ingressコントローラー

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

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

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

  4. トレースデータを収集するクライアントとしてZipkinを設定します。

    [編集] パネルで、[追加] をクリックします。 [名前] フィールドにzipkin-collector-hostと入力し、[値] フィールドにステップ1: 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?

  5. トレースを有効にします。

    [追加] をクリックします。 [名前] フィールドにenable-opentracingと入力し、[値] フィールドにtrueと入力します。 次に、[OK] をクリックします。

    image

手順3: Managed Service for OpenTelemetryコンソールでのトレースデータの表示

  1. 最初に 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、手荷物、b3、jaeger

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

  2. ステップ2.7: nginx-configuration ConfigMapのメインスニペット設定を変更して、OTEL_PROPAGATORS環境変数を有効にします。

    名前

    説明

    main-スニペット

    env OTEL_EXPORTER_OTLP_HEADERS; env OTEL_PROPAGATORS;

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

参照

  • Managed Service for OpenTelemetryの詳細については、「OpenTelemetry向けマネージドサービスの概要」をご参照ください。

  • ACKの詳細については、「」をご参照ください。ACKとは何ですか?

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