配置 Prometheus 监控对象
Kube-Prometheus 监控 k8s 集群内部的 Spring Cloud 服务的 JVM 信息,这里采用的是 ServiceMonitor 服务发现的方式自动监控对应的微服务。
Spring Cloud 微服务需要修改
application.yml
配置文件,对外暴露相关接口供 Prometheus 采集指标。修改如下1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18#################### 监控相关配置 ####################
# Actuator 监控端点的配置项
management:
endpoints:
web:
base-path: /actuator # Actuator 提供的 API 接口的根目录。默认为 /actuator
exposure:
include: '*' # 需要开放的端点。默认值只打开 health 和 info 两个端点。通过设置 * ,可以开放所有端点。
metrics:
tags: # 通用标签
application: ${spring.application.name}
endpoint:
prometheus:
enabled: true
metrics:
enabled: true
health:
show-details: always创建 Prometheus 服务发现文件
prometheus-springcloud-serviceMonitor.yaml
,文件内容如下1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: springcloud-service-monitor
labels:
app: springcloud-service-monitor
namespace: monitoring
spec:
endpoints:
- interval: 30s
port: http-metrics
path: /actuator/prometheus
namespaceSelector:
matchNames:
- yb-oa-cloud-uat
selector:
matchLabels:
project: yb-oa-cloud
tier: backend修改
prometheus-clusterRole.yaml
文件,添加资源对象权限,修改好之后如下1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/component: prometheus
app.kubernetes.io/instance: k8s
app.kubernetes.io/name: prometheus
app.kubernetes.io/part-of: kube-prometheus
app.kubernetes.io/version: 2.46.0
name: prometheus-k8s
rules:
- apiGroups:
- ""
resources:
- nodes/metrics
- pods
- endpoints
- services
- namespaces
verbs:
- get
- list
- watch
- nonResourceURLs:
- /metrics
verbs:
- get更新 RBAC 配置
1
kubectl apply -f prometheus-clusterRole.yaml
创建 serviceMonitor 对象
1
kubectl apply -f prometheus-springcloud-serviceMonitor.yaml
修改 Java 微服务的 Service,将端口名称改为
http-metrics
,如下1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21apiVersion: v1
kind: Service
metadata:
labels:
app: yb-gateway
project: yb-oa-cloud
tier: backend
name: yb-gateway
namespace: yb-oa-cloud-uat
spec:
ports:
- name: http-metrics
port: 48080
protocol: TCP
targetPort: 48080
selector:
app: yb-gateway
project: yb-oa-cloud
tier: backend
sessionAffinity: None
type: ClusterIP访问 Prometheus WebUI 界面,查看 Targes 目标,是否存在
serviceMonitor/monitoring/springcloud-service-monitor
监控目标,如下