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
: 选择要监控的服务匹配标签为
app
和release
的服务
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 配置会:
监控所有命名空间中带有特定标签(
app
和release
)的服务通过服务的
xagent
端口,每10秒抓取一次/v1/agent/metric
路径的指标通常作为 Helm chart 的一部分,使用模板变量动态生成名称和标签
这种配置通常用于监控自定义应用或中间件(如XDB)的指标,由Prometheus Operator自动发现并开始监控符合条件的服务。
Last updated