使用Prometheus進行Istio可觀測性介紹
Istio服務網格通過使用邊車代理將網絡從應用層抽象出來。您可以利用Istio在整個基礎設施中實現安全和先進的網絡策略。
但Istio的另一個重要特性是可觀測性。您可以使用Istio來觀察基礎設施中所有微服務的性能和行為(見下圖)。大型組織中的網站可靠性工程師(SREs)的主要職責之一是監控其應用程序的黃金指標,如CPU利用率、內存利用率、延遲和吞吐量。
在本文中,我們將討論SREs如何從集成三個開源軟件——Istio、Prometheus和Grafana中受益。雖然Istio是最著名的服務軟件,Prometheus是最廣泛使用的監控軟件,Grafana是最著名的可視化工具。
注意:步驟已針對Istio 1.17.X進行測試
觀看Istio、Prometheus和Grafana配置視頻
如果您想通過視頻跟隨步驟,請觀看視頻:
步驟1:前往Istio附加組件並應用Prometheus和Grafana YAML文件
首先,使用命令進入Istio目錄中的附加組件文件夾。由於我使用的是1.17.1版本,對我來說路徑是istio-1.17.1/samples/addons
您會注意到,Istio 已經提供了一些 YAML 文件來配置 Grafana、Prometheus、Jaeger、Kiali 等。您可以使用以下命令來配置 Prometheus:
kubectl apply -f prometheus.yaml
kubectl apply -f grafana.yaml
請注意,這些附加的 YAML 文件默認應用於 istio-system
命名空間。

步驟 2:部署新服務並端口轉發 Istio 入口網關
為了實驗工作模型,我們將在 Istio 啟用的命名空間中部署 httpbin
服務。我們將創建一個 Istio 入口網關 對象,以從公共接收服務的流量。
我們還將端口轉發 Istio 入口網關到特定端口 – 7777。

您應該在 localhost:7777
看到以下屏幕

步驟 3:打開 Prometheus 和 Grafana 儀表板
您可以使用以下命令打開 Prometheus 儀表板。
istioctl dashboard prometheus
istioctl dashboard grafana
Grafana 和 Prometheus 都將在 localhost 上打開。

步驟 4:從 Postman 發送 HTTP 請求
我們將看到在有流量負載時,httpbin
服務如何消耗 CPU 或內存。我們將從 Postman 應用程序向 localhost:7777
發送一些 GET
和 POST
請求。

一旦您對httpbin
服務發送多次GET
或POST
請求,將會使用資源,我們可以在Grafana中看到這些資源的使用情況。但首先,我們需要在Prometheus和Grafana中配置httpbin
服務的指標。
步驟5:在Prometheus中配置指標
您可以選擇與任何Kubernetes資源相關的一系列指標,例如API服務器、應用程序、工作負載、envoy等。我們將選擇container_memory_working_set_bytes
指標進行配置。
在Prometheus應用程序中,我們將選擇要刮取指標的命名空間,使用以下搜索條件:container_memory_working_set_bytes { namespace= “istio-telemetry”}
(istio-telemetry
是我們啟用Istio的命名空間名稱,其中httpbin
服務已部署)
請注意,僅運行此操作,我們可以獲取命名空間的記憶體。由於我們希望分析我們的pod的記憶體使用情況,我們可以通過將每個pod的記憶體使用量相加來計算由pod分組的總記憶體消耗。以下查詢將幫助我們獲得所需的結果:sum(container_memory_working_set_bytes{namespace=”istio-telemetry”}) by (pod)

注意:Prometheus提供了大量靈活性來過濾、切片和切塊指標數據。本文的核心思想是展示Istio發射並將指標發送到Prometheus進行收集的能力
步驟6:在Grafana中配置Istio指標圖表
現在,您只需在Prometheus中使用查詢sum(container_memory_working_set_bytes{namespace="istio-telemetry"}) by (pod)
並繪製時間圖表。您只需在Grafana中創建一個新儀表板,將查詢粘貼到指標瀏覽器中。Grafana將繪製一個時間序列圖表。您可以根據需要編輯圖表,添加適當的名稱、圖例和標題,以便與Ops團隊的其他利益相關者共享。

有多種方法可以調整和自定義數據,並在Grafana中顯示Prometheus指標。您可以根據企業需求選擇進行所有自定義。我在視頻中做了一些實驗,歡迎查看。
結論
Istio服務網格在提供整個基礎設施的全面可觀察性方面極為強大。在本文中,我們僅提供了一個使用Istio、Prometheus和Grafana進行指標抓取和可視化的簡單用例。您可以使用Istio進行日誌記錄和追蹤,以及實時流量分析;我們將在後續博客中涵蓋這些主題。
Source:
https://dzone.com/articles/how-to-configure-istio-prometheus-and-grafana-for-monitoring