在這個由三部分組成的系列中,您將了解 習 如何使用 Helm 在 Kubernetes 上整合 Prometheus 和 Grafana,以及如何在 Grafana 上建立簡單的儀表板。 Prometheus 和 Grafana 是 Kubernetes 上最流行的兩個開源監控工具。 了解 習 如何使用 Helm 整合這兩個工具,從而輕鬆監控 Kubernetes 集群並對其進行故障排除。您還將更深入地了解集群的執行狀況和效能,這將跟蹤 Kubernetes 集群上的資源和效能指標。
如前所述,Prometheus 和 Grafana 是用於監控容器編排平台的流行工具。 兩個最流行的容器編排工具是 Docker Swarm 和 Kubernetes。 第一部分將向您介紹使用 Prometheus 和 Grafana 的前提條件,並了解 Prometheus 和 Grafana 是什麼。
要跟上本指南的進度,您需要:
安裝 docker:要在計算機上安裝 docker,請檢視官方 docker 文件
安裝 kubectl:這允許您與 Kubernetes 集群進行通訊。 若要在本地計算機上安裝 Kubectl 工具,請遵循官方 Kubectl 文件指南
Kubernetes 基礎知識:確保您對 Kubernetes 有一定的了解。 您可以通過閱讀 Kubernetes 官方文件來了解有關 K8S 的更多資訊 習。
設定 Kubernetes 集群:在 Kubernetes 集群上安裝 Prometheus 和 Grafana。 本指南將使用 minikube(快速指南這是乙個免費的本地 Kubernetes 集群。
Prometheus 是乙個開源的 DevOps 工具。 它為 Kubernetes 等容器編排平台提供監控和實時告警功能,以時序資料的形式從平台收集和儲存指標。 其次,它具有監控容器編排平台的開箱即用功能,並且是其他資料視覺化庫(如 Grafana)的資料來源。
Prometheus 從 Kubernetes 集群收集的指標包括:
Kubernetes 集群執行狀況。
CPU 狀態。
記憶體使用量。
Kubernetes 節點狀態。
潛在的效能瓶頸報告。
效能指標。 伺服器資源。
Grafana 是乙個多平台、開源**應用程式,用於分析和互動式視覺化。 當您將其連線到受支援的資料來源(如 Prometheus)時,它將提供:
互動式控制面板。
互動式圖表。
可視 化。
網路警報。 無論資料來源是什麼,Grafana 都可以為您查詢、視覺化和理解您的指標。 除了 Prometheus 之外,Grafana 還支援其他幾個資料來源,例如:
influxdb
azuremonitor
datadog
graphite
aws cloudwatch。
postgresql
microsoft sql server (mssql)。
elasticsearch
google cloud monitoring
mysqlalertmanager
Loki 可以選擇從頭開始建立儀表板,或匯入 Grafana 已經提供的儀表板並對其進行自定義以滿足您的需求。 大多數 DevOps 專業人員使用 Grafana 和 Prometheus 建立具有資料視覺化儀表板的強大時間序列資料庫。
在這裡,我們將建立乙個儀表板,用於視覺化從 Prometheus 資料來源收集的指標。
下圖顯示了 Prometheus 的元件及其工作原理
這些都是 Prometheus 的元件:
prometheus server是 Prometheus 架構的核心元件。 這是實際監控工作發生的地方。
alertmanager通過電子郵件和其他通訊渠道(如 Slack)向使用者傳送警報。
pushgateway可以支援臨時任務。 它允許使用者將時間序列資料推送到 Prometheus 目標。 它還處理短期任務的指標。
Prometheus 伺服器可以進一步分為三個元件:
data retrieval worker從容器編排平台抓取和收集指標。 然後,它將指標轉換為時間序列資料。 它從許多指標中收集指標,這些指標在其設定中指定。
time series database儲存來自資料檢索元件的時間序列資料。
http server響應時序資料的請求和 promql 查詢。 然後,它會在 Web 使用者介面或儀表板上顯示資訊。 它既可以使用 Grafana 等第三方平台,也可以使用內建的 Prometheus Web UI。
設定 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 圖表中。
helm chart 是所有 yaml 檔案的集合:
部署
服務業
鑰匙
configmaps manifests
你將使用這些檔案將應用程式容器部署到 Kubernetes。 Helm 允許使用者擁有帶有清單 YAML 檔案的 Helm 圖表,而不是為每個應用程式容器建立單獨的 YAML 檔案。