下面以ES模板为例进行ServiceMonitor配置解析
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
labels:
k8s-app: elasticsearch-exporter
release: es-exporter
name: es-exporter-elasticsearch-exporter
namespace: monitoring
spec:
endpoints:
- honorLabels: true
interval: 10s
path: /metrics
port: http
scheme: http
jobLabel: es-exporter
namespaceSelector:
matchNames:
- monitoring
selector:
matchLabels:
k8s-app: elasticsearch-exporter
release: es-exporter
上面参数说明:
- honorLabels:如果目标标签和服务器标签冲突,是否保留目标标签
- interval:监控数据抓取的时间间隔
- path:Metrics接口路径,指定 Elasticsearch Exporter 暴露指标的路径
- port:Metrics端口
- scheme:Metrics接口的协议
jobLabel: es-exporter: 表示要使用es-exporter这个标签作为 Prometheus 的 job label。这将使 Prometheus 标识此监控任务为es-exporter。- namespaceSelector:监控目标Service所在的命名空间
- selector:监控目标Service的标签
上述 ServiceMonitor 配置告诉 Prometheus Operator 如何监控指定命名空间中的 Elasticsearch Exporter,通过抓取 /metrics 路径上的指标数据。配置中的标签选择器确保只有符合条件的 Pod 会被 Prometheus 监控,而其他不符合条件的 Pod 则不会被监控。这样,Prometheus 就可以动态地自动发现和监控 Elasticsearch Exporter 的指标,并将其集成到 Prometheus 监控体系中。