すべてのプロダクト
Search
ドキュメントセンター

Container Compute Service:AlbConfig を設定して ALB Ingress のトレース分析を実装する

最終更新日:Jan 14, 2025

Alibaba Cloud は、Managed Service for OpenTelemetry サービスを提供しています。このサービスは、分散アプリケーションの開発者にトレースマッピング、リクエスト統計、トレーストポロジーなどのさまざまな機能を提供します。 このサービスは、分散アプリケーションアーキテクチャのパフォーマンスボトルネックを迅速に分析および診断するのに役立ち、マイクロサービスアプリケーションの開発と診断の効率を向上させます。 Container Compute Service (ACS) クラスタに ALB Ingress コントローラーをインストールし、トレース分析を有効にしてサービストレースと関連データを表示できます。

前提条件

ステップ 1:簡易ログサービスプロジェクトの ID を取得する

  1. ACS コンソール にログインします。 左側のナビゲーションペインで、[クラスタ] をクリックします。

  2. [クラスタ] ページで、管理するクラスタを見つけ、その名前をクリックします。 クラスタ詳細ページの左側のナビゲーションペインで、[クラスタ情報] をクリックします。

  3. [基本情報] タブの [クラスタリソース] セクションで、[ログサービスプロジェクト] の右側の ID をコピーします。

    説明

    クラスタの作成時に簡易ログサービスが有効になっていない場合は、alibaba-log-controller を手動でインストールしてサービスを有効にすることができます。 デフォルトのプロジェクト ID は k8s-log-ACS クラスタ ID です。 詳細については、「簡易ログサービスコンポーネントを有効にする」をご参照ください。

ステップ 2:アクセスログとトレース分析を設定する

  1. 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 に設定した場合にのみ有効になります。
  2. 次のコマンドを実行して AlbConfig を作成します。

    kubectl apply -f alb-test.yaml

    予期される出力:

    albconfig.alibabacloud.com/alb-demo created
  3. 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
  4. 次のコマンドを実行して IngressClass を作成します。

    kubectl apply -f alb.yaml

    予期される出力:

    ingressclass.networking.k8s.io/alb created
説明

設定が完了すると、簡易ログサービスプロジェクトに alb_test_xz92lvykqj1siwvif**** という名前の Logstore が作成されます。

ステップ 3:サンプルサービスをデプロイする

  1. 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
  2. 次のコマンドを実行して、Deployment と Service をデプロイします。

    kubectl apply -f cafe-service.yaml

    予期される出力:

    deployment.apps/coffee created
    service/coffee-svc created
  3. 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
  4. 次のコマンドを実行して、coffee Service の公開ドメイン名とパスを設定します。

    kubectl apply -f cafe-ingress.yaml

    予期される出力:

    ingress.networking.k8s.io/cafe-ingress created
  5. (オプション) Ingress を作成するときに spec.rules.host パラメータをカスタムドメイン名に設定した場合、CNAME レコードを追加して、ドメイン名を ALB インスタンスのドメイン名にマップする必要があります。 その後、カスタムドメイン名を使用してサービスにアクセスできます。 詳細については、「カスタムドメイン名の設定」をご参照ください。

ステップ 4:トレースデータを表示する

  1. 次のコマンドを実行して、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
  2. 次のコマンドを実行して、Service にアクセスします。

    curl -H Host:demo.domain.ingress.top http://alb-u53i28ewt580*****.cn-<Region>.alb.aliyuncs.com/coffee
    説明

    予期される出力は、タイトルが Hello World の HTML ページです。 Web ブラウザからドメイン名にアクセスします。 次のページが表示されます。

    image

  3. 簡易ログサービスで ALB インスタンスのアクセスログを確認します。 前述のサービスアクセス操作がログに記録され、Xtrace フィールドが見つかることを確認します。

    1. 簡易ログサービスコンソール にログインします。

    2. [プロジェクト] セクションで、ACS クラスタに対応するプロジェクト (デフォルト: k8s-log-ACS クラスタ ID) を選択し、プロジェクト名をクリックして [logstore] タブに移動します。

    3. 名前が alb_ で始まる Logstore (この例では alb_test_xz92lvykqj1siwvif****) をクリックし、coffee を検索します。

      image

      次の Xtrace フィールドが見つかるかどうかを確認します。

      • slb_xtrace:slb_xtrace: 19241ed1c4790d31:19241ed1c4790d31:-:119241ed1c4790d31 は、リクエストのトレース ID です。 トレース ID は、トレース分析でクエリ条件として使用できます。

      • xtrace_type:xtrace_type: zipkin はサンプリングアルゴリズムを示します。 詳細については、「ステップ 2:アクセスログとトレース分析を設定する」をご参照ください。

  4. [managed Service For Opentelemetry] でトレース ID を使用してトレースデータをクエリできます。

    1. Managed Service for OpenTelemetry コンソール にログインします。

    2. [アプリケーション] ページの上部ナビゲーションバーで、リージョンを選択します。 アプリケーションの名前をクリックします。 デフォルト名は ALB インスタンスの ID です (この例では alb-u53i28ewt580***** など)。

    3. 左側のナビゲーションペインで、[トレース分析] をクリックします。 表示されるページの検索ボックスに trace_id IN (19241ed1c4790d31) と入力します。 トレース ID は 19241ed1c4790d31 です。

      image

    4. [検索] をクリックしてトレースを見つけ、リクエストによって生成されたトレースの詳細を表示します。

      image

関連情報