安裝 Prometheus

安裝 Prometheus

更新於 發佈於 閱讀時間約 5 分鐘

監控的解決方案有很多種,我這裡選擇的是 Prometheus。實際上只有 Prometheus 還不夠,真正其實會安裝以下項目:

  1. Grafana - 視覺化工具,可以用圖形顯示監控的資料。(其實還可以做 distribute tracing, log 查詢)
  2. Prometheus。
  3. Prometheus Operator - 提供 Kubernetes CRD,讓我們透過 CRD 設定 Prometheus 的設定。
  4. Prometheus Node Exporter - 蒐集 Kubernetes Worker Node 的資訊(Linux 提供的資訊)。
  5. kube-state-metrics - 蒐集 Kubernetes 的資訊(Kubernetes API Server 提供的資訊)。
  6. Prometheus Adapter for Kubernetes Metrics APIs.

以上這些安裝項目都可以用 kube-prometheus-stack 這個專案提供的 helm chart 安裝。

https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack

註 - kube-prometheus 專案其實僅提供 YAML 的方式安裝。而 kube-prometheus-stack 專案將 kube-prometheus 包裝成 helm chart。

https://github.com/prometheus-operator/kube-prometheus

安裝 kube-prometheus-stack

用 helm 安裝:

$ helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
$ helm repo update
$ helm install kube-prometheus-stack prometheus-community/kube-prometheus-stack -n monitoring --create-namespace

Reference:

https://artifacthub.io/packages/helm/prometheus-community/kube-prometheus-stack

檢視 Web UI

當安裝完畢後,有 3 個 Web UI 可以使用,參考如下:

Prometheus-UI

kubectl port-forward service/prometheus-kube-prometheus-prometheus 9090

Alert Manager UI

kubectl port-forward svc/prometheus-kube-prometheus-alertmanager 9093

Grafana

kubectl port-forward deployment/prometheus-grafana 3000

Grafana 預設的帳號、密碼如下:

user: admin
pwd: prom-operator

PodMonitor, ServiceMonitor

安裝 helm chart 的時候,我認為建議將以下值設定為 false,讓 Prometheus 抓取全部的 PodMonitor, ServiceMonitor,不透過 label 篩選(避免學習的時候會發生 PodMonitor, ServiceMonitor 找不到的問題):

prometheus.prometheusSpec.podMonitorSelectorNilUsesHelmValues
prometheus.prometheusSpec.serviceMonitorSelectorNilUsesHelmValues
avatar-img
C# 工匠的 DevOps 旅程
5會員
12內容數
專注於 C#, DevOps 的工程師
留言
avatar-img
留言分享你的想法!
本文探討 C# 非同步程式設計時應注意的幾個要點,包括全面採用非同步模式、避免混用同步與非同步程式碼、勿使用async void、以及正確使用CancellationToken等。這些建議不僅有助於提升程式的效能,也可以減少Deadlock等問題,讓開發者更有效地處理異常情況,確保應用程式的穩定性.
Code Coverage 是什麼? 程式碼覆蓋率(Code Coverage)是一種軟體測試指標,用百分比表示,數值越高越好。
本文介紹瞭如何在C#專案中建立和使用packages.lock.json檔案,以確保每次執行dotnet restore時都可以獲得相同的packages集合。我們還討論了dotnet restore抓取不同packages的原因,並提供了相關的解決方案。
本文探討 C# 非同步程式設計時應注意的幾個要點,包括全面採用非同步模式、避免混用同步與非同步程式碼、勿使用async void、以及正確使用CancellationToken等。這些建議不僅有助於提升程式的效能,也可以減少Deadlock等問題,讓開發者更有效地處理異常情況,確保應用程式的穩定性.
Code Coverage 是什麼? 程式碼覆蓋率(Code Coverage)是一種軟體測試指標,用百分比表示,數值越高越好。
本文介紹瞭如何在C#專案中建立和使用packages.lock.json檔案,以確保每次執行dotnet restore時都可以獲得相同的packages集合。我們還討論了dotnet restore抓取不同packages的原因,並提供了相關的解決方案。