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

:NGINX Ingress Controllerのトレースを有効にする

最終更新日:Dec 30, 2024

コンテナサービスKubernetes版(ACK)クラスターにデプロイされたNGINX Ingress Controllerのトレースを有効にし、トレースデータをManaged Service for OpenTelemetryにインポートできます。その後、Managed Service for OpenTelemetryでトレースとトポロジーを表示して、NGINX Ingress Controllerに関連する問題をトラブルシューティングできます。このトピックでは、NGINX Ingress Controllerのトレースを有効にする方法について説明します。

前提条件

バージョンについて

トレースのサポートは、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

非サポート

サポート

手順

マネージドサービス for OpenTelemetry

ステップ1:エンドポイント情報の取得

  1. ARMSコンソールにログインします。左側のナビゲーションペインで、統合センターをクリックします。

  2. 統合センターページで、サーバーサイドアプリケーションセクションのOpenTelemetryカードをクリックします。

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

  4. エンドポイントを記録します。76.jpg

    説明

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

ステップ2:NGINX Ingress Controllerに対してManaged Service for OpenTelemetryを有効にする

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

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

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

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

    タイプ

    変数キー

    値/ValueFrom

    説明

    カスタム

    OTEL_EXPORTER_OTLP_HEADERS

    authentication=<認証トークン>

    ステップ1:エンドポイント情報の取得で取得した認証トークンを使用します。例:authentication=bfXXXXXXXe@7bXXXXXXX1_bXXXXXe@XXXXXXX1

    image

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

  5. 左側のナビゲーションペインで、構成> ConfigMapを選択します。

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

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

    項目

    説明

    enable-opentelemetry

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

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

    main-snippet

    -

    env OTEL_EXPORTER_OTLP_HEADERS;

    otel-service-name

    カスタムサービス名。

    例:nginx-ingress。

    otlp-collector-host

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

    ステップ1:エンドポイント情報の取得で取得した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:ARMSコンソールでトレースデータを表示する

  1. ARMSコンソールにログインします。左側のナビゲーションペインで、アプリケーションモニタリング > アプリケーションを選択します。

  2. アプリケーションページの上部ナビゲーションバーで、リージョンを選択し、nginx-ingressアプリケーションをクリックします。

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

    • 概要タブで、リクエスト数とエラー数を確認します。应用概览-中.jpg

    • トレースエクスプローラータブで、トレースリストと平均期間を表示します。调用链分析-中.jpg

    • トレースエクスプローラータブで、トレースIDをクリックしてトレースの詳細を表示します。trace详情-中.jpg

OpenTracing

ステップ1:エンドポイント情報の取得

  1. ARMSコンソールにログインします。左側のナビゲーションペインで、統合センターをクリックします。

  2. 統合センターページで、サーバーサイドアプリケーションセクションのZipkinカードをクリックします。

    説明

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

  3. Zipkinパネルで、データのレポート元のリージョンを選択します。

  4. エンドポイントを記録します。74.jpg

    説明

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

ステップ2:NGINX Ingress Controllerに対してManaged Service for OpenTelemetryを有効にする

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

  2. クラスターページで、管理するクラスターを見つけて、その名前をクリックします。左側のナビゲーションペインで、構成 > Configmapを選択します。

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

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

    編集パネルで、編集追加をクリックします。Zipkinコレクターホスト名前フィールドにステップ 1: エンドポイント情報を取得すると入力し、フィールドにで取得したエンドポイントを入力します。

    重要

    エンドポイントから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. トレースを有効にします。

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

    image

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

  1. ARMSコンソールにログインします。左側のナビゲーションペインで、アプリケーションモニタリング > アプリケーションを選択します。

  2. アプリケーションページの上部ナビゲーションバーで、リージョンを選択し、nginxアプリケーションをクリックします。

  3. 詳細ページの左側のナビゲーションペインで、インターフェースコールをクリックします。ページの右側で、トレースデータを表示します。

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

    • トレースタブをクリックして、アプリケーションの上位100件の時間を消費するトレースを表示します。詳細については、インターフェースコールを参照してください。调用链路

    • トレースタブで、トレースIDをクリックしてトレースの詳細を表示します。2.jpg

(オプション)マネージドサービス for OpenTelemetryがトレースデータを渡すために使用するプロトコルを変更する

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

  1. ステップ2.4:OTEL_EXPORTER_OTLP_HEADERS環境変数を追加するでOTEL_PROPAGATORS環境変数を追加します。次に、変更を保存し、nginx-ingress-controllerを再デプロイします。

    環境変数

    説明

    OTEL_PROPAGATORS

    tracecontext,baggage,b3,jaeger

    トレースデータを渡すために使用されるプロトコル。詳細については、トレースデータを渡すフォーマットを指定するを参照してください。

  2. ステップ2.7:nginx-configuration ConfigMapを変更するのmain-snippet構成を変更して、OTEL_PROPAGATORS環境変数を有効にします。

    構成名

    説明

    main-snippet

    env OTEL_EXPORTER_OTLP_HEADERS; env OTEL_PROPAGATORS

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

参考文献

  • Managed Service for OpenTelemetryの詳細については、マネージドサービス for OpenTelemetryとはを参照してください。

  • ACKの詳細については、ACKとはを参照してください。

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