一、Jaeger
Jaeger是一個開源的分布式跟蹤系統(tǒng)。您可以使用jaeger來監(jiān)控和排查基于微服務(wù)的分布式系統(tǒng)的故障。使用jaeger,您可以執(zhí)行跟蹤組成應(yīng)用程序的各種微服務(wù)執(zhí)行請求的路徑。默認(rèn)情況下,jaeger是作為 Service Mesh 的一部分安裝的。
1.1 生成跟蹤并分析跟蹤數(shù)據(jù)
1.1.1 部署了bookinfo應(yīng)用程序后,通過訪問http://$gateway_url/productpage并刷新頁面幾次來生成一些訪問痕跡。
1.1.2 將jaeger的路徑設(shè)置到環(huán)境變量
$ export JAEGER_URL=$(oc get route -n istio-system jaeger-query -o jsonpath='{.spec.host}')
1.1.3 從瀏覽器訪問jaeger
https://${JAEGER_URL}
1.1.4 在Jaeger儀表板的左側(cè)窗格中,從Service菜單中選擇“productpage”,然后單擊窗格底部的“Find Traces”按鈕。將顯示跟蹤列表,如下圖所示:

1.1.5 單擊列表中的某個跟蹤以打開該跟蹤的詳細(xì)視圖。如果單擊頂部(最新)跟蹤,你將看到與`/productpage相對應(yīng)的詳細(xì)信息。

上一圖中的跟蹤由幾個嵌套的span組成,每個span對應(yīng)于一個bookinfo服務(wù)調(diào)用,所有這些都是響應(yīng)/productpage請求而執(zhí)行的??傮w處理時間為2.62s,details service花費3.56ms,reviews service花費2.6s,ratings service花費5.32ms,對遠(yuǎn)程服務(wù)的每一個調(diào)用都由客戶端和服務(wù)端的span表示。例如,詳細(xì)信息客戶端范圍標(biāo)記為productpage details.myproject.svc.cluster.local:9080。嵌套在它下面的span,標(biāo)記為details details.myproject.svc.cluster.local:9080,對應(yīng)于請求的服務(wù)器處理。跟蹤還顯示對istio策略的調(diào)用,該策略反映了istio所做的授權(quán)檢查。
二、Prometheus
Prometheus是一個開源的服務(wù)監(jiān)控工具。Prometheus以指定的時間間隔從配置的目標(biāo)收集metrics,評估規(guī)則表達(dá)式,顯示結(jié)果,并在觀察到某些條件為真時觸發(fā)警報。Grafana或其他API Consumer被用于可視化展示收集到的數(shù)據(jù)。
2.1 查詢Metrics
2.1.1 驗證prometheus服務(wù)是否正在集群中運行。
$ oc get svc prometheus -n istio-system
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
prometheus 10.59.241.54 <none> 9090/TCP 2m
2.1.2 通過訪問bookinfo應(yīng)用程序生成網(wǎng)絡(luò)流量:
$ curl -o /dev/null http://$GATEWAY_URL/productpage
2.1.3 將Prometheus訪問路徑寫入環(huán)境變量
$ export PROMETHEUS_URL=$(oc get route -n istio-system prometheus -o jsonpath='{.spec.host}')
2.1.4 打開瀏覽器訪問http://${PROMETHEUS_URL}

2.1.5 在Expression字段中,輸入istio_request_duration_seconds_count,然后單擊Execute按鈕。將看到類似下圖:

2.1.6 你可以使用選擇器縮小查詢范圍。例如,istio_request_duration_seconds_count_destination_workload=“reviews-v2”僅顯示具有匹配destination_workload標(biāo)簽的計數(shù)器。有關(guān)使用查詢的更多信息,請參閱Prometheus文檔。
2.1.7 要列出所有可用的Prometheus Metrics,請運行以下命令
$ oc get prometheus -n istio-system -o jsonpath='{.items[*].spec.metrics[*].name}' requests_total request_duration_seconds request_bytes response_bytes tcp_sent_bytes_total tcp_received_bytes_total
請注意,當(dāng)在查詢中使用時,返回的度量名稱必須以istio_開頭,例如,requests_total是istio_requests_total。
三、Kiali
Kiali運行于Isito之上,用于可視化服務(wù)網(wǎng)格拓?fù)?,以提供對斷路器、請求速率等功能的可見性。Kiali提供了從Application到Service和Workload的不同層次的Service Mesh組件的可見性。Kiali實時提供了namespace的交互式圖形化界面。Kiali可以在多個層次(Application、versions、workloads)上顯示所選圖形節(jié)點或邊緣的上下文和圖表信息。
3.1 進(jìn)入Kiali的控制界面
3.1.1 訪問Kiali控制臺的路徑已經(jīng)存在。運行以下命令獲取路由和Kiali Url
$ oc get routes
3.1.2 可以看到這樣的結(jié)果:
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD
grafana grafana-istio-system.127.0.0.1.nip.io grafana http None
istio-ingress istio-ingress-istio-system.127.0.0.1.nip.io istio-ingress http None
istio-ingressgateway istio-ingressgateway-istio-system.127.0.0.1.nip.io istio-ingressgateway http None
jaeger-query jaeger-query-istio-system.127.0.0.1.nip.io jaeger-query jaeger-query edge None
kiali kiali-istio-system.127.0.0.1.nip.io kiali <all> None
prometheus prometheus-istio-system.127.0.0.1.nip.io prometheus http-prometheus None
tracing tracing-istio-system.127.0.0.1.nip.io tracing tracing edge None
3.1.3 在瀏覽器訪問Kiali https://${KIALI_URL}

使用在Custom Resource文件配置的賬戶密碼登陸
3.2 OVERVIEW PAGE
登錄后,會看到OVERVIEW PAGE,該頁面提供了系統(tǒng)中各個namespace的運行狀況的快照。

3.3 GRAPH PAGE
3.3.1 單擊左側(cè)導(dǎo)航中的“Graph”。Graph page顯示一個包含所有微服務(wù)的圖形,這些微服務(wù)由通過它們之間的請求連接。在這個頁面上,您可以看到服務(wù)是如何交互的。

3.3.2 從namespace菜單中,選擇BookInfo?,F(xiàn)在,圖表只顯示BookInfo應(yīng)用程序中的服務(wù)。
3.3.3 單擊左下角的“Legend”。Kiali顯示一個包含圖形圖例的窗口。

3.3.4 將鼠標(biāo)懸停在ProductPage節(jié)點上,將高亮顯示該節(jié)點的傳入和傳出流量。
3.3.5 單擊ProductPage節(jié)點,頁面右側(cè)顯示ProductPage的詳細(xì)信息。
3.4 SERVICES PAGE
3.4.1 單擊左側(cè)導(dǎo)航中的“Services”鏈接。在Services Page上,您可以查看集群中運行的所有Service的列表以及有關(guān)這些Service的其他信息,例如運行狀況和請求錯誤率。
3.4.2 將鼠標(biāo)hover在任何服務(wù)的運行狀況圖標(biāo)上,以查看有關(guān)該服務(wù)的運行狀況信息。當(dāng)服務(wù)處于聯(lián)機狀態(tài)并且響應(yīng)請求時沒有錯誤,則認(rèn)為它是健康的。

3.4.3 單擊“Reviews ”服務(wù)查看其詳細(xì)信息。請注意,此服務(wù)有三個不同的版本。

3.4.4 單擊其中一個服務(wù)的名稱以查看有關(guān)該服務(wù)的其他詳細(xì)信息。
3.5 ISTIO CONFIG PAGE
3.5.1 單擊左側(cè)導(dǎo)航中的istio config鏈接。在此頁面上,您可以看到當(dāng)前運行的所有配置,如Circuit Breakers, Destination Rules, Fault Injection, Gateways, Routes, Route Rules, and Virtual Services.

3.5.2 單擊其中一個配置以查看其他附加信息。

3.6 DISTRIBUTED TRACING PAGE
單擊左側(cè)導(dǎo)航中的Distributed Tracing鏈接。在這個頁面上,您可以看到Jaeger提供的跟蹤數(shù)據(jù)。
4 Grafana使用指引
Grafana是一個開源工具,用于創(chuàng)建監(jiān)控、metrics分析、并提供可視化的dashboard。您可以使用grafana查詢metrics、可視化metrics、告警,無論它們存儲在graphite、elasticsearch、opentsdb、prometheus或infloxdb。Istio通過Prometheus和Grafana進(jìn)行監(jiān)控。
本節(jié)演示如何設(shè)置和使用Istio儀表板來監(jiān)視Service Mesh的流量。你需要安裝grafana istio插件,并使用基于Web的界面查看Service Mesh流量數(shù)據(jù)。
4.1 進(jìn)入Grafana Dashboard
4.1.1 查詢并設(shè)置Granfa的route到環(huán)境變量
$ export GRAFANA_URL=$(oc get route -n istio-system grafana -o jsonpath='{.spec.host}')
4.1.2 打開瀏覽器訪問Grafana, http://${GRAFANA_URL}

4.1.3 在左上角的菜單中,選擇istio mesh dashboard以查看istio mesh metrics。

4.1.4 通過訪問bookinfo應(yīng)用程序生成一些流量:
$ curl -o /dev/null http://$GATEWAY_URL/productpage
dashboard反映通過Service Mesh的流量,類似于下圖:

4.1.5 要查看Service的詳細(xì)指標(biāo),請單擊“Services”列中的服務(wù)名稱。dashboard類似于下圖:

請注意,TCP帶寬metrics是空的,因為BookInfo只使用基于HTTP的服務(wù)。儀表板還顯示客戶端workloads和服務(wù)端workloads的metrics。通過使用dashboard頂部的菜單,你可以根據(jù)客戶端和服務(wù)端workloads,切換到不同的服務(wù)或過濾metrics。
4.1.6 要切換到workloads dashboard,請單擊左上角菜單上的Isito Workload Dashboard??吹筋愃葡聢D:

此儀表板顯示客戶端(入站)和服務(wù)端(出站)的workload metrics。你可以切換到不同的workload ;要按入站或出站工作workload 篩選指標(biāo),請使用儀表板頂部的菜單。