k8s中使用prometheus operator監控外部伺服器部署的windows exporter
0、文件說明
(1)Prometheus Operator是一個流行的k8s叢集監控套件,專案地址:https://github.com/prometheus-operator/kube-prometheus,在參考文件部署前,請先確保在k8s環境中已經部署成功Prometheus Operator元件
(2)本文件透過 ServiceMonitor 方式部署監控資訊,至於其他方式的部署,這裡不做說明
(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),所以針對監控指標表示的意思這裡不再進行說明,感興趣的小夥伴可以參考官方說明。