下面以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 监控体系中。