最近一直在學習k8s里的prometheus-operator关炼。這個東西與傳統(tǒng)主機里部署的prometheus要復雜的多徘禁。因為他把很多東西都抽象了成k8s里的resouce資源腋寨。所以搞起來就相對復雜很多偶妖。
首先就是安裝這個東西甜滨。我用的辦法就是helm安裝
具體可以參照 http://www.reibang.com/p/973cbbbaab22
安裝完以后k8s里的pod 女气、以及各個組建基本都有監(jiān)控了拇涤。
下面說下捣作,如果想用這個東西監(jiān)控一下k8s集群外的一個服務咋搞
比如,有一個服務 通過192.168.1.103:5000/metrics訪問
得到 結果就是 connect 8
1鹅士、先定義監(jiān)控服務器serivce \ endpoint 資源
---
apiVersion: v1
kind: Service
metadata:
name: prometheus-operator-flask
labels:
app: flask
spec:
externalName: 192.168.1.103
type: ExternalName
ports:
- name: metrcis
port: 5000
targetPort: 5000
protocol: TCP
type: ClusterIP
clusterIP: None
---
apiVersion: v1
kind: Endpoints
metadata:
name: prometheus-operator-flask
labels:
app: flask
subsets:
- addresses:
- ip: 192.168.1.103
nodeName: flask
ports:
- name: metrcis
port: 5000
protocol: TCP
注意svc 里的 externalName 要替換成被監(jiān)控服務的ip券躁,endpoint里的ip、port也要替換掉盅,另外labels 要一致
2嘱朽、定義servicemonitor
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
labels:
app: prometheus-operator-flask
release: prometheus-operator-1577513747
name: prometheus-operator-flask
namespace: default
spec:
endpoints:
- interval: 30s
port: metrcis
selector:
matchLabels:
app: flask
namespaceSelector:
matchNames:
- default
注意地方 servicemonitor里的label 地址,不能不寫怔接,也不能只寫app 搪泳。具體原因為啥還不知道。
kubectl apply -f servicemonitor.yaml -f svc.yaml
執(zhí)行以后等大概2扼脐、3分鐘岸军,以后
再到prometheus頁面上status 里的 target 就能看到這樣的東西奋刽。
## [default/prometheus-operator-flask/0 (1/1 up)](http://192.168.1.103:30260/targets#job-default%2fprometheus-operator-flask%2f0)
endpoint 狀態(tài)是ok的。
然后到graph里 用prmsql 就能搜索到connect 這個監(jiān)控項了艰赞。