如何使用 Helm 在 K8s 上整合 Prometheus 和 Grafana|Part 1

Seal數澈發表於2023-12-20

本系列將分成三個部分,您將學習如何使用 Helm 在 Kubernetes 上整合 Prometheus 和 Grafana,以及如何在 Grafana 上建立一個簡單的控制皮膚。Prometheus 和 Grafana 是 Kubernetes 最受歡迎的兩種開源監控工具。學習如何使用 Helm 整合這兩個工具,使您能夠輕鬆監控 Kubernetes 叢集並排除故障。您還可以更深入地瞭解叢集的健康狀況和效能,它將跟蹤 Kubernetes 叢集上的資源和效能指標。

 

如前所述,Prometheus 和 Grafana 是用於監控容器編排平臺的流行工具。最流行的兩個容器編排工具是 Docker Swarm 和 Kubernetes。第一部分將為您介紹使用 Prometheus 和 Grafana 的前提條件,瞭解什麼是 Prometheus 和 Grafana等。

 

前提條件

要跟上本指南,你需要:

 

 

什麼是 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 的元件和工作原理:

 

image

 

這些都是 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 檔案。

相關文章