Container Service for Kubernetes (ACK) では、NGINX Ingress コントローラーのトレースを有効にし、トレースデータを Managed Service for OpenTelemetry にインポートできます。Managed Service for OpenTelemetry は、トレースデータを永続化し、リアルタイムでトレースデータを集計および計算して、トレースの詳細とリアルタイムトポロジを含むモニタリングデータを生成します。 モニタリングデータに基づいて、問題のトラブルシューティングと診断を行うことができます。
前提条件
可観測性追跡 OpenTelemetry 版がアクティブ化されており、可観測性追跡 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 | サポート対象外 | サポート対象 |
手順
クラスタにインストールされている NGINX Ingress コントローラーのバージョンに基づいて、次の手順を実行します。
OpenTelemetry
手順 1:Managed Service for OpenTelemetry からエンドポイントを取得する
可観測性追跡 OpenTelemetry 版コンソールの新しいバージョン
にログインします。 左側のナビゲーションウィンドウで、[統合センター] をクリックします。
[オープンソースフレームワーク] セクションで、[OpenTelemetry] カードをクリックします。
[OpenTelemetry] パネルで、トレースデータをインポートするリージョンを選択します。
gRPC 経由でデータをインポートするために使用するエンドポイントを記録します。
説明この例では、NGINX Ingress コントローラーは Alibaba Cloud にデプロイされ、Managed Service for OpenTelemetry エージェントと同じリージョンにあります。 そのため、VPC エンドポイントを使用することをお勧めします。 NGINX Ingress コントローラーと 可観測性追跡 OpenTelemetry 版 エージェントが異なるリージョンにデプロイされている場合は、パブリックエンドポイントを使用します。
可観測性追跡 OpenTelemetry 版コンソールの以前のバージョン
可観測性追跡 OpenTelemetry 版コンソール可観測性追跡 OpenTelemetry 版コンソール
ACK コンソール にログインします。左側のナビゲーションウィンドウで、[クラスタ構成] をクリックします。 表示されるページの右側にある [アクセスポイント情報] タブをクリックします。
ページの上部で、トレースデータをインポートするリージョンを選択します。
[トークンを表示] セクションの [クラスタ情報] を選択し、[クライアント] セクションの [OpenTelemetry] をクリックします。 次に、gRPC 経由でデータをインポートするために使用するエンドポイントを記録します。
説明この例では、NGINX Ingress コントローラーは Alibaba Cloud にデプロイされ、Managed Service for OpenTelemetry エージェントと同じリージョンにあります。 そのため、VPC エンドポイントを使用することをお勧めします。 NGINX Ingress コントローラーと 可観測性追跡 OpenTelemetry 版 エージェントが異なるリージョンにデプロイされている場合は、パブリックエンドポイントを使用します。
手順 2: 有効化するManaged Service for OpenTelemetry
にログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターを見つけ、その名前をクリックします。左側のペインで、 を選択します。
ページの上部にある名前空間ドロップダウンリストから kube-system を選択します。次に、検索ボックスに nginx-ingress-controller と入力し、検索アイコンをクリックします。 nginx-ingress-controller を見つけ、[編集] 列の [編集] をクリックします。
[編集] ページの上部で、[nginx-ingress-controller] コンテナーを選択します。[環境] タブで、[追加] をクリックして、次の環境変数を追加します。
種類
変数キー
値/ValueFrom
説明
カスタム
OTEL_EXPORTER_OTLP_HEADERS
authentication=<Authentication token>ステップ 1: Managed Service for OpenTelemetry からエンドポイントを取得する で取得した認証トークンを指定します。例:
authentication=bfXXXXXXXe@7bXXXXXXX1_bXXXXXe@XXXXXXX1。
環境変数を追加した後、[編集] ページの右側にある [更新] をクリックします。表示されるメッセージで、[確認] をクリックします。
左側のナビゲーションウィンドウで、 を選択します。
ConfigMap ページの上部にある名前空間ドロップダウンリストから kube-system を選択します。次に、名前検索ボックスに nginx-configuration と入力し、検索アイコンをクリックします。 nginx-configuration を見つけ、[アクション] 列の [編集] をクリックします。
[編集] パネルで、[追加] をクリックして次の構成を追加し、[OK] をクリックします。
名前
説明
有効な値
例
enable-opentelemetry
Managed Service for OpenTelemetry を有効にするかどうかを指定します。
true: Managed Service for OpenTelemetry を有効にします。false: Managed Service for OpenTelemetry を有効にしません。
truemain-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.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 コンソールでトレースデータを表示する
Managed Service for OpenTelemetry コンソールにログオンします。
左側のナビゲーションウィンドウで、[アプリケーション] をクリックします。
[アプリケーション] ページの上部で、トレースデータをインポートするリージョンを選択します。次に、[nginx-ingress] をクリックします。
アプリケーション詳細ページで、トレースデータを表示できます。
[アプリケーション概要] タブで、リクエスト数とエラー数を確認できます。

