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コンソールのマネージドサービス。 左側のナビゲーションウィンドウで、[統合センター] をクリックします。
[Open Source Frameworks] セクションで、[OpenTelemetry] カードをクリックします。
OpenTelemetryパネルで、トレースデータをインポートするリージョンを選択します。
gRPCを介したデータのインポートに使用されるエンドポイントを記録します。
説明NGINX IngressコントローラーはAlibaba Cloudにデプロイされており、この例のManaged Service for OpenTelemetryエージェントと同じリージョンにあります。 したがって、仮想プライベートクラウド (VPC) エンドポイントを使用することを推奨します。 NGINX IngressコントローラーとManaged Service for OpenTelemetryエージェントが異なるリージョンにデプロイされている場合は、パブリックエンドポイントを使用します。
旧バージョンのManaged Service for OpenTelemetryコンソール
左側のナビゲーションウィンドウで、[クラスター設定] をクリックします。 表示されるページの右側にある [アクセスポイント情報] タブをクリックします。
ページの上部で、トレースデータをインポートするリージョンを選択します。
[クラスター情報] セクションで [トークンの表示] を選択し、[クライアント] セクションで [OpenTelemetry] をクリックします。 次に、gRPC経由でデータをインポートするために使用したエンドポイントを記録します。
説明NGINX IngressコントローラーはAlibaba Cloudにデプロイされており、この例のManaged Service for OpenTelemetryエージェントと同じリージョンにあります。 したがって、VPCエンドポイントを使用することを推奨します。 NGINX IngressコントローラーとManaged Service for OpenTelemetryエージェントが異なるリージョンにデプロイされている場合は、パブリックエンドポイントを使用します。
手順2: 有効化Managed Service for OpenTelemetryNGINX Ingressコントローラー
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、 を選択します。
ページの上部で、[名前空間] ドロップダウンリストから [kube-system] を選択します。 次に、検索ボックスにnginx-ingress-controllerと入力し、検索アイコンをクリックします。 nginx-ingress-controllerを見つけ、[操作] 列の [編集] をクリックします。
[編集] ページの上部で、nginx-ingress-controllerコンテナーを選択します。 [環境] タブで、[追加] をクリックして、次の環境変数を追加します。
タイプ
可変キー
値 /ValueFrom
説明
Custom
OTEL_EXPORTER_OTLP_HEADERS
authentication=<認証トークン>
手順1: Managed Service for OpenTelemetryからエンドポイントを取得するで取得した認証トークンを指定します。 例:
authentication=bfXXXXXXXe @ 7bXXXXXXX1_bXXXXXe @ XXXXXXX1
環境変数を追加したら、[編集] ページの右側にある [更新] をクリックします。 表示されるメッセージで、[確認] をクリックします。
左側のナビゲーションウィンドウで、[設定]> [設定] を選択します。
ConfigMapページの上部で、[名前空間] ドロップダウンリストから [kube-system] を選択します。 次に、名前検索ボックスにnginx-configurationと入力し、検索アイコンをクリックします。 nginx-configurationを見つけ、[操作] 列の [編集] をクリックします。
[編集] パネルで、[追加] をクリックして次の設定を追加し、[OK] をクリックします。
名前
説明
値
enable-opentelemetry
OpenTelemetryのマネージドサービスを有効にするかどうかを指定します。
true
: OpenTelemetryのマネージドサービスを有効にします。main-スニペット
-
env OTEL_EXPORTER_OTLP_HEADERS;
ホテルサービス名
カスタムサービス名を入力します。
例: nginx-ingress。
otlp-collector-host
gRPC経由でデータをインポートするために使用されるドメイン名。
「手順1: Managed Service for OpenTelemetryからエンドポイントを取得する」で取得した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: Managed Service for OpenTelemetryコンソールでのトレースデータの表示
最初に OpenTelemetryのマネージドサービスコンソール
左側のナビゲーションウィンドウで、アプリケーション.
[アプリケーション] ページの上部で、トレースデータをインポートするリージョンを選択します。 次に、[nginx-ingress] をクリックします。
アプリケーションの詳細ページで、トレースデータを表示できます。
[アプリケーションの概要] タブで、リクエストの数とエラーの数を表示できます。
[トレース分析] タブで、トレースリストと平均期間を表示できます。
[トレース分析] タブで、トレースIDをクリックして、トレースの詳細を表示できます。
OpenTracing
手順1: Managed Service for OpenTelemetryからエンドポイントを取得する
OpenTelemetryコンソールのマネージドサービスの新しいバージョン
最初に OpenTelemetryコンソールのマネージドサービス。 左側のナビゲーションウィンドウで、[統合センター] をクリックします。
[Open Source Frameworks] セクションで、[Zipkin] カードをクリックします。
説明データ収集に使用するクライアントのエンドポイントを取得します。 この例では、Zipkinクライアントが使用されています。
Zipkinパネルで、トレースデータをインポートするリージョンを選択します。
エンドポイントを記録します。
説明NGINX IngressコントローラーはAlibaba Cloudにデプロイされており、この例のManaged Service for OpenTelemetryエージェントと同じリージョンにあります。 したがって、VPCエンドポイントを使用することを推奨します。 NGINX Ingressコントローラーと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: 有効化Managed Service for OpenTelemetryNGINX Ingressコントローラー
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、 を選択します。
ConfigMapページの上部で、名前空間ドロップダウンリストからkube-systemを選択します。 次に、名前検索ボックスにnginx-configurationと入力し、検索アイコンをクリックします。 nginx-configurationを見つけ、[操作] 列の [編集] をクリックします。
トレースデータを収集するクライアントとしてZipkinを設定します。
[編集] パネルで、[追加] をクリックします。 [名前] フィールドにzipkin-collector-hostと入力し、[値] フィールドにステップ1: 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?
トレースを有効にします。
[追加] をクリックします。 [名前] フィールドにenable-opentracingと入力し、[値] フィールドにtrueと入力します。 次に、[OK] をクリックします。
手順3: 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、手荷物、b3、jaeger
トレースデータを渡すために使用されるプロトコル。 詳細については、「トレースデータを渡す形式の指定」をご参照ください。
ステップ2.7: nginx-configuration ConfigMapのメインスニペット設定を変更して、OTEL_PROPAGATORS環境変数を有効にします。
名前
値
説明
main-スニペット
env OTEL_EXPORTER_OTLP_HEADERS; env OTEL_PROPAGATORS;
OTEL_PROPAGATORS環境変数をロードします。
参照
Managed Service for OpenTelemetryの詳細については、「OpenTelemetry向けマネージドサービスの概要」をご参照ください。
ACKの詳細については、「」をご参照ください。ACKとは何ですか?
Zipkin、Jaeger、SkyWalkingなど、異なるクライアントを使用してトレースデータを収集するには、nginx-configuration ConfigMapで異なるパラメーターを設定する必要があります。 Managed Service for OpenTelemetryにデータをインポートする方法の詳細については、「準備」をご参照ください。