ISTIO文檔解讀學習(四)

                                策略與可觀察性

策略:Istio允許應用程序自定義策略,用以在運行時強制執行相應的規則,如:1)限流用於動態限制發送給服務的流量。2)Denials、白名單和黑名單用於限制服務的訪問,3)Header 的重寫和重定向。

Istio使用屬性來控制在服務網格中運行的服務的運行時行爲。屬性是具有名稱和類型的元數據片段,用以描述入口和出口流量,以及這些流量所屬的環境。Istio屬性攜帶特定信息片段,例如API請求的錯誤代碼,API請求的延遲或TCP連接的原始IP地址,Istio的主要屬性生產者是Envoy,儘管專業的Mixer適配器和服務也可以生成屬。屬性名:Istio屬性使用類似Java的完全限定標識符作爲屬性名。允許的字符是 [_.a-z0-9] 。該字符 "." 用作命名空間分隔符。例如, request.size 和 source.ip 。屬性類型:Istio屬性是強類型的。支持的屬性類型由 ValueType 定義。

Mixer:基礎設施的後端被設計用於提供建立服務支持功能。它們包括訪問控制系統,遙測捕獲系統,配額執行系統,計費系統等。傳統服務會直接和這些後端系統打交道,和後端緊密耦合,並集成其中的個性化語義以及用法。Mixer在應用程序代碼和基礎架構後端之間提供通用中介層。它的設計將策略決策移出應用層,用運維人員能夠控制的配置取而代之。應用程序代碼不再將應用程序代碼與特定後端集成在一起,而是與Mixer進行相當簡單的集成,然後Mixer負責與後端系統連接。Mixer的設計目的是改變層次之間的邊界,以此來降低總體的複雜性。從服務代碼中剔除策略邏輯,改由運維人員進行控制。

Mixer 提供三個核心功能:1)前提條件檢查。允許服務在響應來自服務消費者的傳入請求之前驗證一些前提條件。前提條件可以包括服務使用者是否被正確認證,是否在服務的白名單上,是否通過ACL檢查等等。2)配額管理:使服務能夠在分配和釋放多個維度上的配額,配額這一簡單的資源管理工具可以在服務消費者對有限資源發生爭用時,提供相對公平的(競爭手段)。頻率控制就是配額的一個實例。3)遙測報告:使服務能夠上報日誌和監控。在未來,它還將啓用針對服務運營商以及服務消費者的跟蹤和計費流。

可觀察性:Istio 爲網格內所有的服務通信生成詳細的遙測數據。這種遙測技術提供了服務行爲的可觀察性,使運維人員能夠排查故障、維護和優化應用程序,而不會給服務的開發人員帶來任何額外的負擔。通過 Istio,運維人員可以全面瞭解到受監控的服務如何與其他服務以及 Istio 組件進行交互。Istio 生成以下類型的遙測數據 1)指標:Istio 基於4個監控的黃金標識(延遲、流量、錯誤、飽和)生成了一系列服務指標。Istio 還爲網絡控制平面提供了更詳細的指標。除此以外還提供了一組默認的基於這些指標的網格監控儀表板。2)分佈式追蹤:Istio爲每個服務生成分佈式追蹤 span,可以理解網格內服務的依賴和調用流程。3)訪問日誌:當流量流入網格中的服務時,Istio 可以生成每個請求的完整記錄,包括源和目標的元數據。此信息使運維人員能夠將服務行爲的審查控制到單個工作負載實例的級別。這些機制的應用是基於一組屬性的,每個請求都會將這些屬性呈現給Mixer。在Istio中,這些屬性來自於Sidecar代理(一般是Envoy)的每一次請求。

指標:(Metric)提供了一種以聚合的方式監控和理解行爲的方法。爲了監控服務行爲,Istio 爲服務網格中所有出入的服務流量都生成了指標。這些指標提供了關於行爲的信息,例如總流量數、錯誤率和請求響應時間。除了監控網格中服務的行爲外,監控網格本身的行爲也很重要。Istio 組件可以導出自身內部行爲的指標,以提供對網格控制平面的功能和健康情況的洞察能力。Istio 指標收集由運維人員配置來驅動。運維人員決定如何以及何時收集指標,以及指標本身的詳細程度。這使得它能夠靈活地調整指標收集來滿足個性化需求。

代理級別指標:Istio 指標收集從 sidecar 代理(Envoy)開始。每個代理爲通過它的所有流量(入站和出站)生成一組豐富的指標。代理還提供關於它本身管理功能的詳細統計信息,包括配置信息和健康信息。Envoy 生成的指標提供了資源(例如監聽器和集羣)粒度上的網格監控。因此,爲了監控 Envoy 指標,需要了解網格服務和 Envoy 資源之間的連接。

Istio 允許運維人員在每個工作負載實例上選擇生成和收集哪個 Envoy 指標。默認情況下,Istio 只支持 Envoy 生成的統計數據的一小部分,以避免依賴過多的後端服務,還可以減少與指標收集相關的 CPU 開銷。然而,運維人員可以在需要時輕鬆地擴展收集到的代理指標集。這支持有針對性地調試網絡行爲,同時降低了跨網格監控的總體成本。Envoy文檔包括了Enovy統計信息收集的詳細說明。Enovy統計裏的操作手冊提供了有關控制代理級別指標生成的更多信息。服務級別指標:除了代理級別指標之外,Istio 還提供了一組用於監控服務通信的面向服務的指標。這些指標涵蓋了四個基本的服務監控需求:延遲、流量、錯誤和飽和情況。Istio 帶有一組默認的儀表盤,用於監控基於這些指標的服務行爲。

默認的istio指標由 Istio 提供的配置集定義並默認導出到Prometheus。運維人員可以自由地修改這些指標的形態和內容,更改它們的收集機制,以滿足各自的監控需求。收集指標任務爲定製 Istio 指標生成提供了更詳細的信息。服務級別指標的使用完全是可選的。運維人員可以選擇關閉指標的生成和收集來滿足自身需要。控制平面指標:每一個 Istio 的組件(Pilot、Galley、Mixer)都提供了對自身監控指標的集合。這些指標容許監控 Istio 自己的行爲(這與網格內的服務有所不同)。分佈式追蹤:分佈式追蹤通過監控流經網格的單個請求,提供了一種監控和理解行爲的方法。追蹤使網格的運維人員能夠理解服務的依賴關係以及在服務網格中的延遲源。Istio 支持通過 Envoy 代理進行分佈式追蹤。代理自動爲其應用程序生成追蹤 span,只需要應用程序轉發適當的請求上下文即可。Istio 支持很多追蹤系統,包括Zipkin、Jaeger、LighStep、Datadog。運維人員控制生成追蹤的採樣率(每個請求生成跟蹤數據的速率)。這允許運維人員控制網格生成追蹤數據的數量和速率。訪問日誌:提供了一種從單個工作負載實例的角度監控和理解行爲的方法。Istio可以以一組可配置的格式集生成服務流量的訪問日誌,爲運維人員提供日誌記錄的方式、內容、時間和位置的完全控制。Istio 向訪問日誌機制暴露了完整的源和目標元數據,允許對網絡通信進行詳細的審查。訪問日誌可以在本地生成,或者導出到自定義的後端基礎設施,包括Fluentd。

安裝和示例在istio有詳盡的文檔,在本地測試時會遇到和文檔結果不一致的現象,多半時版本和環境的差異,下圖是book info的整體架構和內部具體實現流程:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章