日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

Prometheus和Prometheus Operator的配置和使用在實際環境中可能會因版本和具體的Kube.NETes發行版而有所不同。為了獲得更詳細和準確的指導,請查閱官方文檔和適用于您特定環境的教程。
一、概述

Prometheus是一種開源的監控和警報工具,用于收集和記錄應用程序和系統的度量數據。它特別適用于在Kubernetes集群中監控容器化應用程序。Kubernetes集群中通常與Prometheus一起使用的組件是Prometheus Operator和Grafana。

以下是在Kubernetes中使用Prometheus的主要步驟:

安裝Prometheus Operator:Prometheus Operator是一種Kubernetes控制器,用于簡化Prometheus的部署和管理。您可以通過在Kubernetes中部署Prometheus Operator來自動設置和管理Prometheus實例。

配置Prometheus實例:Prometheus Operator將通過Kubernetes的自定義資源定義(CRD)創建和管理Prometheus實例。您可以使用PrometheusRule CRD定義監控規則,并使用ServiceMonitor CRD定義需要監控的目標(例如Kubernetes服務)。

配置和導入Dashboard:Grafana通常與Prometheus一起使用,用于可視化監控指標。您可以在Grafana中導入Prometheus的預定義儀表板或自定義儀表板來查看和分析度量數據。

監控應用程序和系統:Prometheus通過HTTP端點從目標應用程序和系統中拉取度量數據。您可以在應用程序中暴露Prometheus格式的度量數據,并在ServiceMonitor中定義用于監控的目標。

警報配置:Prometheus還支持配置警報規則,以便在達到特定閾值或條件時觸發警報。警報規則可以定義為PrometheusRule CRD。

請注意,Prometheus和Prometheus Operator的配置和使用在實際環境中可能會因版本和具體的Kubernetes發行版而有所不同。為了獲得更詳細和準確的指導,請查閱官方文檔和適用于您特定環境的教程。

圖片圖片

二、常見的幾款監控工具

以下這些工具可以用于在 Kubernetes 集群中實現監控和指標收集,以便于監視集群中的各種資源和應用的性能。

  • Heapster:Heapster 是一個 Kubernetes 集群的資源監控工具,用于收集和匯總資源使用情況數據,如 CPU、內存、網絡等。
  • Metrics Server:Metrics Server 是 Kubernetes 官方提供的一個輕量級指標收集器,用于提供節點和 Pod 等資源的實時性能指標,可以用于水平自動擴展等。
  • Prometheus Operator:Prometheus Operator 是一個 Kubernetes 控制器,用于管理和部署 Prometheus 和相關的監控組件。它可以自動創建和管理 Prometheus 實例、ServiceMonitor 和其他配置。
  • kube-prometheus 或 kube-prometheus-stack:這是一個基于 Prometheus 的 Kubernetes 集群監控解決方案。它包含了一系列組件,用于部署和管理 Prometheus、Alertmanager、Grafana 等,以實現對 Kubernetes 集群和應用的全面監控。

heapster-》metrics-server-》prometheus-operator -》kube-prometheus-》kube-prometheus-stack

  • prometheus-operator Github地址:https://github.com/prometheus-operator/prometheus-operator
  • kube-prometheus GitHub地址:https://github.com/prometheus-operator/kube-prometheus
  • kube-prometheus-stack GitHub地址:https://github.com/prometheus-community/helm-charts/tree/mAIn/charts/kube-prometheus-stack

這些工具的組合可以幫助您搭建一個完整的監控系統,用于監視 Kubernetes 集群中的資源利用率、應用的性能、服務的可用性等指標。請注意,隨著時間的推移,Kubernetes 社區的工具和技術也可能會有變化和演進,因此在使用這些工具時,建議查閱相關文檔以獲得最新信息和最佳實踐。

1)kube-prometheus 和 kube-prometheus-stack 區別

