PROM监控集群外DOCKER

我用HELM部署了一套PROM-OPERATER,自动监控了K8S集群内的一些监控项,但是我集群外一些docker也想用这套PROM监控起来

很简单二点,需要自定义EP,和servicemonitor,这样pROM的服务发现就会利用热加载自动更新配置文件

下面是我的YML

[root@master prometheus-operator]# cat zzfd.yml
kind: Endpoints
apiVersion: v1
metadata:
name: zzfdtest-node
namespace: monitoring
labels:
node: zzfdtest-node
subsets:
- addresses:
- ip: 172.20.70.36 # ip为部署node-exporter的服务器ip
ports:
- name: metrics
port: 9100 # node-exporter暴露在该服务器的9100端口

---
apiVersion: v1
kind: Service
metadata:
name: zzfdtest-node
namespace: monitoring
labels:
node: zzfdtest-node
spec:
type: ExternalName
externalName: 172.20.70.36
clusterIP: ""
ports:
- port: 9100
protocol: TCP
targetPort: 9100

 

---

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: zzfdtest-node
namespace: monitoring
labels:
node: zzfdtest-node
release: my-release
spec:
endpoints:
- interval: 15s
port: metrics
relabelings:
# 对instance进行relabel
- action: replace
sourceLabels: ['__address__']
separator: ':'
regex: '(.*):.*'
targetLabel: 'instance'
replacement: '${1}'
selector:
matchLabels:
node: zzfdtest-node
release: my-release   #这个很重要,必须和PROM的标签保持一致,否则target中看不到目标

 

 

 

目前还存在一些问题,网上资料我找了挺多

TARGET中没有URL,granafa中没有出现图表

 

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: zzfdtest-node
namespace: monitoring
labels:
release: my-release  #修改了这里,这里对应的是PROM的标签,不能同时填写EP的标签,这样会匹配不上
spec:
endpoints:
- interval: 15s
port: metrics
relabelings:
# 对instance进行relabel
- action: replace
sourceLabels: ['__address__']
separator: ':'
regex: '(.*):.*'
targetLabel: 'instance'
replacement: '${1}'
selector:
matchLabels:
node: zzfdtest-node  #这里对应的是EP的标签

修改好了手动加载下

curl -X POST 127.0.0.1:30901/-/reload

 

 现在正常了

 

posted @ 2022-05-11 11:38  不敲代码  阅读(104)  评论(0)    收藏  举报