Alibaba Cloud は、Managed Service for OpenTelemetry サービスを提供しています。このサービスは、分散アプリケーションの開発者にトレースマッピング、リクエスト統計、トレーストポロジーなどのさまざまな機能を提供します。 このサービスは、分散アプリケーションアーキテクチャのパフォーマンスボトルネックを迅速に分析および診断するのに役立ち、マイクロサービスアプリケーションの開発と診断の効率を向上させます。 Container Compute Service (ACS) クラスタに ALB Ingress コントローラーをインストールし、トレース分析を有効にしてサービストレースと関連データを表示できます。
前提条件
ACS クラスタが作成され、簡易ログサービスが有効になっていること。 詳細については、「ACS クラスタの作成」をご参照ください。
クラスタが存在する仮想プライベートクラウド (VPC) の異なるゾーンに 2 つの vSwitch が作成されていること。 詳細については、「vSwitch の作成と管理」をご参照ください。
ALB Ingress コントローラーが ACS クラスタにインストールされていること。 詳細については、「ALB Ingress コントローラーの管理」をご参照ください。
ACS クラスタに接続していること。 詳細については、「クラスタの kubeconfig ファイルを取得し、kubectl を使用してクラスタに接続する」および「Cloud Shell で kubectl を使用して ACS クラスタを管理する」をご参照ください。
Managed Service for OpenTelemetry がアクティブ化されていること。
ステップ 1:簡易ログサービスプロジェクトの ID を取得する
ACS コンソール にログインします。 左側のナビゲーションペインで、[クラスタ] をクリックします。
[クラスタ] ページで、管理するクラスタを見つけ、その名前をクリックします。 クラスタ詳細ページの左側のナビゲーションペインで、[クラスタ情報] をクリックします。
[基本情報] タブの [クラスタリソース] セクションで、[ログサービスプロジェクト] の右側の ID をコピーします。
説明クラスタの作成時に簡易ログサービスが有効になっていない場合は、alibaba-log-controller を手動でインストールしてサービスを有効にすることができます。 デフォルトのプロジェクト ID は
k8s-log-ACS クラスタ ID
です。 詳細については、「簡易ログサービスコンポーネントを有効にする」をご参照ください。
ステップ 2:アクセスログとトレース分析を設定する
alb-test.yaml という名前のファイルを作成し、次の内容をファイルにコピーします。 このファイルは、AlbConfig オブジェクトを作成するために使用されます。
apiVersion: alibabacloud.com/v1 kind: AlbConfig metadata: name: alb-demo spec: config: name: alb-test addressType: Internet # 指定された vSwitch は、現在の ALB インスタンスでサポートされているゾーンと ACS クラスタの VPC に存在する必要があります。 サービスの高可用性を確保するために、異なるゾーンにある少なくとも 2 つの vSwitch を選択します。 zoneMappings: - vSwitchId: vsw-2vc82nndnoo********** # ALB インスタンスで使用される vSwitch の ID を指定します。 - vSwitchId: vsw-2vc30f5mlhs********** # ALB インスタンスで使用される vSwitch の ID を指定します。 accessLogConfig: logProject: k8s-log-xz92lvykqj1siwvif**** # ステップ 1 で取得した簡易ログサービスプロジェクトの ID を指定します。 logStore: alb_test_xz92lvykqj1siwvif**** # Logstore 名は alb_ で始まる必要があります。 指定された Logstore が存在しない場合、システムは自動的に作成します。 listeners: - port: 80 protocol: HTTP logConfig: accessLogRecordCustomizedHeadersEnabled: false accessLogTracingConfig: # Xtrace パラメータを設定します。 これを行うには、最初に accessLogConfig を設定する必要があります。 tracingEnabled: true # Xtrace 機能を有効にするか無効にするかを指定します。 デフォルト値は false です。 Xtrace を有効にするには、このパラメータを true に設定します。 tracingSample: 9999 # Xtrace 機能のサンプリングレート。 有効な値:1 ~ 10000。 このパラメータは、tracingEnabled を true に設定した場合にのみ有効になります。 tracingType: Zipkin # Xtrace 機能のサンプリングアルゴリズム。 値を Zipkin に設定します。 このパラメータは、tracingEnabled を true に設定した場合にのみ有効になります。
次のコマンドを実行して AlbConfig を作成します。
kubectl apply -f alb-test.yaml
予期される出力:
albconfig.alibabacloud.com/alb-demo created
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
設定が完了すると、簡易ログサービスプロジェクトに alb_test_xz92lvykqj1siwvif****
という名前の Logstore が作成されます。
ステップ 3:サンプルサービスをデプロイする
cafe-service.yaml という名前のファイルを作成し、次の内容をファイルにコピーします。 このファイルは、coffee という名前の Deployment と coffee という名前の Service を作成するために使用されます。
apiVersion: apps/v1 kind: Deployment metadata: name: coffee spec: replicas: 1 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: ClusterIP
次のコマンドを実行して、Deployment と Service をデプロイします。
kubectl apply -f cafe-service.yaml
予期される出力:
deployment.apps/coffee created service/coffee-svc created
cafe-ingress.yaml という名前のファイルを作成し、次の内容をファイルにコピーします。 このファイルは、Service を公開するために 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 Service の公開ドメイン名とパスを設定します。
kubectl apply -f cafe-ingress.yaml
予期される出力:
ingress.networking.k8s.io/cafe-ingress created
(オプション) Ingress を作成するときに
spec.rules.host
パラメータをカスタムドメイン名に設定した場合、CNAME レコードを追加して、ドメイン名を ALB インスタンスのドメイン名にマップする必要があります。 その後、カスタムドメイン名を使用してサービスにアクセスできます。 詳細については、「カスタムドメイン名の設定」をご参照ください。
ステップ 4:トレースデータを表示する
次のコマンドを実行して、ALB インスタンスのアドレス (ADDRESS) を取得します。
kubectl get ingress
予期される出力:
NAME CLASS HOSTS ADDRESS PORTS AGE cafe-ingress alb demo.domain.ingress.top alb-u53i28ewt580*****.cn-<Region>.alb.aliyuncs.com 80 16m
次のコマンドを実行して、Service にアクセスします。
curl -H Host:demo.domain.ingress.top http://alb-u53i28ewt580*****.cn-<Region>.alb.aliyuncs.com/coffee
説明予期される出力は、タイトルが
Hello World
の HTML ページです。 Web ブラウザからドメイン名にアクセスします。 次のページが表示されます。簡易ログサービスで ALB インスタンスのアクセスログを確認します。 前述のサービスアクセス操作がログに記録され、Xtrace フィールドが見つかることを確認します。
簡易ログサービスコンソール にログインします。
[プロジェクト] セクションで、ACS クラスタに対応するプロジェクト (デフォルト:
k8s-log-ACS クラスタ ID
) を選択し、プロジェクト名をクリックして [logstore] タブに移動します。名前が
alb_
で始まる Logstore (この例ではalb_test_xz92lvykqj1siwvif****
) をクリックし、coffee
を検索します。次の Xtrace フィールドが見つかるかどうかを確認します。
slb_xtrace:
slb_xtrace: 19241ed1c4790d31:19241ed1c4790d31:-:1
の19241ed1c4790d31
は、リクエストのトレース ID です。 トレース ID は、トレース分析でクエリ条件として使用できます。xtrace_type:
xtrace_type: zipkin
はサンプリングアルゴリズムを示します。 詳細については、「ステップ 2:アクセスログとトレース分析を設定する」をご参照ください。
[managed Service For Opentelemetry] でトレース ID を使用してトレースデータをクエリできます。
Managed Service for OpenTelemetry コンソール にログインします。
[アプリケーション] ページの上部ナビゲーションバーで、リージョンを選択します。 アプリケーションの名前をクリックします。 デフォルト名は ALB インスタンスの ID です (この例では
alb-u53i28ewt580*****
など)。左側のナビゲーションペインで、[トレース分析] をクリックします。 表示されるページの検索ボックスに
trace_id IN (19241ed1c4790d31)
と入力します。 トレース ID は19241ed1c4790d31
です。[検索] をクリックしてトレースを見つけ、リクエストによって生成されたトレースの詳細を表示します。
関連情報
ALB の使用中にエラーが発生した場合は、最初に ALB のドキュメントを参照してください。 詳細については、「ALB Ingress コントローラーのトラブルシューティング」および「ALB Ingress についてのよくある質問」をご参照ください。