"kube-prometheus" 和 "kube-prometheus-stack" 本質上是同一個項目,只是在不同的時間和版本中使用了不同的名稱。"kube-prometheus-stack" 是 "kube-prometheus" 項目的更新版本,它提供了更多的功能、改進和修復。

  • 最初,項目被稱為 "kube-prometheus",但隨著時間的推移,項目團隊對項目進行了大量的改進和擴展,并將其重命名為 "kube-prometheus-stack",以更好地反映其提供的綜合性監控解決方案。
  • "kube-prometheus-stack"(或簡稱 "kube-prometheus")是一個在 Kubernetes 集群中部署和管理 Prometheus 監控系統以及相關組件的綜合解決方案。它集成了 Prometheus、Grafana、Alertmanager 等一系列組件,還包括預配置的監控規則和儀表盤,以及一鍵部署功能。用戶可以通過部署 "kube-prometheus-stack" 來快速啟動一個全面的 Kubernetes 集群監控系統,無需逐個配置各個組件。

總結起來,"kube-prometheus-stack" 是 "kube-prometheus" 項目的更新版本,提供更多的功能和改進,是一個便捷的綜合性監控解決方案,適合在 Kubernetes 環境中快速部署和使用。

2)Prometheus Operator 和kube-prometheus 或 kube-prometheus-stack對比

"Prometheus Operator" 和 "kube-prometheus"(或 "kube-prometheus-stack")都是用于在 Kubernetes 集群中部署和管理 Prometheus 監控系統的工具。它們有一些相似之處,但也存在一些區別。以下是它們的主要特點和區別的對比:

Prometheus Operator:

  • 核心功能:Prometheus Operator 是一個 Kubernetes 控制器,專門用于管理 Prometheus 和相關組件的配置和部署。它自動創建和管理 Prometheus 實例、ServiceMonitor、Alertmanager、PrometheusRule 等 Kubernetes 資源。
  • 聲明式配置:Prometheus Operator 通過自定義資源定義(Custom Resource Definitions,CRDs)來實現聲明式配置。您可以創建 Prometheus、ServiceMonitor 等資源對象來定義監控配置,Operator 會根據這些定義自動創建和維護相關的資源。
  • 自動發現:Prometheus Operator 支持自動發現 Kubernetes 中的 Service、Pod、Namespace 等資源,無需手動配置每個監控目標。
  • 生態系統整合:Prometheus Operator 集成了 Grafana 和 Alertmanager,并可以輕松與其他監控工具集成。
  • 靈活性:Prometheus Operator 允許根據不同的需求和配置選擇性地部署多個 Prometheus 實例,每個實例可以針對特定的監控任務進行配置。

kube-prometheus 或 kube-prometheus-stack:

  • 綜合解決方案:kube-prometheus(或 kube-prometheus-stack)是一個完整的監控解決方案,集成了 Prometheus、Grafana、Alertmanager 等一系列組件,以及一些預配置的監控規則和儀表盤。
  • 快速啟動:kube-prometheus 提供了一鍵式的部署方式,適合快速啟動一個完整的監控系統,無需逐個配置各個組件。
  • 預配置規則和儀表盤:kube-prometheus 提供了一些默認的監控規則和 Grafana 儀表盤,可以快速啟用監控功能。
  • 集成和擴展:由于 kube-prometheus 集成了多個組件,您可以使用這個解決方案來快速部署一個全面的監控系統,并且可以根據需要進行定制和擴展。

綜合來看,Prometheus Operator 專注于 Prometheus 和相關資源的管理和自動化配置,而 kube-prometheus 或 kube-prometheus-stack 則是一個更加綜合的解決方案,適合快速啟動一個完整的監控系統,尤其對于剛開始使用 Prometheus 的用戶來說,可以減少配置的復雜性。您可以根據實際需求和情況選擇合適的工具。

三、Prometheus Operator 架構

圖片圖片

