コンテナサービスKubernetes版(ACK)クラスターにデプロイされたNGINX Ingress Controllerのトレースを有効にし、トレースデータをManaged Service for OpenTelemetryにインポートできます。その後、Managed Service for OpenTelemetryでトレースとトポロジーを表示して、NGINX Ingress Controllerに関連する問題をトラブルシューティングできます。このトピックでは、NGINX Ingress Controllerのトレースを有効にする方法について説明します。
前提条件
Managed Service for OpenTelemetry がアクティブ化されており、Managed Service for OpenTelemetry に権限が付与されている。
NGINX Ingress コントローラーがインストールされています。詳細については、「NGINX Ingress コントローラーを管理する」をご参照ください。
バージョンの説明
トレースのサポートは、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:エンドポイント情報の取得
ARMSコンソールにログインします。左側のナビゲーションペインで、統合センターをクリックします。
統合センターページで、サーバーサイドアプリケーションセクションのOpenTelemetryカードをクリックします。
OpenTelemetryパネルで、データのレポート元のリージョンを選択します。
エンドポイントを記録します。
説明この例では、NGINX Ingress ControllerはManaged Service for OpenTelemetryエージェントと同じリージョンにデプロイされているため、仮想プライベートクラウド(VPC)エンドポイントを使用することをお勧めします。NGINX Ingress Controllerとエージェントが異なるリージョンにデプロイされている場合は、パブリックエンドポイントを使用してください。
ステップ2:NGINX Ingress Controllerに対してManaged Service for OpenTelemetryを有効にする
ACK コンソール にログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターを見つけ、その名前をクリックします。左側のウィンドウで、 を選択します。
ページの上部にある[名前空間]ドロップダウンリストからkube-systemを選択します。次に、検索ボックスにnginx-ingress-controllerと入力し、検索アイコンをクリックします。NGINX Ingress Controllerを見つけて、[アクション]列の編集をクリックします。
編集ページの上部で、nginx-ingress-controllerコンテナーを選択します。環境タブで、追加をクリックして、次の環境変数を追加します。
タイプ
変数キー
値/ValueFrom
説明
カスタム
OTEL_EXPORTER_OTLP_HEADERS
authentication=<認証トークン>
ステップ1:エンドポイント情報の取得で取得した認証トークンを使用します。例:
authentication=bfXXXXXXXe@7bXXXXXXX1_bXXXXXe@XXXXXXX1
。環境変数を追加した後、編集ページの右側にある更新をクリックします。表示されるメッセージで、確認をクリックします。
左側のナビゲーションペインで、構成> ConfigMapを選択します。
ConfigMapページの上部にある[名前空間]ドロップダウンリストからkube-systemを選択します。次に、[名前]検索ボックスにnginx-configurationと入力し、検索アイコンをクリックします。nginx-configurationを見つけて、[アクション]列の編集をクリックします。アクション
編集パネルで、追加をクリックして次の構成を追加し、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
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
true
ステップ3:ARMSコンソールでトレースデータを表示する
ARMSコンソールにログインします。左側のナビゲーションペインで、 を選択します。
アプリケーションページの上部ナビゲーションバーで、リージョンを選択し、nginx-ingressアプリケーションをクリックします。
アプリケーション詳細ページで、トレースデータを表示します。
概要タブで、リクエスト数とエラー数を確認します。
トレースエクスプローラータブで、トレースリストと平均期間を表示します。
トレースエクスプローラータブで、トレースIDをクリックしてトレースの詳細を表示します。
OpenTracing
ステップ1:エンドポイント情報の取得
ARMSコンソールにログインします。左側のナビゲーションペインで、統合センターをクリックします。
統合センターページで、サーバーサイドアプリケーションセクションのZipkinカードをクリックします。
説明データを収集するために使用されるクライアントのエンドポイントを取得します。この例では、Zipkinクライアントが使用されます。
Zipkinパネルで、データのレポート元のリージョンを選択します。
エンドポイントを記録します。
説明この例では、NGINX Ingress ControllerはManaged Service for OpenTelemetryエージェントと同じリージョンにデプロイされているため、仮想プライベートクラウド(VPC)エンドポイントを使用することをお勧めします。NGINX Ingress Controllerとエージェントが異なるリージョンにデプロイされている場合は、パブリックエンドポイントを使用してください。
ステップ2:NGINX Ingress Controllerに対してManaged Service for OpenTelemetryを有効にする
ACK コンソール にログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、変更するクラスターの名前をクリックします。左側のナビゲーションウィンドウで、 を選択します。
ConfigMapページの上部にある[名前空間]ドロップダウンリストからkube-systemを選択します。次に、[名前]検索ボックスにnginx-configurationと入力し、検索アイコンをクリックします。nginx-configurationを見つけて、アクション列の編集をクリックします。
トレースデータを収集するクライアントとして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?
トレースを有効にします。
追加をクリックします。OpenTracing を有効にする名前フィールドにenable-opentracingと入力し、値フィールドにtrueと入力します。次に、OKをクリックします。
手順 3:ARMS コンソールでトレースデータを表示する
ARMSコンソールにログインします。左側のナビゲーションペインで、 を選択します。
アプリケーションページの上部ナビゲーションバーで、リージョンを選択し、nginxアプリケーションをクリックします。
詳細ページの左側のナビゲーションペインで、インターフェースコールをクリックします。ページの右側で、トレースデータを表示します。
概要タブで、トレーストポロジーを表示します。
トレースタブをクリックして、アプリケーションの上位100件の時間を消費するトレースを表示します。詳細については、インターフェースコールを参照してください。
トレースタブで、トレースIDをクリックしてトレースの詳細を表示します。
(オプション)マネージドサービス for OpenTelemetryがトレースデータを渡すために使用するプロトコルを変更する
マネージドサービス for OpenTelemetryを使用してNGINX Ingressコントローラーのトレースを有効にする場合、マネージドサービス for OpenTelemetryはW3Cトレースコンテキスト仕様でトレースデータをダウンストリームサービスに渡します。フロントエンドアプリケーションとバックエンドアプリケーションがJaegerやZipkinなどの他のプロトコルを使用している場合は、マネージドサービス for OpenTelemetryがトレースデータを渡すために使用するプロトコルを変更する必要があります。これにより、フロントエンドアプリケーション、NGINX Ingress、およびバックエンドアプリケーションのトレースを合理化できます。次の例では、マネージドサービス for OpenTelemetryがトレースデータを渡すために使用するプロトコルを変更する方法について説明します。
ステップ2.4:OTEL_EXPORTER_OTLP_HEADERS環境変数を追加するでOTEL_PROPAGATORS環境変数を追加します。次に、変更を保存し、nginx-ingress-controllerを再デプロイします。
環境変数
値
説明
OTEL_PROPAGATORS
tracecontext,baggage,b3,jaeger
トレースデータを渡すために使用されるプロトコル。詳細については、トレースデータを渡すフォーマットを指定するを参照してください。
ステップ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にデータをインポートする方法の詳細については、Managed Service for OpenTelemetry を使用する準備を参照してください。