本文說明如何設定 Google Kubernetes Engine 部署作業,以便使用 Google Cloud Managed Service for Prometheus 從 Istio 收集指標。本文將說明如何執行下列操作:
- 設定 Istio 回報指標。
- 設定 Managed Service for Prometheus 的 PodMonitoring 資源,以收集匯出的指標。
- 在 Cloud Monitoring 中存取資訊主頁,即可查看指標。
- 設定快訊規則來監控指標。
只有在使用 Managed Service for Prometheus 的 代管收集作業時,才適用這些操作說明。如果您使用自行部署的收集作業,請參閱 Istio 的來源存放區,瞭解安裝資訊。
這些操作說明僅供參考,適用於大多數 Kubernetes 環境。 如果因安全或機構政策限制而無法安裝應用程式或匯出工具,建議您參閱開放原始碼文件尋求支援。
如要瞭解 Istio,請參閱 Istio。
必要條件
如要使用 Managed Service for Prometheus 和代管收集作業,從 Istio 收集指標,部署作業必須符合下列規定:
- 叢集必須執行 Google Kubernetes Engine 1.21.4-gke.300 以上版本。
- 您必須執行 Managed Service for Prometheus,並啟用代管收集作業。詳情請參閱「 開始使用代管集合」一文。
Istio 會自動公開 Prometheus 格式的指標,您不必另外安裝。您可以執行下列檢查,確認 Istio Proxy 已注入為 Sidecar,且 Istiod (Istio 的控制平面) 和 Istio Proxy 都會在預期端點發出指標。
如要判斷 Istio Proxy 是否以 Sidecar 形式插入,請執行下列指令,列舉應用程式 Pod 中執行的容器:
kubectl get pod -l app=APPLICATION_NAME -n NAMESPACE_NAME -o jsonpath='{.items[0].spec.containers[*].name}'
如果發現 Pod 包含
istio
輔助容器,表示已注入匯出工具。如果未注入 Sidecar,請按照「Istio:安裝 Sidecar」一文中的操作說明進行。如要確認 Istio Proxy 是否發出指標,請執行下列指令,檢查指定 Pod 的
/stats/prometheus
端點:istio
kubectl exec POD_NAME -n NAMESPACE_NAME -c istio-proxy -- curl -sS 'localhost:15090/stats/prometheus'
如果看到原始
istio_*
和envoy_*
Prometheus 指標,表示指標已正確發出。如要確認 Istiod 也會發出類似的指標,請執行下列指令,檢查
istiod
部署作業中其中一個 Pod 的 Istiod/metrics
端點:kubectl exec -n istio-system deployment/istiod -- curl -sS 'localhost:15014/metrics'
定義 PodMonitoring 資源
如要探索目標,Managed Service for Prometheus Operator 需要與相同命名空間中的 Istio 相對應的 PodMonitoring 資源。
您可以使用下列 PodMonitoring 設定:
Istio 需要兩個獨立的 PodMonitoring 資源:一個用於監控 Istiod,另一個用於監控 Istio Proxy Sidecar,以及 Ingress 和 Egress 閘道。如要一次監控叢集中所有命名空間的 Istio Proxy 指標,請將istio-proxy
PodMonitoring 套用至每個命名空間,或設定 ClusterPodMonitoring 資源,而非每個命名空間的 PodMonitoring 資源。
如要使用 Istio 提供的 Grafana 資訊主頁,除了本文所述的 PodMonitoring 資源外,請務必一併設定 cAdvisor 和 Kubelet 抓取作業。
如要套用本機檔案的設定變更,請執行下列指令:
kubectl apply -n NAMESPACE_NAME -f FILE_NAME
您也可以使用 Terraform 管理設定。
定義規則和快訊
您可以使用下列 Rules
設定,在 Istio 指標上定義快訊:
如要套用本機檔案的設定變更,請執行下列指令:
kubectl apply -n NAMESPACE_NAME -f FILE_NAME
您也可以使用 Terraform 管理設定。
如要進一步瞭解如何將規則套用至叢集,請參閱「受管理規則評估和快訊」。
這項Rules
設定是根據 Awesome Prometheus Alerts 提供的 Istio 規則改編而成。您可以根據應用程式調整快訊閾值。
驗證設定
您可以使用 Metrics Explorer 驗證 Istio 設定是否正確。Cloud Monitoring 可能需要一到兩分鐘才能擷取指標。
如要確認指標已擷取,請按照下列步驟操作:
-
前往 Google Cloud 控制台的 leaderboard「Metrics Explorer」頁面:
如果您是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果。
- 在查詢建構工具窗格的工具列中,選取名稱為 code MQL 或 code PromQL 的按鈕。
- 確認已在「Language」(語言) 切換按鈕中選取「PromQL」。語言切換按鈕位於同一工具列,可供你設定查詢格式。
- 輸入並執行下列查詢:
sum(istio_build{cluster="CLUSTER_NAME"}) by (component)
查看資訊主頁
Cloud Monitoring 整合功能包含 Istio Envoy Prometheus 總覽資訊主頁。設定整合作業後,系統會自動安裝資訊主頁。 您也可以查看資訊主頁的靜態預覽畫面,不需安裝整合服務。
如要查看已安裝的資訊主頁,請按照下列步驟操作:
-
在 Google Cloud 控制台中,前往「Dashboards」(資訊主頁)
頁面:
如果您是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果。
- 選取「資訊主頁清單」分頁標籤。
- 選擇「整合」類別。
- 按一下資訊主頁的名稱,例如「Istio Envoy Prometheus Overview」。
如要查看資訊主頁的靜態預覽畫面,請按照下列步驟操作:
-
前往 Google Cloud 控制台的
「Integrations」(整合) 頁面:
如果您是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果。
- 按一下「Kubernetes Engine」部署平台篩選器。
- 找出 Istio 整合,然後按一下「查看詳細資料」。
- 選取「資訊主頁」分頁標籤。
疑難排解
如要瞭解如何排解指標擷取問題,請參閱「 排解擷取端問題」一文中的「 收集匯出工具資料時發生問題」一節。