ServiceMonitor

ServiceMonitor 是 Prometheus Operator 提供的一种 Kubernetes 自定义资源(Custom Resource),用于告诉 Prometheus 如何监控服务(Service)。它是 Prometheus Operator 的一部分,用于简化在 Kubernetes 中配置和管理监控目标的过程。

1 实践

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: {{ template "fullname" . }}
  namespace: {{ .Release.Namespace }}
  labels:
    app: {{ template "fullname" . }}
    chart: {{ template "xdb.chart" . }}
    release: {{ .Release.Name | quote }}
    heritage: {{ .Release.Service | quote }}
spec:
  selector:
    matchLabels:
      app: {{ template "fullname" . }}
      release: {{ .Release.Name }}
  endpoints:
  - port: xagent
    interval: "10s"
    path: "/v1/agent/metric"
  namespaceSelector:
    any: true

1.1 基础信息

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
  • 使用 Prometheus Operator 的自定义资源定义(CRD)

  • 类型为 ServiceMonitor,用于定义如何监控一组服务

1.2 元数据(Metadata)

metadata:
  name: {{ template "fullname" . }}
  namespace: {{ .Release.Namespace }}
  labels:
    app: {{ template "fullname" . }}
    chart: {{ template "xdb.chart" . }}
    release: {{ .Release.Name | quote }}
    heritage: {{ .Release.Service | quote }}
  • name: 使用模板生成的完整名称

  • namespace: 部署的命名空间,来自 Helm 的 Release.Namespace

  • 标签(labels):

    • app: 应用名称

    • chart: Helm chart 名称

    • release: Helm release 名称

    • heritage: 部署工具(Helm)

1.3 规格(Spec)

spec:
  selector:
    matchLabels:
      app: {{ template "fullname" . }}
      release: {{ .Release.Name }}
  • selector: 选择要监控的服务

    • 匹配标签为 apprelease 的服务

endpoints:
  - port: xagent
    interval: "10s"
    path: "/v1/agent/metric"
  • endpoints: 定义如何收集指标

    • port: 服务暴露的端口名称(xagent)

    • interval: 抓取间隔(10秒)

    • path: 指标端点路径(/v1/agent/metric)

namespaceSelector:
    any: true
  • namespaceSelector: 命名空间选择器

    • any: true 表示监控所有命名空间中匹配的服务

1.4 总结

这个 ServiceMonitor 配置会:

  1. 监控所有命名空间中带有特定标签(apprelease)的服务

  2. 通过服务的xagent端口,每10秒抓取一次/v1/agent/metric路径的指标

  3. 通常作为 Helm chart 的一部分,使用模板变量动态生成名称和标签

这种配置通常用于监控自定义应用或中间件(如XDB)的指标,由Prometheus Operator自动发现并开始监控符合条件的服务。

Last updated