iT邦幫忙

第 12 屆 iT 邦幫忙鐵人賽

DAY 29
0
Modern Web

被選召的 Gopher 們,從零開始探索 Golang, Istio, K8s 數碼微服務世界系列 第 29

DAY29 - 使用 Istio 的 Jaeger 追蹤在各個 Service 穿梭的請求

本文章同時發佈於:

文章為自己的經驗與夥伴整理的內容,設計沒有標準答案,如有可以改進的地方,請告訴我,我會盡我所能的修改,謝謝大家~

大家好,今天要介紹 Istio 的 Jaeger,Jaeger 可以對請求流量進行跟蹤,是微服務中複雜請求的追蹤方案

安裝

啟動 K8s 集群,步驟不再贅述,詳細介紹可以看DAY23

要注意的是有利用$ kubectl apply -f安裝了PrometheusGrafanaGrafanaJaeger

$ minikube start --kubernetes-version v1.16.0
$ istioctl install --set profile=demo
$ kubectl label namespace default istio-injection=enabled
$ kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.7/samples/addons/jaeger.yaml
$ kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.7/samples/addons/prometheus.yaml
$ kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.7/samples/addons/grafana.yaml
$ kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.7/samples/addons/Grafana.yaml
$ cd DAY29/helm-digimon
$ helm install . --generate-name
$ minikube tunnel

在 Istio 預設值values.pilot.traceSampling是設為 1%,意思是 100 個 requests 採樣一次,所以我們必須打開網頁並將 Create request 複製起來,利用 bash 打 100 次,進入web.backend.com之後開啟開發者模式

並以 for 迴圈請求 100 次

$ for i in $(seq 1 100); do {複製的cURL} done

以我來說會如下:

$ for i in $(seq 1 100); do curl 'http://api.backend.com/digimon.Digimon/Create' \
  -H 'Connection: keep-alive' \
  -H 'Accept: application/grpc-web-text' \
  -H 'X-User-Agent: grpc-web-javascript/0.1' \
  -H 'X-Grpc-Web: 1' \
  -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36' \
  -H 'Content-Type: application/grpc-web-text' \
  -H 'Origin: http://web.backend.com' \
  -H 'Referer: http://web.backend.com/' \
  -H 'Accept-Language: en-US,en;q=0.9,zh-TW;q=0.8,zh;q=0.7' \
  --data-binary 'AAAAAAgKBkFndW1vbg==' \
  --compressed \
  --insecure; done

開啟 Jaeger

$ istioctl dashboard jaeger

選取istio-ingressgateway之後點選搜尋,會發現總共有 100 個追蹤,

點選其中一個追蹤,會列出此請求在經過了哪些 service,因為 Create request 本身沒有經過不同的 service 所以 dashboard 只顯示了一個 service,點選 service 就會在顯示此 request 在此 service 上的 tag 狀態,

以官方的例子,如果是眾多 services,request 在不同 service 走動花費的時間就會如下顯示,

參考


上一篇
DAY28 - 使用 Istio 的 Grafana 可視化後端的流量
下一篇
DAY30 - 使用 Istio 的 PrometheusJaeger 監控流量請求
系列文
被選召的 Gopher 們,從零開始探索 Golang, Istio, K8s 數碼微服務世界30

尚未有邦友留言

立即登入留言