Kubernetesコンテナサービス (ACK) は、ACK クラスターの NGINX Ingress Controller コンポーネントから Managed Service for OpenTelemetry にトレースを送信できるトレース機能を提供します。Managed Service for OpenTelemetry
前提条件
-
Nginx Ingress Controller がインストールされていること。詳細については、「Nginx Ingress Controller の管理」をご参照ください。
バージョンの互換性
トレースのサポートは、Nginx Ingress Controller コンポーネントのバージョンによって異なります。ご利用のバージョンに適した設定方法を選択する必要があります。
|
Nginx Ingress Controller のバージョン |
OpenTelemetry |
OpenTracing |
|
v1.10.2-aliyun.1 以降 |
サポート対象 |
サポート対象外 |
|
v1.9.3-aliyun.1 |
サポート対象 |
サポート対象 |
|
v1.8.2-aliyun.1 |
サポート対象 |
サポート対象 |
|
v1.8.2-aliyun.1 より前 |
サポート対象外 |
サポート対象 |
手順
OpenTelemetry
手順1:エンドポイント情報の取得
-
ARMS コンソールにログインします。左側のナビゲーションペインで、アクセスセンター をクリックします。
-
サーバーアプリケーション エリアで、[OpenTelemetry] カードをクリックします。
-
表示される [OpenTelemetry] パネルで、データをレポートするリージョンを選択します。
-
エンドポイント情報を記録します。[Parameters] セクションで、[Connection Method] を [Alibaba Cloud イントラネット] に、[Report Method] を [gRPC] に設定します。次に、[Endpoint Information] セクションから、gRPC エンドポイントアドレス (例:
http://tracing-analysis-dc-hz-internal.aliyuncs.com:8090) と認証トークンをコピーします。説明お使いの NGINX Ingress Controller が Managed Service for OpenTelemetry と同じ Alibaba Cloud リージョンにデプロイされている場合は、VPC ネットワークエンドポイントを使用します。それ以外の場合は、パブリックエンドポイントを使用します。
手順2:NGINX Ingress Controller での OpenTelemetry の有効化Managed Service for OpenTelemetry
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
-
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、 を選択します。
-
[デプロイメント] ページで、[名前空間] を [kube-system] に設定します。
nginx-ingress-controllerデプロイメントを見つけ、[アクション] 列の [編集] をクリックします。 -
編集 ページで、[nginx-ingress-controller] コンテナを選択します。環境変数 タブで 新規追加 をクリックして、次の環境変数を追加します。
タイプ
変数名
値
説明
カスタム
OTEL_EXPORTER_OTLP_HEADERS
authentication=<認証トークン>手順1 で取得した認証トークンを使用します。例:
authentication=bfXXXXXXXe@7bXXXXXXX1_bXXXXXe@XXXXXXX1。追加が完了したら、編集 ページの右側にある 更新 をクリックし、表示されるダイアログボックスで 確定する をクリックします。
-
左側のナビゲーションペインで、[設定] > [ConfigMap] を選択します。
-
[ConfigMap] ページで、[名前空間] を [kube-system] に設定します。
nginx-configurationConfigMap を見つけ、[アクション] 列の [編集] をクリックします。 -
[編集] パネルで [追加] をクリックして次のキーと値のペアを追加し、[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.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
サンプリングルール。
詳細については、「NGINX Ingress Controller のドキュメント」をご参照ください。
TraceIdRatioBased
otel-sampler-ratio
サンプリングレート。
0.0 から 1.0 までの値で、小数点以下 2 桁まで指定できます。値 0.0 はサンプリングを無効にし、1.0 はすべてのトレースをサンプリングします。
詳細については、「NGINX Ingress Controller のドキュメント」をご参照ください。
0.1
otel-sampler-parent-based
アップストリームサービスからサンプリングの決定を継承するかどうかを指定します。
-
false:(デフォルト) アップストリームのサンプリング決定を継承しません。
otel-samplerとotel-sampler-ratioパラメーターが有効になります。 -
true:アップストリームのサンプリング決定を継承して再利用します。
otel-samplerとotel-sampler-ratioパラメーターは有効になりません。
詳細については、「NGINX Ingress Controller のドキュメント」をご参照ください。
false
-
手順3:ARMS コンソールでのトレースの表示
-
ARMS コンソールにログインします。左側のナビゲーションペインで、 を選択します。
-
アプリケーションリスト ページの上部にあるドロップダウンリストからリージョンを選択します。次に、アプリケーション [nginx-ingress] をクリックします。
-
アプリケーションの詳細ページでトレース情報を確認します。
-
アプリケーション概要 タブで、リクエスト数やエラー数などのメトリクスを確認できます。

-
トレース分析 タブでは、ページ上部で呼び出し数、エラー数、期間のチャートを表示できます。チャートの下には、TraceId、スパン名、アプリケーション名、期間、ステータス (例:
200または404) などの列があるトレースのリストが表示されます。 -
トレース分析 タブのトレースリストから TraceId をクリックして、その詳細ページを開きます。このページには、タイムラインビューと各スパンの詳細情報が表示されます。これには、アプリケーション名 (例: nginx-ingress)、操作名 (例: HTTP GET my-nginx-svc /)、開始時刻と終了時刻、期間が含まれます。[Attributes] タブには、
http.method、http.status_code、http.host、http.user_agentなどの HTTP 属性や、net.host.portなどのネットワーク情報が表示されます。
-
OpenTracing
手順1:エンドポイント情報の取得
-
ARMS コンソールにログインします。左側のナビゲーションペインで、アクセスセンター をクリックします。
-
サーバーアプリケーション エリアで、[Zipkin] カードをクリックします。
説明この例では Zipkin を使用します。
-
表示される [Zipkin] パネルで、データをレポートするリージョンを選択します。
-
エンドポイント情報を記録します。[Connection Method] で [Alibaba Cloud イントラネット] を選択します。ページには、[v2 エンドポイント] と [v1 エンドポイント] の 2 つの VPC ネットワークエンドポイント URL が表示されます。後で使用するために、[v1 エンドポイント] の URL をコピーします。
説明お使いの NGINX Ingress Controller が Managed Service for OpenTelemetry と同じ Alibaba Cloud リージョンにデプロイされている場合は、VPC ネットワークエンドポイントを使用します。それ以外の場合は、パブリックエンドポイントを使用します。
手順2:NGINX Ingress Controller での OpenTracing の有効化Managed Service for OpenTelemetry
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、 を選択します。
-
[ConfigMap] ページで、[名前空間] を [kube-system] に設定します。
nginx-configurationConfigMap を見つけ、操作 列の 編集 をクリックします。 -
編集 パネルで 追加 をクリックして次のキーと値のペアを追加し、[OK] をクリックします。
パラメーター
説明
値
例
enable-opentracing
トレーシングを有効にするかどうかを指定します。
-
true:トレーシングを有効にします。
-
false:トレーシングを無効にします。
true
zipkin-service-name
サービス名。
カスタム名。
nginx-ingress
zipkin-collector-host
レポートエンドポイントのドメイン名。
手順1 で取得したエンドポイント URL を変更します。
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 までの値です。値 0 はサンプリングなしを意味し、1 はすべてのデータがサンプリングされることを意味します。
0.1
-
手順 3: ARMS コンソールでトレースを表示する
-
ARMS コンソールにログインします。左側のナビゲーションペインで、 をクリックします。
-
アプリケーションリスト ページの上部にあるドロップダウンリストからリージョンを選択します。次に、アプリケーション [nginx-ingress] をクリックします。
-
アプリケーションの詳細ページの左側のナビゲーションペインで、[インターフェイス呼び出し] をクリックします。
-
概要 タブには、現在のアプリケーションのサービストポロジと呼び出し関係が表示されます。他に利用可能なタブには、[アップストリーム]、[ダウンストリーム]、[トレース] があります。
-
[トレース] タブには、アプリケーションの実行時間が最も長いトレースが最大 100 件リストされます。トレースデータの詳細については、「インターフェイス呼び出し」をご参照ください。テーブルには、[時間]、[スパン名]、[ホスト/IP]、[期間]、[ステータス]、[TraceId]、[アクション] などの列が含まれます。[期間が次より大きい] と [例外] で結果をフィルタリングできます。
-
[トレース] タブで TraceId をクリックして、トレースの詳細を表示します。[トレース詳細] ページには、TraceId、開始時刻、合計期間が表示されます。また、各スパンの階層と相対的な期間を視覚化するウォーターフォールチャートも表示されます。たとえば、
/api/currencyへのリクエストは、nginx-otlp、frontendproxy、frontend、currencyserviceなどのサービスを通過し、合計期間は約 15 ms になる場合があります。各スパンは、トレース全体に対する相対的な期間を示す水平バーで表されます。
-
(オプション) OpenTelemetry プロパゲーターの切り替え
デフォルトでは、OpenTelemetry メソッドを使用する場合、NGINX Ingress Controller は W3C トレースコンテキストフォーマットでトレースコンテキストを伝播します。フロントエンドとバックエンドのアプリケーションで、B3 (Zipkin で使用) や Jaeger など、別のコンテキストフォーマットを使用している場合は、すべてのサービス間でトレースを正しく関連付けるために、プロパゲーターを変更する必要があります。このセクションでは、NGINX Ingress Controller のプロパゲーターを変更する方法について説明します。
-
OpenTelemetry プロシージャのステップ 2.4 で説明されているのと同じ方法で、
OTEL_PROPAGATORS環境変数を追加します。次に、設定を保存し、nginx-ingress-controllerを再デプロイします。環境変数
値
説明
OTEL_PROPAGATORS
tracecontext,baggage,b3,jaeger
使用するプロパゲーターのカンマ区切りのリストです。詳細については、「Specify the format of propagation headers for OpenTelemetry」をご参照ください。
-
次に、
OTEL_PROPAGATORS環境変数を適用するため、OpenTelemetry プロシージャのステップ 2.7 の説明に従ってmain-snippetの設定を変更します。パラメーター
値
説明
main-snippet
env OTEL_EXPORTER_OTLP_HEADERS; env OTEL_PROPAGATORS;
環境変数を読み込みます。
関連ドキュメント
-
Managed Service for OpenTelemetry の詳細については、「What is Managed Service for OpenTelemetry?」をご参照ください。
-
Container Service for Kubernetes (ACK) の詳細については、「What is Container Service for Kubernetes (ACK)?」をご参照ください。
-
nginx-configurationConfigMap に必要なキーは、使用するトレーシングツール (例:Zipkin、Jaeger、SkyWalking) によって異なります。Managed Service for OpenTelemetry への接続方法の詳細については、「Preparations」をご参照ください。