全部產品
Search
文件中心

:通過Albconfig開啟Xtrace實現鏈路追蹤

更新時間:Jun 19, 2024

阿里雲提供了鏈路追蹤服務,為分布式應用的開發人員提供了完整的調用鏈路還原、調用請求量統計、鏈路拓撲等,以快速分析和診斷分布式應用架構下的效能瓶頸,提高微服務時代下的開發診斷效率。您可以為叢集安裝ALB Ingress Controller組件並開啟Xtrace功能,查看鏈路追蹤資料。

前提條件

為Albconfig開啟鏈路追蹤

步驟一:為叢集啟用Log Service組件Logtail

啟用Log Service功能後,叢集會自動建立Log ServiceProject。具體操作,請參見步驟一:啟用Log Service組件Logtail

步驟二:擷取Log Service Project的ID,以備後續使用

  1. 登入Container Service管理主控台,在左側導覽列選擇叢集

  2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇叢集資訊

  3. 叢集資訊頁面,單擊叢集資源頁簽,複製儲存Log Service Project右側的ID。

步驟三:建立Albconfig

通過Albconfig建立ALB執行個體和監聽,並為ALB執行個體開啟Log Service,訪問日誌;同時,配置Albconfig中監聽XTrace的相關配置,開啟Xtrace並配置採樣演算法及採樣率。

  1. 拷貝以下內容到alb-test.yaml,用於建立Albconfig。

    apiVersion: alibabacloud.com/v1
    kind: AlbConfig
    metadata:
      name: alb-demo
    spec:
      config:
        name: alb-test
        addressType: Intranet
        zoneMappings: # 指定的交換器必須在ALB當前所支援的可用性區域內,且與叢集處於同一VPC。為保障業務高可用,請至少選擇2個或以上不同可用性區域的交換器。
        - vSwitchId: vsw-2vc82nndnoo********** # 請根據實際情況,設定ALB交換器ID。
        - vSwitchId: vsw-2vc30f5mlhs**********
        accessLogConfig:
          logProject: "k8s-log-xz92lvykqj1siwvif****" # 以實際擷取的Log ServiceProject為準。
          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時生效。
    說明
    • 建立交換器具體操作,請參見建立和管理交換器

    • 只有為執行個體開啟Log Service訪問日誌功能,才可以修改Xtrace配置。

  2. 執行以下命令,建立Albconfig。

    kubectl apply -f alb-test.yaml

    預期輸出:

    albconfig.alibabacloud.com/alb-demo created

步驟四:建立IngressClass

  1. 建立並拷貝以下內容到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
  2. 執行以下命令,建立IngressClass。

    kubectl apply -f alb.yaml

    預期輸出:

    ingressclass.networking.k8s.io/alb created

步驟五:部署服務並配置Ingress的轉寄規則

  1. 建立並拷貝以下內容到cafe-service.yaml檔案中,用於部署名稱為coffee的Deployment,以及名稱為coffee的Service。

    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
  2. 執行以下命令,部署Deployment和Service。

    kubectl apply -f cafe-service.yaml

    預期輸出:

    deployment.apps/coffee created
    service/coffee-svc created
  3. 建立並拷貝以下內容到cafe-ingress.yaml檔案中,用於配置Ingress規則,實現對外暴露服務。

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: cafe-ingress 
    spec:
      ingressClassName: alb
      rules:
       - host: demo.domain.ingress.top
         http:
          paths:
          # 配置Context Path
          - path: /coffee
            pathType: ImplementationSpecific
            backend:
              service:
                name: coffee-svc
                port: 
                  number: 80
  4. 執行以下命令,配置coffee服務對外暴露的網域名稱和路徑。

    kubectl apply -f cafe-ingress.yaml

    預期輸出:

    ingress.networking.k8s.io/cafe-ingress created

步驟六:佈建網域名解析

如果您在建立Ingress時配置了spec.rules.host欄位為您的自有網域名稱,您需要將您的網域名稱添加CNAME記錄解析到ALB DNS名稱。後續通過你的自有網域名稱訪問服務。具體操作,請參見(可選)步驟五:佈建網域名解析

步驟七:訪問服務

訪問服務產生有Xtrace ID的請求。

  1. 執行以下命令,擷取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
  2. 執行以下命令,訪問服務。

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

    預期輸出一個標題為Hello World的HTML頁面。

驗證鏈結路追蹤效果

  1. 查看SLS訪問日誌中訪問對應ALB執行個體的請求,確認已標記XTrace資料。

    1. 登入Container Service管理主控台,在左側導覽列選擇叢集

    2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇叢集資訊

    3. 叢集資訊頁面,單擊叢集資源頁簽,然後單擊Log Service Project右側的連結,跳轉至Log Service控制台,然後在左側導覽列,單擊名稱以alb_開頭的LogStore(例如本樣本的alb_xz92lvykqj1siwvif****),然後在當前頁面搜尋xtrace

      image

  2. 登入可觀測鏈路 OpenTelemetry 版控制台

  3. 應用列表頁面頂部選擇目標地區,然後單擊目標應用程式名稱。

  4. 在應用詳情頁面左側導覽列中單擊介面調用,然後單擊調用鏈路頁簽,查看鏈路資料。

    調用鏈路頁簽列出了該應用耗時最長的至多100個調用鏈路。關於更多鏈路資料,請參見介面調用

相關文檔