使用 Prometheus Operator 监控自定义 kubernetes pod 指标
Monitor custom kubernetes pod metrics using Prometheus Operator
我有一个现成的 Kubernetes 集群,配置了 grafana + prometheus(operator) 监控。
我在我的应用程序中向 pods 添加了以下标签:
prometheus.io/scrape: "true"
prometheus.io/path: "/my/app/metrics"
prometheus.io/port: "80"
但指标不会进入 Prometheus。但是,prometheus 具有所有默认的 Kubernetes 指标。
有什么问题?
您应该创建 ServiceMonitor
or PodMonitor
objects.
ServiceMonitor
描述了普罗米修斯要监控的目标集。 Operator 根据定义自动生成 Prometheus scrape 配置,目标将拥有服务背后所有 pods 的 IP。
示例:
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: example-app
labels:
team: frontend
spec:
selector:
matchLabels:
app: example-app
endpoints:
- port: web
PodMonitor
,以声明方式指定应如何监视 pods 组。 Operator根据定义自动生成Prometheus scrape配置。
示例:
apiVersion: monitoring.coreos.com/v1
kind: PodMonitor
metadata:
name: example-app
labels:
team: frontend
spec:
selector:
matchLabels:
app: example-app
podMetricsEndpoints:
- port: web
我有一个现成的 Kubernetes 集群,配置了 grafana + prometheus(operator) 监控。 我在我的应用程序中向 pods 添加了以下标签:
prometheus.io/scrape: "true"
prometheus.io/path: "/my/app/metrics"
prometheus.io/port: "80"
但指标不会进入 Prometheus。但是,prometheus 具有所有默认的 Kubernetes 指标。
有什么问题?
您应该创建 ServiceMonitor
or PodMonitor
objects.
ServiceMonitor
描述了普罗米修斯要监控的目标集。 Operator 根据定义自动生成 Prometheus scrape 配置,目标将拥有服务背后所有 pods 的 IP。
示例:
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: example-app
labels:
team: frontend
spec:
selector:
matchLabels:
app: example-app
endpoints:
- port: web
PodMonitor
,以声明方式指定应如何监视 pods 组。 Operator根据定义自动生成Prometheus scrape配置。
示例:
apiVersion: monitoring.coreos.com/v1
kind: PodMonitor
metadata:
name: example-app
labels:
team: frontend
spec:
selector:
matchLabels:
app: example-app
podMetricsEndpoints:
- port: web