本系列將分成三個部分,您將學習如何使用 Helm 在 Kubernetes 上整合 Prometheus 和 Grafana,以及如何在 Grafana 上建立一個簡單的控制皮膚。Prometheus 和 Grafana 是 Kubernetes 最受歡迎的兩種開源監控工具。學習如何使用 Helm 整合這兩個工具,使您能夠輕鬆監控 Kubernetes 叢集並排除故障。您還可以更深入地瞭解叢集的健康狀況和效能,它將跟蹤 Kubernetes 叢集上的資源和效能指標。
如前所述,Prometheus 和 Grafana 是用於監控容器編排平臺的流行工具。最流行的兩個容器編排工具是 Docker Swarm 和 Kubernetes。第一部分將為您介紹使用 Prometheus 和 Grafana 的前提條件,瞭解什麼是 Prometheus 和 Grafana等。
前提條件
要跟上本指南,你需要:
- 安裝 Docker:要在你的機器上安裝 Docker,請檢視 Docker 官方文件 https://www.docker.com/。
- 安裝 Kubectl:這可以讓你與 Kubernetes 叢集通訊。要在本地機器上安裝 Kubectl 工具,請遵循 Kubectl 官方文件指南 https://kubernetes.io/docs/tasks/tools/。
- 掌握 Kubernetes 的基本知識:請確保你對 Kubernetes 有一定的瞭解。您可以閱讀 Kubernetes 官方文件 https://kubernetes.io/ 來學習 K8s 相關知識。
- 建立 Kubernetes 叢集:在Kubernetes 叢集上安裝 Prometheus 和 Grafana。本指南將使用 Minikube (快速指南 https://minikube.sigs.k8s.io/docs/start/)。這是一個免費的本地 Kubernetes 叢集。
什麼是 Prometheus?
Prometheus 是一款開源 DevOps 工具。它為 Kubernetes 等容器編排平臺提供監控和實時警報功能,以時間序列資料的形式收集和儲存來自平臺的指標。其次,它具有監控容器編排平臺的開箱即用功能,並且是 Grafana 等其他資料視覺化庫的資料來源。
Prometheus 從 Kubernetes 叢集收集的指標包括:
- Kubernetes 叢集健康狀況。
- CPU 狀態
- 記憶體使用情況
- Kubernetes 節點狀態。
- 潛在效能瓶頸報告。
- 效能指標
- 伺服器資源
什麼是 Grafana?
Grafana 是一款用於分析和互動式視覺化的多平臺、開源線上應用程式。當你將它連線到受支援的資料來源(如 Prometheus)時,它能提供:
- 互動式控制皮膚
- 互動式圖表
- 視覺化圖表
- 網路告警
無論資料來源是什麼,Grafana 都能為您查詢、視覺化和理解您的指標。除了 Prometheus,Grafana 還支援其他幾個資料來源,例如:
- InfluxDB
- AzureMonitor
- Datadog
- Graphite
- AWS CloudWatch。
- PostgreSQL
- Microsoft SQL Server (MSSQL)。
- Elasticsearch
- Google Cloud Monitoring
- MySQL
- Alertmanager
- Loki
您可以選擇從頭開始建立控制皮膚,或者匯入 Grafana 已經提供的控制皮膚,並對其進行定製以滿足您的需求。大多數 DevOps 專業人員都使用 Grafana 和 Prometheus 來建立具有資料視覺化控制皮膚的強大時序資料庫。
在這裡,我們將建立一個儀表板,用於視覺化從 Prometheus 資料來源收集的指標。
Prometheus 的架構
下圖顯示了 Prometheus 的元件和工作原理:
這些都是 Prometheus 的元件:
- Prometheus Server是 Prometheus 架構的核心元件。它是實際監控工作進行的地方。
- Alertmanager 透過電子郵件和其他通訊渠道(如 Slack)向使用者傳送告警。
- Pushgateway 可支援臨時任務。它允許使用者將時間序列資料推送到 Prometheus 目標。它還能處理短期任務的指標。
Prometheus 伺服器可進一步分為三個元件:
- Data Retrieval Worker 從容器編排平臺中抓取並收集度量資料。然後,它將指標轉換為時間序列資料。它從許多來源收集指標,這些來源在其設定中指定。
- Time Series Database 儲存來自資料檢索元件的時間序列資料。
- HTTP Server 響應時間序列資料的請求和 PromQL 查詢。然後,它將資訊顯示在網路使用者介面或儀表板上。它既可以使用 Grafana 等第三方平臺,也可以使用內建的 Prometheus Web UI。
設定 Prometheus 和 Grafana 以監控容器編排平臺的好處
設定 Prometheus 和 Grafana 進行監控能給我們帶來很多好處:
- 可以獲得一套完整的端到端解決方案,用於觀察和監控 Kubernetes 叢集。
- 可以使用 Prometheus PromQL 查詢語言查詢指標。
- 如果你有一個微服務架構,Prometheus 會同時跟蹤你的所有微服務。
- 當某個服務出現故障時,會立即發出警報。
- Grafana 儀表盤提供叢集的效能和健康狀況報告。
在 Kubernetes 上整合 Prometheus 和 Grafana 時,開發人員普遍採用兩種方法:
-
手動 Kubernetes 部署:在這種方法中,開發人員需要編寫 Kubernetes 部署和服務 YAML 檔案。需要為 Prometheus 和 Grafana 應用程式編寫 YAML。在 YAML 檔案中,指定在 Kubernetes 上整合 Prometheus 和 Grafana 的所有配置。然後,把這些檔案部署到 Kubernetes 叢集,以便 Prometheus 和 Grafana 正常工作。不過這種方法的弊端是開發人員可能會有很多 YAML 檔案,這對大多數 DevOps 實踐者來說都是令人厭煩的。如果在任何 YAML 檔案中出錯,將無法在 Kubernetes 上整合 Prometheus 和 Grafana。
-
使用 Helm:這是將應用容器部署到 Kubernetes 的最簡單易行的方法。Helm 是 Kubernetes 的官方軟體包管理器。有了 Helm,你可以簡化 Kubernetes 應用程式的安裝、部署和管理。Helm 將 Kubernetes 應用程式打包並捆綁到 Helm Chart中。
Helm Chart是所有 YAML 檔案的集合:
- 部署
- 服務
- 金鑰
- ConfigMaps Manifests
您將使用這些檔案把應用容器部署到 Kubernetes。Helm 允許使用者下載已有清單 YAML 檔案的 Helm Chart,而不是為每個應用容器建立單獨的 YAML 檔案。