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

现在正常了
浙公网安备 33010602011771号