iT邦幫忙

2024 iThome 鐵人賽

DAY 28
0
Kubernetes

Kubernetes三十天就上手系列 第 28

Day 28- 使用 Prometheus 與 Grafana 監控 Kubernetes

  • 分享至 

  • xImage
  •  

使用 Prometheus 與 Grafana 監控 Kubernetes

關於 Prometheus 與 Grafana

Prometheus 和 Grafana 是當今 Kubernetes 生態系統中最常用的開源監控和可視化工具。Prometheus 用於收集和儲存來自各種來源的監控資料,而 Grafana 用於將這些資料可視化,幫助運維人員快速了解系統狀況。
下圖是 prometheus.io 所提供的架構圖:

prometheus.io

這張圖展示了 Prometheus 監控系統的整體架構,說明了各個組件之間的交互關係以及資料流的走向。
Prometheus Server 是系統的核心,負責資料檢索和儲存,而 Alertmanager 和 Grafana 則負責告警處理和資料可視化。這樣的架構確保了系統運維的可觀測性和自動化告警能力。

Kube Prometheus Stack

Kube Prometheus Stack 是一個集成的開源解決方案,專門用於在 Kubernetes Cluster 中實現全面的監控和告警管理。它包括 Prometheus、Grafana、Alertmanager 以及其他相關工具,通過 Prometheus Operator 來簡化這些組件的部署和運維管理。以下將詳細說明如何使用 Kube Prometheus Stack 來設定和管理 Kubernetes Cluster 的監控系統。

Kube Prometheus Stack 的主要組件

  • Prometheus:用於收集和儲存時間序列資料,這些資料主要來自 Kubernetes 的應用和基礎設施。
  • Grafana:一個可視化工具,可以創建儀表板來監控 Prometheus 收集的資料,並幫助用戶洞察 Cluster 運行狀況。
  • Alertmanager:負責處理 Prometheus 發送的告警,並根據設定的路由策略發送通知(如電子郵件、Slack、PagerDuty 等)。
  • Prometheus Operator:簡化了 Prometheus Cluster 的部署、管理和操作,並支援自定義 Prometheus 監控設定的定義。

安裝 Kube Prometheus Stack

a. 添加 Helm Repository

首先,通過 Helm 添加 prometheus-community 的 Helm Chart 儲存庫:

helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update

b. 創建命名空間

為了更好地管理 Kube Prometheus Stack,可以創建一個專用的命名空間,例如 monitoring

kubectl create namespace monitoring

c. 安裝 Kube Prometheus Stack

使用以下命令來安裝 Kube Prometheus Stack 到 monitoring 命名空間:

helm install kube-prometheus-stack prometheus-community/kube-prometheus-stack --namespace monitoring

這將自動部署 Prometheus、Grafana、Alertmanager 和 Prometheus Operator 等組件。
執行正確後的訊息如下:

NAME: prometheus
LAST DEPLOYED: Mon Aug 12 14:40:21 2024
NAMESPACE: monitoring
STATUS: deployed
REVISION: 1
NOTES:
kube-prometheus-stack has been installed. Check its status by running:
  kubectl --namespace monitoring get pods -l "release=prometheus"

Visit https://github.com/prometheus-operator/kube-prometheus for instructions on how to create & configure Alertmanager and Prometheus instances using the Operator.

存取和設定 Grafana

要讓外部能夠存取Grafana,你需要對Grafana的服務進行一些設定。以下是基本步驟:

a. 修改 Grafana 的 Service

安裝 kube-prometheus-stack 之後,Grafana 的服務通常會設定為 ClusterIP,這意味著它只能在 Cluster 內部存取。你需要將其更改為 NodePortLoadBalancer

你可以通過以下命令來修改服務類型:

kubectl -n monitoring edit svc prometheus-grafana

在打開的編輯器中,將 typeClusterIP 更改為 NodePortLoadBalancer。例如:

spec:
  type: NodePort

保存並退出編輯器。

b. 確認 NodePort 的端口號

如果選擇了 NodePort,可以使用以下命令來檢查已分配的端口號:

kubectl -n monitoring get svc prometheus-grafana

這會顯示 NodePort 的端口號,通常是在 30000-32767 範圍內的隨機端口。

c. 存取 Grafana

如果使用 NodePort,可以通過以下URL格式存取 Grafana:

http://<Node_IP>:<NodePort>

<Node_IP> 是 Cluster 中任何一個節點的 IP 地址,<NodePort> 是上一步檢查到的端口號。

如果使用 LoadBalancer,則需要查找分配給 LoadBalancer 的外部 IP 地址,然後通過該 IP 存取。

d. 設定 Grafana 存取用戶名和密碼

預設情況下,Grafana 的用戶名是 admin,初始密碼也設為 prom-operator。可以在首次登錄時更改這個密碼。

這樣設定完成後,你應該可以從外部網絡存取你的 Grafana 了。

e. 設定和使用 Grafana 儀表板

Grafana 預裝了多個 Kubernetes 監控儀表板,這些儀表板直接從 Prometheus 中提取資料並可視化顯示。這些儀表板涵蓋了 Cluster 健康狀態、Pod 性能、節點資源利用率等關鍵指標。你可以根據需要自定義或創建新的儀表板來滿足特定需求。

Prometheus Operator 的作用

Prometheus Operator 是 Kube Prometheus Stack 的核心,它簡化了 Prometheus Cluster的部署和管理。通過 Operator,你可以:

  • 自動部署和管理 Prometheus Cluster:使用自定義資源(Custom Resource Definitions, CRDs)來定義 Prometheus 實例、告警規則和 Grafana Dashboards 等。
  • 動態管理監控目標:Prometheus Operator 使得監控設定的管理更加簡單,可以自動調整監控目標和告警規則。
  • 統一管理告警規則和錄製規則:允許運維團隊將所有監控和告警設定集中管理,並支援即時應用更改。

設定和管理告警規則

a. 預定義告警規則

Kube Prometheus Stack 包含了許多預定義的告警規則,這些規則涵蓋了常見的監控需求,如Cluster健康狀況、節點資源使用、Pod 可用性等。

b. 自定義告警規則

你可以根據具體需求添加自定義的告警規則。這些規則可以通過 PrometheusRule 這個自定義資源來定義。例如:

apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
  name: custom-alert-rules
  namespace: monitoring
spec:
  groups:
  - name: example
    rules:
    - alert: HighMemoryUsage
      expr: sum(container_memory_usage_bytes) by (pod) / sum(container_spec_memory_limit_bytes) by (pod) > 0.9
      for: 10m
      labels:
        severity: critical
      annotations:
        summary: "Pod {{ $labels.pod }} is using more than 90% of its memory limit"

這個告警規則會在 Pod 的記憶體使用超過 90% 並持續 10 分鐘時觸發一個嚴重級別的告警。

總結

Kube Prometheus Stack 提供了 Kubernetes Cluster 監控的全套解決方案。通過 Prometheus、Grafana 和 Prometheus Operator 的緊密集成,你可以實現高效的監控、告警和可視化,確保 Kubernetes Cluster 的健康和穩定運行。這個工具適合希望對 Cluster 進行深度監控並需要靈活設定告警和儀表板的運維團隊。


上一篇
Day 27- Kubernetes 中的網路安全 Network Policies
下一篇
Day 29- 使用 Kubernetes Dashboard 圖形介面管理 Cluster
系列文
Kubernetes三十天就上手30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言