Alibaba Cloud は、トレースマッピング、リクエスト統計、トレーストポロジーなど、分散アプリケーションの開発者にさまざまな機能を提供するトレース分析サービスを提供しています。 トレース分析サービスは、分散アプリケーションアーキテクチャのパフォーマンスボトルネックを迅速に分析および診断するのに役立ち、マイクロサービスアプリケーションの開発と診断の効率を向上させます。 Application Load Balancer (ALB) Ingress コントローラーをインストールし、クラスターで Xtrace 機能を有効にすることができます。 Xtrace 機能を有効にすると、トレースデータを表示できます。
前提条件
ALB Ingress コントローラーがクラスターにインストールされており、コンポーネントのバージョンが 2.11.1 以降であること。
クラスターを作成するときは、[コンポーネント構成] ページの [Ingress] フィールドの右側にある [ALB Ingress] を選択します。 詳細については、「ACK マネージドクラスターを作成する」、「ACK 専用クラスターを作成する (廃止)」、または「ACK Serverless クラスターを作成する」をご参照ください。
既存のクラスターに ALB Ingress コントローラーをインストールおよび更新する方法の詳細については、「コンポーネントを管理する」をご参照ください。
ACK 専用クラスター にデプロイされたサービスに ALB Ingress を使用してアクセスする場合は、最初にクラスターに ALB Ingress コントローラーへのアクセスを承認する必要があります。 詳細については、「ACK 専用クラスターに ALB Ingress コントローラーへのアクセスを承認する」をご参照ください。
Managed Service for OpenTelemetry が有効化されていること。
AlbConfig のトレース分析を有効にする
手順 1: クラスターの Simple Log Service を有効にする
Simple Log Service を有効にすると、クラスターは Simple Log Service プロジェクトを自動的に作成します。 詳細については、「ACK クラスターからコンテナーログを収集する」をご参照ください。
手順 2: Simple Log Service projectfor subsequent operations
ACK コンソール にログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターを見つけて、その名前をクリックします。 左側のウィンドウで、[クラスター情報] をクリックします。
[クラスター情報] ページで、[基本情報] タブをクリックし、[Log Service プロジェクト] パラメーターの横にある ID をコピーします。
手順 3: AlbConfig を作成する
AlbConfig を使用して、ALB インスタンスとリスナーを作成します。 アクセスログを収集するために、ALB インスタンスの Simple Log Service を有効にします。 AlbConfig で Xtrace 機能に関連するパラメーターを構成します。 サンプリングアルゴリズムとサンプリングレートを設定するために Xtrace 機能を有効にします。
次の内容を alb-test.yaml ファイルにコピーします。 このファイルは、AlbConfig を作成するために使用されます。
説明既存の ALB インスタンスを再利用し、AlbConfig を使用して SLS を有効にする場合は、
forceOverrideパラメーターをtrueに設定して、ALB インスタンスの属性を強制的に上書きする必要があります。 詳細については、「既存の ALB インスタンスを再利用する」をご参照ください。apiVersion: alibabacloud.com/v1 kind: AlbConfig metadata: name: alb-demo spec: config: name: alb-test addressType: Intranet zoneMappings: # 指定された vSwitch は、ALB インスタンスでサポートされているゾーンにあり、クラスターと同じ virtual private cloud (VPC) にある必要があります。 サービスの高可用性を確保するために、異なるゾーンにある少なくとも 2 つの vSwitch を選択します。 -vSwitchId: vsw-2vc82nndnoo********** # ALB インスタンスで使用される vSwitch の ID を指定します。 - vSwitchId: vsw-2vc30f5mlhs********** accessLogConfig: logProject: "k8s-log-xz92lvykqj1siwvif****" # 取得した Simple Log Service プロジェクトの ID を指定します。 logStore: alb_xz92lvykqj1siwvif**** # Logstore 名は alb_ で始まる必要があります。 指定された Logstore が存在しない場合、システムは自動的に作成します。 listeners: - port: 80 protocol: HTTP logConfig: accessLogRecordCustomizedHeadersEnabled: false accessLogTracingConfig: # Xtrace 機能に関連するパラメーター。 tracingEnabled: true # Xtrace 機能を有効にするか無効にするかを指定します。 デフォルト値は false です。 Xtrace を有効にするには、このパラメーターを true に設定します。 tracingSample: 9999 # Xtrace 機能のサンプリングレート。 有効な値: 1 ~ 10000。 このパラメーターは、tracingEnabled を true に設定した場合にのみ有効になります。 tracingType: Zipkin # Xtrace 機能のサンプリングアルゴリズム。 値を Zipkin に設定します。 このパラメーターは、tracingEnabled を true に設定した場合にのみ有効になります。説明vSwitch の作成方法の詳細については、「vSwitch を作成および管理する」をご参照ください。
ALB インスタンスの Simple Log Service のアクセスログ機能を有効にした場合にのみ、Xtrace 構成を変更できます。
次のコマンドを実行して、AlbConfig を作成します。
kubectl apply -f alb-test.yaml予期される出力:
albconfig.alibabacloud.com/alb-demo created
手順 4: IngressClass を作成する
alb.yaml という名前のファイルを作成し、次の内容をファイルにコピーします。 このファイルは、IngressClass を作成するために使用されます。
apiVersion: networking.k8s.io/v1 kind: IngressClass metadata: name: alb spec: controller: ingress.k8s.alibabacloud/alb parameters: apiGroup: alibabacloud.com kind: AlbConfig name: alb-demo次のコマンドを実行して、IngressClass を作成します。
kubectl apply -f alb.yaml予期される出力:
ingressclass.networking.k8s.io/alb created
手順 5: サービスを作成し、Ingress の転送ルールを構成する
cafe-service.yaml という名前のファイルを作成し、次の内容をファイルにコピーします。 このファイルは、coffee という名前の Deployment と coffee という名前のサービスを作成するために使用されます。
apiVersion: apps/v1 kind: Deployment metadata: name: coffee spec: replicas: 2 selector: matchLabels: app: coffee template: metadata: labels: app: coffee spec: containers: - name: coffee image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginxdemos:latest ports: - containerPort: 80 --- apiVersion: v1 kind: Service metadata: name: coffee-svc spec: ports: - port: 80 targetPort: 80 protocol: TCP selector: app: coffee type: NodePort次のコマンドを実行して、Deployment とサービスをデプロイします。
kubectl apply -f cafe-service.yaml予期される出力:
deployment.apps/coffee created service/coffee-svc createdcafe-ingress.yaml という名前のファイルを作成し、次の内容をファイルにコピーします。 このファイルは、サービスを公開するために ALB Ingress の転送ルールを構成するために使用されます。
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: cafe-ingress spec: ingressClassName: alb rules: - host: demo.domain.ingress.top http: paths: # コンテキストパスを指定します。 - path: /coffee pathType: ImplementationSpecific backend: service: name: coffee-svc port: number: 80次のコマンドを実行して、coffee サービスの公開アクセス可能なドメイン名とパスを構成します。
kubectl apply -f cafe-ingress.yaml予期される出力:
ingress.networking.k8s.io/cafe-ingress created
手順 6: ドメイン名解決を構成する
Ingress を作成するときに spec.rules.host パラメーターをカスタムドメイン名に設定した場合は、ドメイン名を ALB インスタンスのドメイン名にマップするために CNAME レコードを追加する必要があります。 その後、カスタムドメイン名を使用してサービスにアクセスできます。 詳細については、「(オプション) 手順 5: ドメイン名解決を構成する」をご参照ください。
手順 7: サービスにアクセスする
サービスにアクセスすると、生成されたリクエストには Xtrace ID が含まれます。
次のコマンドを実行して、ALB インスタンスのアドレス (ADDRESS) を取得します。
kubectl get ing予期される出力:
NAME CLASS HOSTS ADDRESS PORTS AGE cafe-ingress alb demo.domain.ingress.top alb-u53i28ewt580*****.cn-<Region>.alb.aliyuncs.com 80 16m次のコマンドを実行して、サービスにアクセスします。
curl -H Host:demo.domain.ingress.top http://alb-u53i28ewt580*****.cn-<Region>.alb.aliyuncs.com/coffee予期される出力は、
Hello Worldというタイトルの HTML ページです。
トレース分析を確認する
Simple Log Service で ALB インスタンスに送信されたリクエストを確認して、Xtrace データがマークされていることを確認します。
ACK コンソール にログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターを見つけて、その名前をクリックします。 左側のウィンドウで、[クラスター情報] をクリックします。
[クラスター情報] ページで、[基本情報] タブをクリックし、[Log Service プロジェクト] の横にあるリンクをクリックして、Simple Log Service コンソールに移動します。 左側のナビゲーションウィンドウで、この例では alb_xz92lvykqj1siwvif**** など、
alb_で始まる名前の Logstore をクリックします。 次に、現在のページでxtraceを検索します。
Managed Service for OpenTelemetry コンソール にログインします。
[アプリケーション] ページで、上部のナビゲーションバーでリージョンを選択し、アプリケーションの名前をクリックします。
左側のナビゲーションウィンドウで、[インターフェース呼び出し] をクリックし、[トレース] タブをクリックして、トレースデータを表示します。
[トレース] タブには、アプリケーションの期間が最も長い最大 100 件のトレースが表示されます。 トレースデータの詳細については、「API 呼び出し」をご参照ください。
参考資料
NGINX Ingress のトレース分析を有効にする方法の詳細については、「NGINX Ingress のトレース分析を有効にする」をご参照ください。
ALB の使用中にエラーが発生した場合は、「ALB Ingress コントローラーのトラブルシューティング」および「ALB Ingress に関するよくある質問」をご参照ください。