Lightstep

此任務將示範如何設定 Istio 以收集追蹤跨度,並將它們傳送到 Lightstep。Lightstep 讓您可以分析來自大型生產軟體 100% 未取樣的交易資料,以產生有意義的分散式追蹤和指標,協助您解釋效能行為並加速根本原因分析。在此任務結束時,Istio 會將來自 Proxy 的追蹤跨度傳送到 Lightstep Satellite 集區,使其可在 Web UI 上使用。預設情況下,會捕獲所有 HTTP 請求 (若要查看端對端追蹤,您的程式碼需要轉發 OT 標頭,即使它不加入追蹤)。

如果您只想直接從 Istio 收集追蹤跨度(而不在您的程式碼中直接新增特定檢測),那麼您不需要設定任何追蹤器,只要您的服務轉發 追蹤產生的 HTTP 標頭即可。

此任務使用 Bookinfo 範例應用程式作為範例。

開始之前

  1. 請確認您擁有 Lightstep 帳戶。註冊 Lightstep 的免費試用版。

  2. 如果您使用本地端 Satellite,請確認您已設定具有 TLS 憑證和公開安全 GRPC 連接埠的 Satellite 集區。有關設定 Satellite 的詳細資訊,請參閱 安裝和設定 Satellite

    對於Lightstep 公用 Satellite開發者 Satellite,您的 Satellite 已設定完成。但是,您需要將 此憑證下載到本機目錄。

  3. 請確保您擁有 Lightstep 存取權杖。存取權杖可讓您的應用程式與您的 Lightstep 專案通訊。

部署 Istio

您如何部署 Istio 取決於您使用的 Satellite 類型。

使用本地端 Satellite 部署 Istio

這些說明不假設使用 TLS。如果您正在為您的 Satellite 集區使用 TLS,請遵循 公用 Satellite 集區的設定,但請使用您自己的憑證和您自己的集區端點(host:port)。

  1. 您需要以 <主機>:<連接埠> 格式的位址部署 Istio,例如 lightstep-satellite.lightstep:9292。您可以在您的 設定檔案中找到此資訊。

  2. 部署 Istio 時,請指定以下設定參數

    • global.proxy.tracer="lightstep"
    • meshConfig.defaultConfig.tracing.sampling=100
    • meshConfig.defaultConfig.tracing.lightstep.address="<satellite-address>"
    • meshConfig.defaultConfig.tracing.lightstep.accessToken="<access-token>"

    您可以使用執行安裝命令時的 --set key=value 語法設定這些參數。例如

    $ istioctl install \
        --set global.proxy.tracer="lightstep" \
        --set meshConfig.defaultConfig.tracing.sampling=100 \
        --set meshConfig.defaultConfig.tracing.lightstep.address="<satellite-address>" \
        --set meshConfig.defaultConfig.tracing.lightstep.accessToken="<access-token>" \
    

使用公用或開發者模式 Satellite 部署 Istio

如果您正在使用公用或開發者模式 Satellite,或者如果您正在使用具有 TLS 憑證的本地端 Satellite,請遵循以下步驟。

  1. 將您的 Satellite 集區的憑證授權單位憑證儲存為預設和 istio-system 命名空間中的密碼,後者供 Istio 閘道使用。下載並使用 此憑證。如果您在不同的命名空間中部署 Bookinfo 應用程式,請改在該命名空間中建立密碼。

    $ CACERT=$(cat Cert_Auth.crt | base64) # Cert_Auth.crt contains the necessary CACert
    $ NAMESPACE=default
    
    $ cat <<EOF | kubectl apply -f -
      apiVersion: v1
      kind: Secret
      metadata:
        name: lightstep.cacert
        namespace: $NAMESPACE
        labels:
          app: lightstep
      type: Opaque
      data:
        cacert.pem: $CACERT
    EOF
    
  2. 部署 Istio 時,請指定以下設定參數

    global:
      proxy:
        tracer: "lightstep"
    meshConfig:
      defaultConfig:
        tracing:
          lightstep:
            address: "ingest.lightstep.com:443"
            accessToken: "<access-token>"
          sampling: 100
          tlsSettings
            mode: "SIMPLE"
            # Specifying ca certificate here will mount `lightstep.cacert` secret volume
            # at all sidecars by default.
            caCertificates="/etc/lightstep/cacert.pem"
    components:
      ingressGateways:
      # `lightstep.cacert` secret volume needs to be mount at gateways via k8s overlay.
      - name: istio-ingressgateway
        enabled: true
        k8s:
          overlays:
          - kind: Deployment
            name: istio-ingressgateway
            patches:
            - path: spec.template.spec.containers[0].volumeMounts[-1]
              value: |
                name: lightstep-certs
                mountPath: /etc/lightstep
                readOnly: true
            - path: spec.template.spec.volumes[-1]
              value: |
                name: lightstep-certs
                secret:
                  secretName: lightstep.cacert
                  optional: true
    

安裝並執行 Bookinfo 應用程式

  1. 遵循部署 Bookinfo 範例應用程式的說明

  2. 遵循為 Bookinfo 應用程式建立輸入閘道的說明

  3. 若要驗證上一步驟是否成功,請確認您在 Shell 中設定了 GATEWAY_URL 環境變數。

  4. 將流量傳送到範例應用程式。

    $ curl http://$GATEWAY_URL/productpage
    

視覺化追蹤資料

  1. 載入 Lightstep Web UI。您會在「服務目錄」中看到列出的三個 Bookinfo 服務。

    Bookfinder services in the Service Directory
    「服務目錄」中的 Bookfinder 服務
  2. 導覽至「Explorer」視圖。

    Explorer view
    「Explorer」視圖
  3. 在頂部找到查詢列。查詢列可讓您依服務操作標籤值互動式篩選結果。

  4. 服務下拉式清單中選取 productpage.default

  5. 按一下執行。您會看到類似以下的內容

    Explorer
    Explorer
  6. 按一下延遲直方圖下方範例追蹤表格中的第一列,以查看與您重新整理 /productpage 對應的詳細資訊。然後,頁面會看起來類似

    Detailed Trace View
    詳細追蹤視圖

螢幕截圖顯示追蹤由一組跨度組成。每個跨度對應於執行 /productpage 請求期間調用的 Bookinfo 服務。

追蹤中的兩個跨度代表每個 RPC。例如,從 productpagereviews 的呼叫,從標記為 reviews.default.svc.cluster.local:9080/* 操作和 productpage.default: proxy client 服務的跨度開始。此服務代表呼叫的用戶端跨度。螢幕截圖顯示呼叫耗時 15.30 毫秒。第二個跨度標記為 reviews.default.svc.cluster.local:9080/* 操作和 reviews.default: proxy server 服務。第二個跨度是第一個跨度的子跨度,代表呼叫的伺服器端跨度。螢幕截圖顯示呼叫耗時 14.60 毫秒。

追蹤取樣

Istio 以可設定的追蹤取樣百分比捕獲追蹤。若要了解如何修改追蹤取樣百分比,請造訪分散式追蹤追蹤取樣章節

使用 Lightstep 時,我們不建議將追蹤取樣百分比降低到 100% 以下。若要處理高流量網格,請考慮擴展您的 Satellite 集區的大小。

清理

如果您不打算進行任何後續任務,請從您的叢集中移除 Bookinfo 範例應用程式和任何 Lightstep 密碼。

  1. 若要移除 Bookinfo 應用程式,請參閱Bookinfo 清理說明。

  2. 移除為 Lightstep 產生的密碼

$ kubectl delete secret lightstep.cacert
此資訊是否實用?
您是否有任何改進建議?

感謝您的回饋!