idou老師教你學istio:監控能力介紹

通過了一年多的開發和測試,istio 於北京時間7月31日發佈了1.0版本,而且宣佈1.0版本已經能夠成熟的應用於生產環境。對於 istio 的各項主要功能,以前的文章已經介紹的很是詳細,而且還會有更多的文章來分析原理和實踐功能。今天咱們主要介紹的服務是 istio 流量監控能力。架構

咱們知道每一個 pod 內都會有一個 Envoy 容器,其具有對流入和流出pod的流量進行管理,認證,控制的能力。Mixer 則主要負責訪問控制和遙測信息收集。app

如拓撲圖所示,當某個服務被請求時,首先會請求 istio-policy 服務,來斷定是否具有訪問資格,若具有資格則放行反之則請求不會被下發到服務。這一切的訪問信息,都會被記錄在 Envoy 中,以後會上報給 mixer 做爲原始數據。遙測數據的收集及其餘功能徹底是靈活可控的,你既能夠配置新的收集指標和日誌,也能夠徹底禁用這些功能。

1.Prometheus 的應用和指標介紹

Prometheus 是一款開源的監控和告警系統,2016年加入 CNCF,以其靈活的檢索語言,高效的數據存儲方式以及多維度的數據模型使得愈來愈多的人使用。Istio 自0.8開始就默認的將 Prometheus 包含在內,咱們能夠經過查詢 service 或者 pod 看到普羅的運行狀態和地址。點開 Prometheus 界面,UI 十分簡潔明瞭。curl

用戶在 Expression 內輸入想要查詢數據的表達式,而且再輸入的過程當中,普羅還會在已有的指標中作出提示方便用戶查找。咱們輸入一個簡單的查詢表達式 istio_requests_total,點擊 Execute,在圖形界面中,將鼠標放到圖中的折線能夠看到請求的詳細信息。

詳細信息中的每一項均可以做爲選定參考指標的特性,例如咱們須要查詢返回值爲200的 productpage 請求總數,就能夠在以前的表達式中添加大括號和限定條件。

Istio 支持和容許用戶本身定義新的遙測數據,而且在官網->任務->遙測->收集指標和日誌中有詳細的描述。用戶能夠自定義須要的監控指標進而能夠再普羅查看監控數據結果。

2.Jaeger UI 的使用和介紹

Istio 配合 jaeger 能夠解決端到端的分佈式追蹤問題。Jaeger 於2017年9月成爲 CNCF 的成員。Jaeger 是一款開源的分佈式追蹤系統,由 Google Dapper 和 OpenZipkin 社區聯合推進。分佈式

Jager 主要可使用在微服務的架構上來完成分佈式上下文廣播,分佈式事務監控,根因分析,服務依賴關係分析,性能/延遲優化等功能。

Jaeger 的界面極其簡潔,在首頁面選擇你想了解的服務(productpage)以及選擇你想觀測的時間範圍(過去兩天),然後點擊 find trace 按鈕,頁面就會顯示過去兩天內訪問 productpage 的全部 trace。點擊 trace 的名字,則會跳轉到詳情界面。

這個界面中你能夠看到每一個請求可能會分爲不止一個的子請求,以及這個請求的處理時間。例如咱們訪問 productpage,productpage 會請求 details 和 reviews 這兩個服務,那麼初始的請求就會分爲兩個子請求,一個請求 details 的內容另外一個請求 reviews 的內容。Details 部分的請求總耗時4.99ms,reviews 部分的請求耗時5.61ms。內容返回並處理後,整個 productpage 的請求耗時21.32ms。這個詳情界面不只會體現每一個請求的耗時也反映服務之間的調用關係。根據 istio 官方給出的解釋,咱們知道 istio proxy 根據 http 部分 headers 來概括和合並請求的。

對於一個結構複雜,流量龐大的服務網格,追蹤全部的調用不但不利於收集有效數據,還會形成冗餘,浪費資源等問題,因此在制定監控服務的時候也須要去設定其採樣頻率。對於 Bookinfo 這種示例型應用,咱們的採樣率能夠設的高一點,對於大型應用就要進行適當的下降。 調整採樣率一共有兩種方式。 •在建立服務網格以前,咱們能夠提早設定好採樣頻率,在Helm模板的values.yaml文件中,pilot 內的 traceSampling 屬性能夠對採樣頻率進行修改。

打開 istio/chart/pilot/templates/deployment.yaml能夠看到一個簡單的賦值過程。

正在運行的服務網格,對 deployment istio-pilot 進行編輯。首先查看全部的deployment:
而後對其進行編輯,搜索 PILOT_TRACE_SAMPLING這個屬性,並對其值進行修改:

咱們先打開 jaeger UI肯定過去一個小時沒有任何對productpage的訪問。

然後將 PILOT_TRACE_SAMPLING的值從原有的100改成50。修改並保存後會有提示信息顯示istio-pilot已經被修改。

稍等片刻後,咱們使用腳本 curl productpage 10次。再次在jaeger UI上選擇productpage選擇過去一小時,點擊Find Trace,會發現此次只檢測到4個trace。咱們在用相同的腳本再運行一次,發現檢測到10個trace。至此咱們一共curl product page 20次總共得到10次 trace,符合總次數的50%。微服務

如今咱們用相同的方法,將 PILOT_TRACE_SAMPLING 改成100%而且稍等片刻。使用相同的腳本 curl 10次 product page,再點擊 Find trace,如今總共有20個 Trace,也就是先前的10個 trace 加上後來 curl 的10次,證實 PILOT_TRACE_SAMPLING修改完畢會採集全部的請求。性能

3.華爲雲istio服務中簡明監控介紹

在組件詳情界面中除去 CPU 使用率,內存使用這種基本的監控外,華爲雲提供了另外兩項簡明流量監控,分別是 RPS (平均處理請求次數)和 RT(平均響應時延)。RPS 以分鐘基本時間單位,縱軸則以處理請求次數爲單位,用戶能夠直觀的看到本身的應用單位時間內須要處理的請求數量。若 RPS 太高,則用戶能夠適當的採用相應措施,報障請求的高效處理。測試

RT 也是以分鐘爲單位,可是縱軸則是該時間段內平均的請求響應時間。若是個別時間段請求時延太高,用戶則須要對本身服務進行分析。

組件詳情這個界面更多的仍是提供一個 粗粒度的流量監控,將應用的工做關鍵信息最直接,最明確的呈現給用戶。方便用戶對本身的應用,資源,服務規劃進行調整和改進。在從此,華爲雲會提供維度更多的監控,分析等服務。

Istio提供不少即插即用的服務,用戶不須要修改本身的代碼,也不須要從新構建本身的應用即可以直接享用istio帶來的「紅利」。可視化的監控服務,可修改的監控內容,能夠更好地讓用戶瞭解本身應用的工做狀態。本文只介紹了入門級的istio監控內容,除上文內容外,監控服務還有更多的功能等待用戶去研究和使用。Istio就像一座金礦,而金子只屬於勤奮的淘金工人。優化

相關文章
相關標籤/搜索