基于k8s平台部署prometheus operator 引入外部exporter的数据
场景为
prometheus operator部署在k8s集群内部 rabbitmq在集群外部 我需要拿到外部的rabbitmq exporter
prometheus operator 通过crd 以及webhook controller 实现了一部分自己的逻辑在里面 所以我们通过操作crd 的cr 就可以对k8s内部资源做修改
ep.yaml
kubectl apply -f ep.yaml -n xxx
xxx是prometheus的ns
apiVersion: v1
kind: Endpoints
metadata:
name: rabbitmq
labels:
#标签很重要 service 以及ep 都需要有相同的标签
k8s-app: rabbitmq
subsets:
- addresses:
- ip: 外部exporter的ip
ports:
- name: metrics
port: 外部exporter的端口
protocol: TCP
---
apiVersion: v1
kind: Service
metadata:
name: rabbitmq
labels:
k8s-app: rabbitmq
spec:
type: ExternalName
externalName: 外部exporter的ip
clusterIP: ""
ports:
- port: 外部exporter的端口
protocol: TCP
targetPort: 外部exporter的端口
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: rabbitmq
labels:
k8s-app: rabbitmq
prometheus: kube-prometheus
spec:
selector:
matchLabels:
#具备什么样的标签我去收集 这里需要跟上面对应
k8s-app: rabbitmq
namespaceSelector:
matchNames:
- monitoring
endpoints:
- port: metrics
#多久采集一次
interval: 10s
honorLabels: true
部署完之后 等待一小会 prometheus 支持配置热更 要么重启prome 要么等待他热更完毕 可以在ui的
如图就已经配置成功,可以在grafana中配置rabbitmq的仪表盘