Prometheus Operator 是一個用于在 Kubernetes 集群中自動化部署和管理 Prometheus 監控系統的控制器。它采用了聲明式配置的方式,通過 Kubernetes 自定義資源定義(Custom Resource Definitions,CRDs)來定義和管理 Prometheus、ServiceMonitor、Alertmanager、PrometheusRule 等資源對象。以下是 Prometheus Operator 的架構說明:

  • Prometheus Operator 控制器:Prometheus Operator 控制器是一個運行在 Kubernetes 集群中的控制器,負責監聽 Prometheus 相關的自定義資源變化,根據變化自動執行相應的操作。
  • Prometheus CRD:Prometheus Operator 引入了自定義資源定義(CRD) Prometheus,用于定義 Prometheus 實例的配置。在 Prometheus CRD 中,您可以定義監控的規則、數據存儲、數據保留策略等。
  • ServiceMonitor CRD:ServiceMonitor 是另一個自定義資源,用于定義要監控的應用程序。每個 ServiceMonitor 都關聯到一個或多個 Kubernetes 的 Service,Prometheus Operator 將自動發現這些關聯的服務,并生成適當的監控配置。
  • Alertmanager CRD:類似于 Prometheus 和 ServiceMonitor,Prometheus Operator 還支持 Alertmanager 自定義資源,用于定義 Alertmanager 實例的配置。
  • PrometheusRule CRD:PrometheusRule 自定義資源用于定義 Prometheus 的告警規則。通過這些規則,您可以指定應該在 Prometheus 中生成哪些告警。
  • 自動發現和配置生成:Prometheus Operator 根據定義的 ServiceMonitor 和 PrometheusRule 自動發現和生成相應的監控配置。它會監聽 Kubernetes 中的變化,如服務的創建、刪除或標簽的變更,以及規則的更新,然后自動更新 Prometheus 的配置文件。
  • Prometheus 部署:Prometheus Operator 會基于 Prometheus 自定義資源的定義,在 Kubernetes 集群中部署 Prometheus 實例。Operator 負責管理配置、Pod 的生命周期、版本升級等。
  • 集成 Grafana 和 Alertmanager:Prometheus Operator 通常也與 Grafana 和 Alertmanager 集成,可以配置 Grafana 和 Alertmanager 自定義資源,以便自動部署和配置這些組件。

ServiceMonitor 作用和示例講解:

ServiceMonitor 是 Prometheus Operator 中的一個自定義資源定義(CRD),用于定義要監控的應用程序服務。它的作用是指定哪些服務需要被 Prometheus 監控,以及如何進行監控。ServiceMonitor 在 Prometheus Operator 中的使用非常重要,因為它能夠自動發現被監控的服務,并生成適當的監控配置。

下面是一個 ServiceMonitor 的示例講解:

假設有一個名為 "my-App" 的應用程序在 Kubernetes 集群中運行,我們希望 Prometheus 監控該應用程序的性能指標。首先,我們需要創建一個 ServiceMonitor 自定義資源來定義該應用程序的監控配置。

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: my-app-monitor
  namespace: default
spec:
  selector:
    matchLabels:
      app: my-app
  endpoints:
    - port: web
      interval: 30s

在上述示例中:

  • apiVersion 和 kind 指定了這是一個 ServiceMonitor 自定義資源。
  • metadata 中的 name 指定了 ServiceMonitor 對象的名稱。
  • spec 部分定義了監控的配置。在 selector 中,我們使用了 matchLabels 來選擇帶有 app: my-app 標簽的 Pod。這意味著只有具有該標簽的 Pod 會被監控。
  • 在 endpoints 中,我們定義了監控的端點信息。在這個示例中,我們監控了名為 "web" 的端口,并指定了抓取數據的時間間隔為 30 秒。

通過創建這個 ServiceMonitor 對象,Prometheus Operator 將自動發現帶有標簽 app: my-app 的 Pod,并在 Prometheus 配置中生成相應的監控作業(job)。這樣,Prometheus 就會定期抓取這些 Pod 的指標數據,以進行監控和告警。

通過使用 Prometheus Operator,您可以通過簡單的聲明式配置來自動管理和擴展 Prometheus 監控系統,從而使監控的部署和維護更加簡單和可靠。

四、快速在k8s內搭建 Prometheus 全家桶

