介绍

上一篇使用了ServiceMonitor创建监控指标:原文地址

对于没有service的pod监控,可以使用PodMonitor告诉Prometheus指标的配置

部署微服务

采用Prometheus官方提供的基于golang编写的微服务示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
apiVersion: apps/v1
kind: Deployment
metadata:
name: example-app
spec:
replicas: 3
selector:
matchLabels:
app: example-app
template:
metadata:
labels:
jobname: testpodmonitor
app: example-app
spec:
containers:
- name: example-app
image: quay.io/brancz/prometheus-example-app:v0.5.0
ports:
- name: web
containerPort: 8080

部署PodMonitor

告诉Prometheus基于pod获取

官方api参考:https://prometheus-operator.dev/docs/api-reference/api/#monitoring.coreos.com/v1.PodMonitor

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
apiVersion: monitoring.coreos.com/v1
kind: PodMonitor
metadata:
name: example-app # PodMonitor 的名称
spec:
podMetricsEndpoints:
- port: web # 抓取指标的端口名称(对应pod中的端口名称)
interval: 15s # 抓取指标的间隔时间
path: /metrics # 指定自定义路径
scheme: http # 使用 HTTP 协议抓取指标
tlsConfig:
insecureSkipVerify: true # 跳过 TLS 证书验证(用于自签名证书场景)
selector:
matchLabels:
app: example-app
jobLabel: jobname # 用于 Prometheus 中 job 标签的值,取自Pod的该标签,不指定时,默认为PodMonitor 对象的命名空间和名称(例如 <namespace>/<name>)
selector:
matchLabels:
app: example-app # 选择带有 app=example-app 标签的 Pod

访问:http://nodeip:30900/targets

查看podmonitor已经将指标获取到,并且job名称为pod标签中设置的名称