Container Service for Kubernetes (ACK) では、NGINX Ingress コントローラーのトレースを有効にし、トレースデータをManaged Service for OpenTelemetryに送信できます。Managed Service for OpenTelemetryは、このトレースデータをリアルタイムで集約、処理、保存します。このサービスは、詳細なトレースやリアルタイムトポロジーマップなどのモニタリングデータを生成し、NGINX Ingress コントローラーの問題のトラブルシューティングと診断に役立てます。
Ingress-NGINX オープンソースプロジェクトは、2026 年 3 月以降はメンテナンスされなくなります。このため、Container Service for Kubernetes も NGINX Ingress コントローラーのメンテナンスを終了します。続行する前にリスクをご理解ください。詳細については、「NGINX Ingress コントローラーコンポーネントのメンテナンス終了に関する製品発表」をご参照ください。
前提条件
-
NGINX Ingress コントローラーがインストールされていること。詳細については、「NGINX Ingress コントローラーの管理」をご参照ください。
バージョンの互換性
トレースのサポートは、NGINX Ingress コントローラーコンポーネントのバージョンによって異なるため、ご利用のバージョンに適した設定方法を選択する必要があります。
|
NGINX Ingress コントローラーのバージョン |
OpenTelemetry |
OpenTracing |
|
≥ v1.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 向けマネージドサービスコンソールにログインします。左側のナビゲーションウィンドウで、アクセスセンター をクリックします。
-
オープンソースフレームワーク セクションで、OpenTelemetry カードをクリックします。
-
表示される [OpenTelemetry] パネルで、データをレポートするリージョンを選択します。
-
gRPC レポート方法のエンドポイントを記録します。[接続方法] を [Alibaba Cloud 内部ネットワーク] に、[レポート方法] を [gRPC] に設定します。[gRPC 経由でのデータレポート] エリアで、Alibaba Cloud VPC ネットワークエンドポイント (例:
http://tracing-analysis-dc-hz-internal.aliyuncs.com:8090) と [認証トークン] を取得します。Golang 言語を使用してデータをレポートする場合は、エンドポイントからhttp://を削除します。説明NGINX Ingress コントローラーが Managed Service for OpenTelemetryのインテグレーションと同じ Alibaba Cloud リージョンにデプロイされている場合は、VPC エンドポイントを使用します。それ以外の場合は、パブリックエンドポイントを使用します。
以前のコンソール
-
OpenTelemetry 向けマネージドサービスコンソールにログインします。
-
左側のナビゲーションウィンドウで、クラスター設定 をクリックします。表示されたページで、AccessPointFeature タブをクリックします。
-
ページの上部で、接続するリージョンを選択します。
-
クラスター情報 セクションで、[トークンを表示] スイッチをオンにします。[クライアント] セクションで [OpenTelemetry] をクリックし、gRPC レポート方法のエンドポイントを記録します。
gRPC レポート方法の場合、Alibaba Cloud VPC ネットワークエンドポイントは
http://tracing-analysis-dc-hz-internal.aliyuncs.com:8090です。認証トークンは、エンドポイント情報に表示されるトークンの値です。説明NGINX Ingress コントローラーが Managed Service for OpenTelemetryのインテグレーションと同じ Alibaba Cloud リージョンにデプロイされている場合は、VPC エンドポイントを使用します。それ以外の場合は、パブリックエンドポイントを使用します。
ステップ 2:Managed Service for OpenTelemetryの NGINX Ingress コントローラーの設定
-
ACK コンソールにログインします。左側のナビゲーションウィンドウで、クラスターリスト をクリックします。
-
クラスターリスト ページで、クラスターの名前をクリックします。左側のナビゲーションウィンドウで、 をクリックします。
-
[デプロイメント] ページで、[名前空間] を kube-system に設定します。
nginx-ingress-controllerを検索し、[編集] をクリックします。 -
編集 ページの上部で [nginx-ingress-controller] コンテナを選択し、環境変数 タブで Add をクリックして、次の環境変数を設定します。
タイプ
変数キー
値/値の取得元
説明
カスタム
OTEL_EXPORTER_OTLP_HEADERS
authentication=<authentication token>ステップ 1:エンドポイントの取得で取得した認証トークンを使用します。例:
authentication=bfXXXXXXXe@7bXXXXXXX1_bXXXXXe@XXXXXXX1変数を追加した後、更新 ページの右側のパネルで 編集 をクリックします。表示されるダイアログボックスで、OK をクリックします。
-
左側のナビゲーションウィンドウで、 を選択します。
-
構成 ページで、[名前空間] を kube-system に設定します。
nginx-configurationを検索し、nginx-configuration ConfigMap の 編集 列の 操作 をクリックします。 -
編集 パネルで 追加 をクリックし、次の設定を追加してから OK をクリックします。
パラメーター
説明
値
例
enable-opentelemetry
OpenTelemetry トレースを有効にします。
-
true:トレースを有効にします。
-
false:トレースを無効にします。
truemain-snippet
-
env OTEL_EXPORTER_OTLP_HEADERS;env OTEL_EXPORTER_OTLP_HEADERS;otel-service-name
サービス名。
カスタム。
nginx-ingress
otlp-collector-host
gRPC レポートエンドポイントのドメイン名。
ステップ 1:エンドポイントの取得で取得した VPC エンドポイントを使用します。http:// プレフィックスとポート番号を削除します。例:
tracing-analysis-XX-XX-XXXXX.aliyuncs.comtracing-analysis-XX-XX-XXXXX.aliyuncs.comotlp-collector-port
gRPC レポートエンドポイントのポート。
実際の値を入力します。
8090opentelemetry-trust-incoming-span
他のサービスからの受信トレースを信頼するかどうかを指定します。
-
true:信頼が有効になります。
-
false:信頼が無効になります。
trueopentelemetry-operation-name
トレーススパンのフォーマット。
HTTP $request_method $service_name $uriHTTP $request_method $service_name $uriotel-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でのトレースデータの表示
-
OpenTelemetry 向けマネージドサービスコンソールにログインします。
-
左側のナビゲーションウィンドウで、アプリケーションリスト をクリックします。
-
アプリケーションリスト ページの上部でリージョンを選択し、[nginx-ingress] アプリケーション名をクリックします。
-
-
アプリケーション概要 タブで、リクエスト数やエラー数などのメトリックを確認できます。

-
呼び出しチェーン分析 タブでは、呼び出し数、エラー数、平均持続時間などのチャート、およびトレースリストを表示できます。リストには、TraceId、インターフェイス名、アプリケーション名、持続時間、ステータス、開始時刻、ホストアドレスなどのフィールドが含まれます。
-
呼び出しチェーン分析 タブで、トレース ID をクリックしてトレース詳細を表示します。
-
OpenTracing
ステップ 1:Managed Service for OpenTelemetryのエンドポイントの取得
新しいコンソール
-
OpenTelemetry 向けマネージドサービスコンソールにログインします。左側のナビゲーションウィンドウで、アクセスセンター をクリックします。
-
オープンソースフレームワーク セクションで、[Zipkin] カードをクリックします。
説明取得するエンドポイントは、使用するクライアントによって異なります。このトピックでは、Zipkin を例として使用します。
-
表示される [Zipkin] パネルで、データをレポートするリージョンを選択します。
-
エンドポイント情報を記録します。
説明NGINX Ingress コントローラーが Managed Service for OpenTelemetryのインテグレーションと同じ Alibaba Cloud リージョンにデプロイされている場合は、VPC エンドポイントを使用します。それ以外の場合は、パブリックエンドポイントを使用します。
以前のコンソール
-
OpenTelemetry 向けマネージドサービスコンソールにログインします。
-
左側のナビゲーションウィンドウで、クラスター設定 をクリックします。表示されたページで、AccessPointFeature タブをクリックします。
-
ページの上部で、接続するリージョンを選択します。
-
クラスター情報 セクションで、[トークンを表示] スイッチをオンにします。[クライアント] セクションで [Zipkin] をクリックし、エンドポイント情報を記録します。
[Zipkin] タブには、中国 (杭州) リージョンのエンドポイント情報を示すテーブルが表示されます。テーブルには v2 エンドポイントと v1 エンドポイントが含まれ、各バージョンにはパブリックエンドポイント URL と Alibaba Cloud VPC ネットワークエンドポイント URL が提供されます。パスが
/api/v1/spansで終わる v1 バージョンの [Alibaba Cloud VPC ネットワークエンドポイント] アドレスを記録します。ほとんどの場合、v2 インターフェイスを選択します。Istio や Molten などの特定のシナリオでは、v1 インターフェイスを選択します。Sleuth コンポーネントを使用する場合、baseUrl には/api/v2/spansは含まれません。説明NGINX Ingress コントローラーが Managed Service for OpenTelemetryのインテグレーションと同じ Alibaba Cloud リージョンにデプロイされている場合は、VPC エンドポイントを使用します。それ以外の場合は、パブリックエンドポイントを使用します。
ステップ 2:Managed Service for OpenTelemetryの NGINX Ingress コントローラーの設定
-
ACK コンソールにログインします。左側のナビゲーションウィンドウで、クラスターリスト をクリックします。
-
クラスターリスト ページで、クラスターの名前をクリックします。左側のナビゲーションウィンドウで、 をクリックします。
-
構成 ページで、[名前空間] を kube-system に設定します。
nginx-configurationを検索し、nginx-configurationConfigMap の 編集 列の 操作 をクリックします。 -
編集 パネルで 追加 をクリックし、次の設定を追加してから [OK] をクリックします。
パラメーター
説明
値
例
enable-opentracing
トレースを有効にするかどうかを指定します。
-
true:トレースを有効にします。
-
false:トレースを無効にします。
true
zipkin-service-name
サービス名。
カスタム。
nginx-ingress
zipkin-collector-host
レポートエンドポイントのドメイン名。
ステップ 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?
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でのトレースデータの表示
-
OpenTelemetry 向けマネージドサービスコンソールにログインします。
-
左側のナビゲーションウィンドウで、アプリケーションリスト をクリックします。
-
アプリケーションリスト ページの上部でリージョンを選択し、[nginx] アプリケーション名をクリックします。
-
アプリケーション詳細ページの左側のナビゲーションウィンドウで、インターフェースの呼び出し をクリックします。右側のエリアで、トレース情報を表示します。
-
概要 タブには、トレースポロジが表示されます。
-
[トレース] タブをクリックすると、アプリケーションの持続時間が最も長いトレースが最大 100 件表示されます。トレースデータの詳細については、「インターフェイス呼び出し」をご参照ください。トレースリストには、[生成時刻]、[スパン名]、[ホスト/IP]、[持続時間]、[ステータス]、[TraceId]、[操作] の列が表示されます。上部のフィルター条件を使用して、[持続時間が指定ミリ秒より大きい] または [異常] を選択してトレースをフィルターできます。[操作] 列には [ログの表示] リンクがあります。
-
[トレース] タブで、トレース ID をクリックしてトレース詳細を表示します。トレース詳細ページには、リクエストの完全な呼び出しチェーンが表示され、階層的なネスト関係と 6 つのスパンの持続時間も含まれます:
-
HTTP GET opentelemetry-demo-frontendproxy /api/currency (nginx-otlp, cpp): 15.12 ms
-
ingress (frontendproxy): 13.82 ms
-
router frontend egress (frontendproxy): 13.64 ms
-
GET (frontend, nodejs): 8.84 ms
-
grpc.oteldemo.CurrencyService/GetSupportedCurrencies (frontend, nodejs): 6.83 ms
-
CurrencyService/GetSupportedCurrencies (currencyservice, cpp): 1.35 ms
-
-
トレース伝播プロトコルの変更 (オプション)
OpenTelemetry を使用して NGINX Ingress コントローラーのトレースを行う場合、OpenTelemetry はデフォルトで W3C トレースコンテキスト形式でトレースコンテキストを認識し、ダウンストリームに伝播します。フロントエンドおよびバックエンドアプリケーションが Jaeger や Zipkin などの他のプロトコルを使用している場合は、OpenTelemetry のトレース伝播プロトコルを変更して、フロントエンドアプリケーション、NGINX Ingress コントローラー、およびバックエンドアプリケーションからのトレースをリンクする必要があります。このトピックでは、NGINX Ingress コントローラーが使用する OpenTelemetry トレース伝播プロトコルを変更する方法について説明します。
-
ステップ 2 のサブステップ 4 の設定に加えて、
OTEL_PROPAGATORS環境変数を追加します。変更を保存し、nginx-ingress-controllerを再デプロイします。変数キー
値
説明
OTEL_PROPAGATORS
tracecontext,baggage,b3,jaeger
伝播形式。詳細については、「OpenTelemetry の伝播ヘッダー形式の指定」をご参照ください。
-
ステップ 2 のサブステップ 7 の設定に加えて、
main-snippet設定を変更してOTEL_PROPAGATORS環境変数を適用します。パラメーター
値
説明
main-snippet
env OTEL_EXPORTER_OTLP_HEADERS; env OTEL_PROPAGATORS;
環境変数をロードします。
参考
-
Managed Service for OpenTelemetryの詳細については、「OpenTelemetry 向けマネージドサービスとは」をご参照ください。
-
ACK の詳細については、「Container Service for Kubernetes (ACK) とは」をご参照ください。
-
nginx-configurationConfigMap の必須フィールドは、トレースソリューション (Zipkin、Jaeger、SkyWalking など) によって異なります。これらのソリューションと Managed Service for OpenTelemetryとの統合の詳細については、「事前準備」をご参照ください。