[トレース分析] タブで、トレースリストと平均期間を表示できます。

[トレース分析] タブで、トレース ID をクリックしてトレースの詳細を表示できます。

OpenTracing
ステップ 1:Managed Service for OpenTelemetry からエンドポイントを取得する
Managed Service for OpenTelemetry コンソールの新しいバージョン
Managed Service for OpenTelemetry コンソール にログインします。左側のナビゲーションウィンドウで、[統合センター] をクリックします。
[オープンソースフレームワーク] セクションで、[Zipkin] カードをクリックします。
説明データ収集に使用するクライアントのエンドポイントを取得します。この例では、Zipkin クライアントを使用します。
[Zipkin] パネルで、トレースデータをインポートするリージョンを選択します。
エンドポイントを記録します。
説明この例では、NGINX Ingress コントローラーは Alibaba Cloud にデプロイされており、Managed Service for OpenTelemetry エージェントと同じリージョンにあります。そのため、VPC エンドポイントを使用することをお勧めします。NGINX Ingress コントローラーと Managed Service for OpenTelemetry エージェントが異なるリージョンにデプロイされている場合は、パブリックエンドポイントを使用します。
Managed Service for OpenTelemetry コンソールの以前のバージョン
Managed Service for OpenTelemetry コンソール にログインします。
左側のナビゲーションウィンドウで、[クラスタ構成] をクリックします。表示されるページで、[アクセスポイント情報] タブをクリックします。
ページの上部で、トレースデータをインポートするリージョンを選択します。
[クラスタ情報] セクションで [トークンの表示] を選択し、[クライアント] セクションで [Zipkin] をクリックします。次に、エンドポイントを記録します。
説明この例では、NGINX Ingress コントローラーは Alibaba Cloud にデプロイされており、Managed Service for OpenTelemetry エージェントと同じリージョンにあります。そのため、VPC エンドポイントを使用することをお勧めします。NGINX Ingress コントローラーと Managed Service for OpenTelemetry エージェントが異なるリージョンにデプロイされている場合は、パブリックエンドポイントを使用します。
ステップ 2:NGINX Ingress コントローラーに対して Managed Service for OpenTelemetry を有効にする
ACK コンソール にログインします。左側のナビゲーションウィンドウで、[クラスタ] をクリックします。
[クラスタ] ページで、変更するクラスタの名前をクリックします。左側のナビゲーションウィンドウで、 を選択します。
[ConfigMap] ページの上部で、[名前空間] ドロップダウンリストから [kube-system] を選択します。次に、[名前] 検索ボックスに「nginx-configuration」と入力し、検索アイコンをクリックします。[nginx-configuration] を見つけ、[アクション] 列の [編集] をクリックします。
[編集] パネルで、[追加] をクリックして次の構成を追加し、[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 コンソールでトレースデータを表示する
Managed Service for OpenTelemetry コンソール にログインします。
左側のナビゲーションウィンドウで、[アプリケーション] をクリックします。
[アプリケーション] ページの上部で、トレースデータをインポートするリージョンを選択します。次に、[nginx] をクリックします。
詳細ページの左側のナビゲーションウィンドウで、[インターフェース呼び出し] をクリックします。ページの右側で、トレースデータを表示できます。
[概要] タブで、トレーストポロジーを表示できます。

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

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

(オプション) 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 がトレースデータを渡すために使用するプロトコルを変更する方法について説明します。
手順 2 の 4 番目のサブステップで、OTEL_PROPAGATORS 環境変数を追加します。その後、変更を保存し、nginx-ingress-controller を再デプロイします。
変数キー
値
説明
OTEL_PROPAGATORS
tracecontext,baggage,b3,jaeger
トレースデータを渡すために使用されるプロトコル。詳細については、「トレースデータを渡す形式を指定する」をご参照ください。
手順 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 にデータをインポートする方法の詳細については、「準備」をご参照ください。