1. 程式人生 > 實用技巧 >Kubernetes-19:Prometheus-operator叢集監控神器

Kubernetes-19:Prometheus-operator叢集監控神器

Prometheus-operator叢集監控

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

具體的Prometheus是什麼,為什麼要用,什麼時候用,還請移步本人其他隨筆詳細檢視:https://www.cnblogs.com/v-fan/p/14057366.html

Prometheus-operator又是什麼呢?

Prometheus-operator是專門用來監控k8s叢集,並實現了一些自身特有的的自動化配置及管理,總得來說,就是使監控k8s叢集更簡單,更方便,由CoreOS率先引入其概念。

如下所示,是Prometheus Operator的架構示意圖:

Prometheus Operator能做什麼?

要了解Prometheus Operator能做什麼,其實就是要了解Prometheus Operator為我們提供了哪些自定義的Kubernetes資源,列出了Prometheus Operator目前提供的️4類資源:

  1. Prometheus:宣告式建立和管理Prometheus Server例項;
  2. ServiceMonitor:負責宣告式的管理監控配置;
  3. PrometheusRule:負責宣告式的管理告警配置;
  4. Alertmanager:宣告式的建立和管理Alertmanager例項。

簡單說,Prometheus Operator能夠幫助使用者自動化的建立以及管理Prometheus Server以及其相應的配置。

一、克隆專案到本地,進行服務構建

1、克隆

注意版本問題!!!頁面明確指出分支所支援的kubernetes版本!!!

[root@Centos8 prome-git]# git clone https://github.com/prometheus-operator/kube-prometheus/tree/release-0.3
正克隆到 'kube-prometheus'...
remote: Enumerating objects: 9291, done.
remote: Total 9291 (delta 0), reused 0 (delta 0), pack-reused 9291
接收物件中: 
100% (9291/9291), 5.09 MiB | 1.04 MiB/s, 完成. 處理 delta 中: 100% (5692/5692), 完成.

克隆到本地後,可以使用tree命令檢視當前目錄的樹狀結構

2、主要配置進行修改

cd kube-prometheus/manifests

## 主要的服務構建yaml檔案全部在這裡了
## 需要注意的是,要將:
Grafana-service.yaml
prometheus-service.yaml
alertmanager-service.yaml
## 三個svc的訪問方式修改為NodePort模式,方便叢集外的服務訪問

vim grafana-service.yaml

apiVersion: v1
kind: Service
metadata:
  labels:
    app: grafana
  name: grafana
  namespace: monitoring
spec:
  type: NodePort
  ports:
  - name: http
    port: 3000
    nodePort: 30201
    targetPort: http
  selector:
    app: grafana

以下兩個配置檔案同樣是修改此處,不再詳細列印配置

vim prometheus-service.yaml

...

vim alertmanager-service.yaml

...

3、可以提前將要使用的映象pull下來,使啟動時更快

cd kube-prometheus/manifests 
for i in `awk -F ':' '/image:/{print $2":"$3}' *.yaml`;do docker pull ${i} ;done

4、開始建立yaml

## 先建立setup目錄下的所有yaml,因為這是manifests/下yaml的基礎
## setup中的yaml主要建立了自定義的namespace和crd(CustomResourceDefinition;自定義kind型別及api組和版本)
kubectl create -f manifests/setup   

## 上一步執行成功後,可以檢視自定義crd是否建立成功
[root@Centos8 manifests]# kubectl get crd
NAME                                    CREATED AT
alertmanagers.monitoring.coreos.com     2020-11-10T08:19:16Z
podmonitors.monitoring.coreos.com       2020-11-10T08:19:17Z
prometheuses.monitoring.coreos.com      2020-11-10T08:19:17Z
prometheusrules.monitoring.coreos.com   2020-11-10T08:19:18Z
servicemonitors.monitoring.coreos.com   2020-11-10T08:19:18Z

##  檢視自定義的kind:servicemonitors  建立是否成功
until kubectl get servicemonitors --all-namespaces ; do date; sleep 1; echo ""; done

## 開始建立Prometheus-operator資源
kubectl create -f manifests/

如果過程報錯想刪除,可以執行:kubectl delete --ignore-not-found=true -f manifests/ -f manifests/setup

5、檢查是否啟動完畢

kubectl get all -n monitoring

Pod全部Running正常後,通過svc開始訪問grafana和prome即可

二、以上服務構建完成,通過grafana訪問prome

1、訪問prome:http://hub.vfancloud.com:30202

2、訪問grafana:http://hub.vfancloud.com:30201

預設賬號密碼:admin/admin

具體資源的使用情況可以點進模板自行檢視:

需要注意:此搭建全部是引用了Prometheus-operator的預設監控配置,如果有自定義需求,完全可以自己修改yaml檔案中的values等資訊;設定告警途徑等。