Lightstep
此任務將示範如何設定 Istio 以收集追蹤跨度,並將它們傳送到 Lightstep。Lightstep 讓您可以分析來自大型生產軟體 100% 未取樣的交易資料,以產生有意義的分散式追蹤和指標,協助您解釋效能行為並加速根本原因分析。在此任務結束時,Istio 會將來自 Proxy 的追蹤跨度傳送到 Lightstep Satellite 集區,使其可在 Web UI 上使用。預設情況下,會捕獲所有 HTTP 請求 (若要查看端對端追蹤,您的程式碼需要轉發 OT 標頭,即使它不加入追蹤)。
如果您只想直接從 Istio 收集追蹤跨度(而不在您的程式碼中直接新增特定檢測),那麼您不需要設定任何追蹤器,只要您的服務轉發 追蹤產生的 HTTP 標頭即可。
此任務使用 Bookinfo 範例應用程式作為範例。
開始之前
請確認您擁有 Lightstep 帳戶。註冊 Lightstep 的免費試用版。
如果您使用本地端 Satellite,請確認您已設定具有 TLS 憑證和公開安全 GRPC 連接埠的 Satellite 集區。有關設定 Satellite 的詳細資訊,請參閱 安裝和設定 Satellite。
對於Lightstep 公用 Satellite 或 開發者 Satellite,您的 Satellite 已設定完成。但是,您需要將 此憑證下載到本機目錄。
請確保您擁有 Lightstep 存取權杖。存取權杖可讓您的應用程式與您的 Lightstep 專案通訊。
部署 Istio
您如何部署 Istio 取決於您使用的 Satellite 類型。
使用本地端 Satellite 部署 Istio
這些說明不假設使用 TLS。如果您正在為您的 Satellite 集區使用 TLS,請遵循 公用 Satellite 集區的設定,但請使用您自己的憑證和您自己的集區端點(host:port
)。
您需要以
<主機>:<連接埠>
格式的位址部署 Istio,例如lightstep-satellite.lightstep:9292
。您可以在您的 設定檔案中找到此資訊。部署 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,請遵循以下步驟。
將您的 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
部署 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 應用程式
若要驗證上一步驟是否成功,請確認您在 Shell 中設定了
GATEWAY_URL
環境變數。將流量傳送到範例應用程式。
$ curl http://$GATEWAY_URL/productpage
視覺化追蹤資料
載入 Lightstep Web UI。您會在「服務目錄」中看到列出的三個 Bookinfo 服務。
「服務目錄」中的 Bookfinder 服務 導覽至「Explorer」視圖。
「Explorer」視圖 在頂部找到查詢列。查詢列可讓您依服務、操作和標籤值互動式篩選結果。
從服務下拉式清單中選取
productpage.default
。按一下執行。您會看到類似以下的內容
Explorer 按一下延遲直方圖下方範例追蹤表格中的第一列,以查看與您重新整理
/productpage
對應的詳細資訊。然後,頁面會看起來類似詳細追蹤視圖
螢幕截圖顯示追蹤由一組跨度組成。每個跨度對應於執行 /productpage
請求期間調用的 Bookinfo 服務。
追蹤中的兩個跨度代表每個 RPC。例如,從 productpage
到 reviews
的呼叫,從標記為 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 密碼。
若要移除 Bookinfo 應用程式,請參閱Bookinfo 清理說明。
移除為 Lightstep 產生的密碼
$ kubectl delete secret lightstep.cacert