k8s中使用prometheus operator監控外部伺服器部署的windows exporter

2023-02-20 15:02:34

k8s中使用prometheus operator監控外部伺服器部署的windows exporter

0、檔案說明

(1)Prometheus Operator是一個流行的k8s叢集監控套件,專案地址:https://github.com/prometheus-operator/kube-prometheus,在參考檔案部署前,請先確保在k8s環境中已經部署成功Prometheus Operator元件

(2)本檔案通過 ServiceMonitor 方式部署監控資訊,至於其他方式的部署,這裡不做說明

(3)在k8s中監控外部資源,並不僅限於windows exporter,可以是k8s外部任意型別的服務對應的exporter,例如Node、Mysql、Redis、etcd等。本檔案中部署的10.1.121.157為非叢集節點

(4)Windows Exporter 由 Prometheus Community 維護的一個採集 Windows 機器指標的採集器,支援 Windows Server 2008R2 以上版本或者 Windows 7 以上版本,官方地址是:https://github.com/prometheus-community/windows_exporter,當前版本是 v0.20.0。

(5)在參考本檔案之前,請先確保外部伺服器已經安裝成功 windows exporter,關於windows exporter的安裝,這裡不再說明,windows exporter的下載地址如下:https://github.com/prometheus-community/windows_exporter/releases

(6)版本說明

資源名稱版本資訊說明
Kubernetes v1.23.7 k8s伺服器
Kuboard v3.5.2.0 k8s連線管理工具
windows exporter v0.20.0 windows exporter版本
prometheus operator v0.43.2 prometheus operator版本
Grafana v9.0.2 Grafana版本

1、部署操作步驟

1.1、外部伺服器安裝windows exporter

(1)Windows Exporter 在釋出的時候提供了兩種格式的檔案,即 *.exe 和 *.msi 。MSI (Microsoft Installers)是 Windows 的包管理器,類似於 Linux 的 rpm。Windows Exporter 每個版本都提供一個 .msi 安裝程式。安裝程式將 windows_exporter 設定為 Windows 服務,並在 Windows 防火牆中建立一個異常。我們在使用的時候可以選擇任意一種格式來進行安裝。下載地址如下:https://github.com/prometheus-community/windows_exporter/releases

(2)關於windows exporter的安裝,這裡不再對此說明,可以參考如下安裝:https://help.aliyun.com/document_detail/463494.html

1.2、在k8s中建立Service

在k8s容器中需要為外部伺服器上安裝的windows exporter定義一個不需要Pod的Service,從而將k8s與外界伺服器建立聯絡。外部伺服器的服務定義與k8s中普通服務定義非常相似,對應的yml檔案如下:

---
apiVersion: v1
kind: Service
metadata:
  name: windows-exporter-157
  namespace: prometheus-exporter
  labels:
    app: windows-exporter-157
    app.kubernetes.io/name: windows-exporter-157
spec:
  clusterIP: None
  ports:
  - name: metrics
    port: 9182
    protocol: TCP
    targetPort: 9182

說明:

(1)windows_exporter預設埠是9182,這裡設定的埠號和外部伺服器安裝的windows exporter保持一致

(2)這裡部署的Service下沒有關聯pod,僅是一個單獨的service,需要建立endpoints將其外部服務與service建立關聯

1.3、為建立的Service建立endpoints

---
apiVersion: v1
kind: Endpoints
metadata:
    name: windows-exporter-157
    namespace: prometheus-exporter
    labels:
      app: windows-exporter-157
      app.kubernetes.io/name: windows-exporter-157
subsets:
- addresses:
  # 這裡是外部資源列表
  - ip: 10.1.121.157
  ports:
  - name: metrics
    port: 9182

說明:

(1)Service名稱必須和Endpoints名稱一致才能使Service指向對應的資源

(2)通過採用IP指定的方式,將endpoints與外部資源關聯起來

1.4、在k8s中建立ServiceMonitor

---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: windows-exporter-157
  namespace: prometheus-exporter
  labels:
    app: windows-exporter-157
    release: prometheus
spec:
  selector:
    matchLabels:
      app: windows-exporter-157
  namespaceSelector:
    matchNames:
      - prometheus-exporter
  endpoints:
    - port: metrics
      interval: 1m
      path: /metrics
      scheme: http

說明:

(1)服務建立完成需要設定一個ServiceMonitor來監控服務監控採集地址,預設情況下監控採集地址為 /metrics

(2)Service Monitor中endpoints設定部分的port名稱與之前部署的endpoints保持一致

1.5、在k8s中檢視監控資料

1.5.1、Prometheus Targets

1.5.2、Grafana dashboard

Grafana dashboard中匯入的看板ID為:10467,grafana模板地址如下:https://grafana.com/grafana/dashboards/,windows exporter對應的監控指標以官方檔案為準,因為在匯入模板進行資料展示的時候,發現有些監控指標已經更改了名稱,當然監控指標也可以在上述內容部署成功之後,通過prometheus的視覺化介面查詢得到當前監控的指標資料(官方檔案地址:https://github.com/prometheus-community/windows_exporter/blob/master/docs/README.md),所以針對監控指標表示的意思這裡不再進行說明,感興趣的小夥伴可以參考官方說明。