Prometheus + Grafana 监控
监控体系架构
sponge 创建的服务支持完整的监控数据流水线:
- 指标暴露:服务程序通过内置组件提供 metrics 数据。
- 数据采集:Prometheus 负责抓取和存储指标。
- 可视化展示:Grafana 提供丰富的仪表盘功能。
sponge 创建的服务默认开启了通过 /metrics
路径采集指标数据,配置如下所示:
app:
enableMetrics: true # 是否开启指标采集,true:启用,false:关闭
启动监控服务
1. Prometheus 服务部署
部署步骤:
执行启动命令:
docker-compose up -d
访问 Web 界面:http://localhost:9090
2. Grafana 服务部署
部署步骤:
执行启动命令:
docker-compose up -d
访问 Web 界面:http://localhost:33000
配置数据源:
- 添加 Prometheus 数据源:
http://localhost:9090
- 添加 Prometheus 数据源:
数据源一致性检查
导入监控面板 JSON 时,必须确保datasource
值与 Grafana 中配置的 Prometheus 数据源名称(默认为"Prometheus")完全一致,否则会导致数据无法显示。
Web 服务监控
以基于SQL创建的Web服务
为例,默认指标接口:http://localhost:8080/metrics
1. Prometheus 监控配置
操作步骤:
修改
prometheus.yml
配置文件,添加采集目标:- job_name: 'http-edusys' scrape_interval: 10s static_configs: - targets: ['localhost:8080']
注:需确保 Prometheus 容器有权限修改
prometheus.yml
。应用配置:
curl -X POST http://localhost:9090/-/reload
2. Grafana 监控面板配置
- 导入 HTTP监控面板
- 检查数据源名称一致性
3. 接口压测与监控
使用 wrk 工具进行压力测试:
# 测试接口
wrk -t2 -c10 -d10s http://192.168.3.27:8080/api/v1/teacher/1
# 测试接口
wrk -t2 -c10 -d10s http://192.168.3.27:8080/api/v1/course/1
监控效果展示:

gRPC 服务监控
以基于SQL创建的gRPC服务
为例,默认指标接口:http://localhost:8283/metrics
1. Prometheus 配置
操作步骤:
修改
prometheus.yml
配置文件:- job_name: 'rpc-server-user' scrape_interval: 10s static_configs: - targets: ['localhost:8283']
应用配置并验证(同 Web 服务步骤)
2. Grafana 面板配置
- 导入 gRPC Server 监控面板
- 检查数据源名称一致性
3. 接口测试与监控
使用 Goland IDE 测试teacherService
相关方法,监控效果:

客户端监控
gRPC 客户端监控配置类似,使用 gRPC Client监控面板
动态监控目标管理(Consul)
1. Consul 服务部署
部署步骤:
执行启动命令:
docker-compose up -d
2. Prometheus 动态配置
修改prometheus.yml
添加Consul配置:
- job_name: 'consul-micro-exporter'
consul_sd_configs:
- server: 'localhost:8500'
services: []
relabel_configs:
- source_labels: [__meta_consul_tags]
regex: .*user.*
action: keep
- regex: __meta_consul_service_metadata_(.+)
action: labelmap
应用配置后,通过 API 注册服务:
curl -XPUT --data @user_exporter.json http://localhost:8500/v1/agent/service/register
服务注册示例(user_exporter.json):
{
"ID": "user-exporter",
"Name": "user",
"Tags": ["user-exporter"],
"Address": "localhost",
"Port": 8283,
"Meta": {
"env": "dev",
"project": "user"
},
"Check": {
"HTTP": "http://localhost:8283/metrics",
"Interval": "10s"
}
}
验证地址:http://localhost:9090/targets
提示
在实际应用中,建议通过程序自动注册服务到Consul,实现服务启停时自动更新监控目标。