最開始是Heapster+cAdvisor方式監控,這是Prometheus Operator出現之前的k8s監控方案。后來出現了Prometheus Operator,但是目前Prometheus Operator已經不包含完整功能,完整的解決方案已經變為kube-prometheus(或kube-prometheus-stack)。

"kube-prometheus" 和 "kube-prometheus-stack" 本質上是同一個項目,只是在不同的時間和版本中使用了不同的名稱。"kube-prometheus-stack" 是 "kube-prometheus" 項目的更新版本,它提供了更多的功能、改進和修復。

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

1)k8s 環境安裝

k8s 環境安裝之前寫過很多文檔,可以參考我以下幾篇文章:

  • 【云原生】k8s 離線部署講解和實戰操作
  • 【云原生】k8s 環境快速部署(一小時以內部署完)

2)安裝 helm

下載地址:https://github.com/kubernetes/helm/releases

# 下載包
wget https://get.helm.sh/helm-v3.7.1-linux-amd64.tar.gz
# 解壓壓縮包
tar -xf helm-v3.7.1-linux-amd64.tar.gz
# 制作軟連接
ln -s /opt/helm/linux-amd64/helm /usr/local/bin/helm
# 驗證
helm version
helm help

3)【第一種安裝方法】直接安裝方式(kube-prometheus)

第一種方法是下載 manifests 包里的yaml,再通過 kubectl 部署。

1、下載kube-prometheus

下載地址:https://github.com/prometheus-operator/kube-prometheus

git clone https://github.com/prometheus-operator/kube-prometheus.git
cd kube-prometheus

