通過了一年多的開發和測試,istio 於北京時間7月31日發佈了1.0版本,而且宣佈1.0版本已經能夠成熟的應用於生產環境。對於 istio 的各項主要功能,以前的文章已經介紹的很是詳細,而且還會有更多的文章來分析原理和實踐功能。今天咱們主要介紹的服務是 istio 流量監控能力。架構
咱們知道每一個 pod 內都會有一個 Envoy 容器,其具有對流入和流出pod的流量進行管理,認證,控制的能力。Mixer 則主要負責訪問控制和遙測信息收集。app
Prometheus 是一款開源的監控和告警系統,2016年加入 CNCF,以其靈活的檢索語言,高效的數據存儲方式以及多維度的數據模型使得愈來愈多的人使用。Istio 自0.8開始就默認的將 Prometheus 包含在內,咱們能夠經過查詢 service 或者 pod 看到普羅的運行狀態和地址。點開 Prometheus 界面,UI 十分簡潔明瞭。curl
istio_requests_total
,點擊 Execute,在圖形界面中,將鼠標放到圖中的折線能夠看到請求的詳細信息。
Istio 配合 jaeger 能夠解決端到端的分佈式追蹤問題。Jaeger 於2017年9月成爲 CNCF 的成員。Jaeger 是一款開源的分佈式追蹤系統,由 Google Dapper 和 OpenZipkin 社區聯合推進。分佈式
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
修改完畢會採集全部的請求。性能
在組件詳情界面中除去 CPU 使用率,內存使用這種基本的監控外,華爲雲提供了另外兩項簡明流量監控,分別是 RPS (平均處理請求次數)和 RT(平均響應時延)。RPS 以分鐘基本時間單位,縱軸則以處理請求次數爲單位,用戶能夠直觀的看到本身的應用單位時間內須要處理的請求數量。若 RPS 太高,則用戶能夠適當的採用相應措施,報障請求的高效處理。測試
Istio提供不少即插即用的服務,用戶不須要修改本身的代碼,也不須要從新構建本身的應用即可以直接享用istio帶來的「紅利」。可視化的監控服務,可修改的監控內容,能夠更好地讓用戶瞭解本身應用的工做狀態。本文只介紹了入門級的istio監控內容,除上文內容外,監控服務還有更多的功能等待用戶去研究和使用。Istio就像一座金礦,而金子只屬於勤奮的淘金工人。優化