【注】在 release-0.11 版本之后新增了 NetworkPolicy 默認是允許自己訪問,如果了解 NetworkPolicy 可以修改一下默認的規則,可以用查看 ls manifests/*networkPolicy*,如果不修改的話則會影響到修改 NodePort 類型也無法訪問,如果不會 Networkpolicy 可以直接刪除就行。

2、修改鏡像源

國外鏡像源某些鏡像無法拉取,我們這里修改prometheus-operator,prometheus,alertmanager,kube-state-metrics,node-exporter,prometheus-adapter的鏡像源為國內鏡像源。我這里使用的是中科大的鏡像源。

# 查找
grep -rn 'quay.io' *
# 批量替換
sed -i 's/quay.io/quay.mirrors.ustc.edu.cn/g' `grep "quay.io" -rl *`
# 再查找
grep -rn 'quay.io' *
grep -rn 'image: ' *

3、修改 service 配置類型為 NodePort

為了可以從外部訪問 prometheus,alertmanager,grafana,我們這里修改 promethes,alertmanager,grafana的 service 類型為 NodePort 類型。

【1】修改 prometheus 的 service
# 設置對外訪問端口,增加如下兩行,完整配置也貼出來了。
# type: NodePort
# nodePort: 30090

vi manifests/prometheus-service.yaml

完整配置

apiVersion: v1
kind: Service
metadata:
  labels:
    app.kubernetes.io/component: prometheus
    app.kubernetes.io/instance: k8s
    app.kubernetes.io/name: prometheus
    app.kubernetes.io/part-of: kube-prometheus
    app.kubernetes.io/version: 2.46.0
  name: prometheus-k8s
  namespace: monitoring
spec:
  type: NodePort
  ports:
  - name: web
    port: 9090
    targetPort: web
    nodePort: 30090
  - name: reloader-web
    port: 8080
    targetPort: reloader-web
  selector:
    app.kubernetes.io/component: prometheus
    app.kubernetes.io/instance: k8s
    app.kubernetes.io/name: prometheus
    app.kubernetes.io/part-of: kube-prometheus
  sessionAffinity: ClientIP
【2】修改 grafana 的 service

完整配置

# 設置對外訪問端口,增加如下兩行,完整配置也貼出來了。
# type: NodePort
# nodePort: 30300
vi manifests/grafana-service.yaml

完整配置

apiVersion: v1
kind: Service
metadata:
  labels:
    app.kubernetes.io/component: grafana
    app.kubernetes.io/name: grafana
    app.kubernetes.io/part-of: kube-prometheus
    app.kubernetes.io/version: 9.5.3
  name: grafana
  namespace: monitoring
spec:
  type: NodePort
  ports:
  - name: http
    port: 3000
    targetPort: http
    nodePort: 30300
  selector:
    app.kubernetes.io/component: grafana
    app.kubernetes.io/name: grafana
    app.kubernetes.io/part-of: kube-prometheus
【3】修改 alertmanager 的 service
# 設置對外訪問端口,增加如下兩行,完整配置也貼出來了。
# type: NodePort
# nodePort: 30093
vi manifests/grafana-service.yaml

完整配置

apiVersion: v1
kind: Service
metadata:
  labels:
    app.kubernetes.io/component: alert-router
    app.kubernetes.io/instance: main
    app.kubernetes.io/name: alertmanager
    app.kubernetes.io/part-of: kube-prometheus
    app.kubernetes.io/version: 0.25.0
  name: alertmanager-main
  namespace: monitoring
spec:
  type: NodePort
  ports:
  - name: web
    port: 9093
    targetPort: web
    nodePort: 30093
  - name: reloader-web
    port: 8080
    targetPort: reloader-web
  selector:
    app.kubernetes.io/component: alert-router
    app.kubernetes.io/instance: main
    app.kubernetes.io/name: alertmanager
    app.kubernetes.io/part-of: kube-prometheus
  sessionAffinity: ClientIP

4、開始安裝

kubectl apply --server-side -f manifests/setup
kubectl wait 
	--for cnotallow=Established 
	--all CustomResourceDefinition 
	--namespace=monitoring
kubectl apply -f manifests/

# 查看
kubectl get all -n monitoring

圖片圖片

【溫馨提示】如果上面下載鏡像失敗,可以使用以下地址下載,當然也可以去hub.Docker.com下載。

這里也提供鏡像包

鏈接:https://pan.baidu.com/s/10ksK1OtKwlvZqbExKmZgLw?pwd=bcu6提取碼:bcu6

6、瀏覽器訪問

Prometheus:http://ip:30090/

圖片圖片

Grafana :http://ip:30300/默認賬號/密碼:admin/admin

圖片圖片

Alertmanager:http://ip:30093/

圖片圖片

5、卸載

kubectl delete --ignore-not-found=true -f manifests/ -f manifests/setup

4)【第二種安裝方法】通過 helm3 開始安裝 kube-prometheus-stack

1、下載安裝包

# 添加repo
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
# 查詢
helm search repo prometheus-community/prometheus

# 拉包
helm pull prometheus-community/kube-prometheus-stack --versinotallow=48.4.0
# 解包
tar -xf kube-prometheus-stack-48.4.0.tgz

2、修改配置

查看所需要的鏡像,最好提前下載鏡像,要不然很大可能會因為下載鏡像失敗而安裝失敗。

grep -A3 'image:' kube-prometheus-stack/values.yaml

圖片圖片

3、開始安裝

helm install mykube-prometheus-stack kube-prometheus-stack 
  -n kube-prometheus-stack --create-namespace 
  --set prometheus-node-exporter.hostRootFsMount=false 
  --set prometheus.ingress.enabled=true 
  --set prometheus.ingress.hosts='{prometheus.k8s.local}' 
  --set prometheus.ingress.paths='{/}' 
  --set prometheus.ingress.pathType=Prefix 
  --set alertmanager.ingress.enabled=true 
  --set alertmanager.ingress.hosts='{alertmanager.k8s.local}' 
  --set alertmanager.ingress.paths='{/}' 
  --set alertmanager.ingress.pathType=Prefix 
  --set grafana.ingress.enabled=true 
  --set grafana.ingress.hosts='{grafana.k8s.local}' 
  --set grafana.ingress.paths='{/}' 
  --set grafana.ingress.pathType=Prefix

4、卸載

helm uninstall mykube-prometheus-stack -n kube-prometheus-stack

 

分享到:
標簽:k8s
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定