大家好,本专栏专注信创实战,持续输出 SpringBoot3 + 国产数据库 / 中间件落地干货。本文带你从零搭建一套政务级、全国产、可直接上线 的微服务监控体系:SpringBoot3 + 人大金仓 V9 + Prometheus + Grafana + SkyWalking ,覆盖指标监控、数据库监控、全链路追踪、告警闭环、性能调优,解决信创项目 "监控黑盒、链路不可见、故障定位慢" 的痛点。
亮点速览:✅ 人大金仓 V9 专用 Exporter + 开箱即用 Grafana 大盘✅ SpringBoot3 Actuator + Micrometer 零侵入埋点✅ SkyWalking 无代码全链路追踪(支持金仓 JDBC/Seata/Nacos)✅ 告警规则模板(CPU / 内存 / 连接数 / 慢 SQL / 事务超时)✅ 政务等保三级可直接复用的监控架构
一、整体架构与版本选型(信创合规)
1.1 架构图(文字版)
java
SpringBoot3 微服务
↳ Actuator/Micrometer → Prometheus(指标存储)
↳ SkyWalking Agent → SkyWalking OAP(链路追踪)
人大金仓 V9
↳ Kingbase Exporter → Prometheus(数据库指标)
Prometheus → Grafana(可视化大盘)
SkyWalking OAP → SkyWalking UI(链路/拓扑/性能分析)
AlertManager → 钉钉/企业微信(告警推送)
1.2 版本清单(生产稳定)
| 组件 | 版本 | 用途 |
|---|---|---|
| SpringBoot | 3.2.5 | 微服务运行时 |
| 人大金仓 | V9R6 | 国产数据库(主从) |
| Prometheus | 2.45+ | 时序指标存储与采集 |
| Grafana | 10.2+ | 可视化大盘 |
| SkyWalking | 10.3.0 | 全链路追踪 |
| Kingbase Exporter | 1.7+ | 金仓数据库监控 |
| JDK | 17 | SpringBoot3 基准 |
二、人大金仓 V9 监控(Kingbase Exporter + Prometheus)
政务项目数据库监控是核心中的核心:连接数、缓存命中率、锁等待、慢 SQL、主从延迟、事务活跃度,缺一不可。
2.1 金仓端准备(创建监控用户)
sql
-- 登录金仓执行
CREATE USER kmonitor WITH PASSWORD 'Kmonitor@123';
COMMENT ON ROLE kmonitor IS 'Kingbase Monitor User';
GRANT pg_monitor TO kmonitor;
GRANT USAGE ON SCHEMA perf TO kmonitor; -- 如需KWR
北京人大金仓信息技术股份有限公司
2.2 部署 Kingbase Exporter
1)下载解压
mkdir -p /opt/kingbase/exporter
cd /opt/kingbase/exporter
# 上传 kingbase_exporter(linux-amd64)
chmod +x kingbase_exporter
2)配置 config.yaml
kingbase:
dsn: "user=kmonitor password=Kmonitor@123 host=127.0.0.1 port=54321 dbname=gov_db sslmode=disable"
web:
listen-address: ":9187"
path: "/metrics"
3)启动(systemd 托管)
vi /etc/systemd/system/kingbase-exporter.service
java
[Unit]
Description=Kingbase Exporter
After=network.target
[Service]
User=kingbase
ExecStart=/opt/kingbase/exporter/kingbase_exporter --config.path=/opt/kingbase/exporter/config.yaml
Restart=on-failure
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl start kingbase-exporter
systemctl enable kingbase-exporter
验证:curl http://127.0.0.1:9187/metrics 能看到大量 kingbase_* 指标。
2.3 Prometheus 配置抓取金仓指标
编辑 prometheus.yml:
global:
scrape_interval: 30s
evaluation_interval: 30s
scrape_configs:
- job_name: "kingbase"
static_configs:
- targets: ["192.168.1.10:9187"] # 金仓主机IP
metrics_path: /metrics
重启 Prometheus:
systemctl restart prometheus
2.4 核心数据库指标(可直接用于告警)
kingbase_connections_current:当前连接数kingbase_connections_max:最大连接数kingbase_cache_hit_ratio:缓存命中率(政务建议 > 99%)kingbase_replication_lag_seconds:主从延迟(RPO=0 建议 < 1s)kingbase_slow_query_count:慢 SQL 数量kingbase_transaction_commit_count:提交事务数kingbase_transaction_rollback_count:回滚事务数
三、SpringBoot3 微服务指标监控(Actuator + Micrometer)
3.1 引入依赖
XML
<!-- 监控端点 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- Micrometer + Prometheus -->
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
3.2 配置 application.yml(暴露端点)
management:
endpoints:
web:
exposure:
include: health,prometheus,metrics,info
endpoint:
health:
show-details: always
metrics:
tags:
app: ${spring.application.name}
env: dev
server:
port: 8080
验证:http://ip:8080/actuator/prometheus 可看到 http_server_requests_seconds_*、jvm_* 等指标。
3.3 Prometheus 抓取微服务
- job_name: "springboot-services"
metrics_path: /actuator/prometheus
static_configs:
- targets:
- 192.168.1.20:8080 # user-service
- 192.168.1.21:8081 # order-service
3.4 自定义业务指标(政务场景常用)
java
@RestController
public class OrderController {
@Autowired
private MeterRegistry meterRegistry;
@PostMapping("/create")
public ResponseEntity<?> create() {
// 自定义计数器:订单创建数
meterRegistry.counter("business.order.create").increment();
// 自定义耗时记录
Timer.Sample sample = Timer.start(meterRegistry);
try {
// 业务逻辑
return ResponseEntity.ok("ok");
} finally {
sample.stop(Timer.start(meterRegistry).record(meterRegistry.timer("business.order.create.duration")));
}
}
}
四、SkyWalking 全链路追踪(无代码、零侵入)
4.1 部署 SkyWalking(Docker Compose 一键)
version: '3'
services:
oap:
image: apache/skywalking-oap-server:10.3.0
ports:
- "11800:11800"
- "12800:12800"
environment:
SW_STORAGE: h2
ui:
image: apache/skywalking-ui:10.3.0
ports:
- "8081:8080"
depends_on:
- oap
启动:
docker-compose up -d
访问:http://ip:8081
4.2 SpringBoot3 接入 SkyWalking Agent(无代码)
1)下载 agenthttps://skywalking.apache.org/downloads/解压到 /opt/skywalking/agent
2)启动脚本添加 JVM 参数
java -javaagent:/opt/skywalking/agent/skywalking-agent.jar \
-Dskywalking.agent.service_name=gov-user-service \
-Dskywalking.collector.backend_service=192.168.1.30:11800 \
-jar user-service.jar
3)IDEA 启动配置(VM options)
-javaagent:D:\skywalking\agent\skywalking-agent.jar
-Dskywalking.agent.service_name=gov-user-service
-Dskywalking.collector.backend_service=127.0.0.1:11800
4.3 关键能力(政务微服务刚需)
- 服务拓扑图:一目了然谁调用谁
- 链路追踪 Trace:一次请求全链路耗时、异常、堆栈
- 数据库慢追踪:金仓 SQL 耗时、行数、参数
- Seata 分布式事务追踪:全局事务 / 分支事务状态
- Nacos 配置 / 注册调用追踪
- JVM 指标联动:GC、线程、内存与链路关联
4.4 效果(文字描述)
- 接口超时 → 直接定位到金仓慢 SQL
- 事务回滚 → 定位到哪个微服务 / 哪个 DB
- 峰值卡顿 → 定位热点接口 + 热点 SQL
五、Grafana 可视化大盘(开箱即用)
5.1 添加 Prometheus 数据源
- 地址:
http://prometheus-ip:9090 - 类型:Prometheus
5.2 推荐大盘(直接导入 JSON)
1)SpringBoot 微服务大盘(ID:12856)
- QPS、响应时间 P95/P99、错误率
- JVM 堆 / 非堆、GC 次数 / 耗时、线程数
2)人大金仓 V9 专用大盘(本文配套)
- 连接数 / 最大连接数
- 缓存命中率、读写命中率
- 主从延迟、复制状态
- 慢 SQL 趋势、TOP SQL
- 事务提交 / 回滚、锁等待
3)SkyWalking 链路大盘
- 服务吞吐量、响应时间、错误率
- 依赖拓扑、调用链排行
5.3 核心告警规则(直接复制到 Prometheus)
kingbase_alerts.rules.yml
groups:
- name: kingbase
rules:
- alert: KingbaseHighConnections
expr: kingbase_connections_current / kingbase_connections_max > 0.8
for: 1m
labels:
severity: critical
annotations:
summary: "金仓连接数超过80%"
- alert: KingbaseReplicationLag
expr: kingbase_replication_lag_seconds > 2
for: 30s
labels:
severity: critical
- alert: SpringHighErrorRate
expr: sum(rate(http_server_requests_seconds_count{status=~"5.."}[1m])) / sum(rate(http_server_requests_seconds_count[1m])) > 0.05
for: 1m
labels:
severity: warning
六、政务项目生产避坑(血的教训)
坑 1:金仓 Exporter 权限不足
- 现象:指标不全、报权限 denied
- 解决:必须
GRANT pg_monitor;生产禁止用 superuser
坑 2:SkyWalking 采集不到金仓 SQL
- 原因:未使用 SkyWalking 自带 JDBC 插件
- 解决:agent 目录
optional-plugins/apm-jdbc-9.0.0.jar复制到plugins/
坑 3:链路断了、跨服务看不到
- 原因:Nacos/Feign 没带透传 Header
- 解决:SkyWalking 自动埋点,无需手动传;确认 agent 加载成功
坑 4:Prometheus 存储爆盘
- 解决:
storage.tsdb.retention.time=15d;大环境配 Thanos 远端存储
坑 5:告警刷屏、夜间无法休息
- 解决:按严重等级 分级;设置告警静默时段;关键指标才上 Critical
七、总结(信创可观测标准方案)
- 人大金仓 V9 监控:Kingbase Exporter + Prometheus,覆盖连接、缓存、复制、慢 SQL、事务;政务等保三级必配。
- SpringBoot3 指标:Actuator + Micrometer 零侵入;QPS、P99、JVM、业务指标全覆盖。
- SkyWalking 全链路:无代码接入;拓扑、Trace、慢 SQL、分布式事务追踪一网打尽。
- Grafana 可视化:三大开箱即用大盘;告警规则直接复制;政务运维可直接上岗。
- 最终效果 :问题从小时级定位 → 分钟级定位 ;故障提前预警、事后有据可查,完全满足政务系统稳定性与可审计要求。
下期预告
下一篇:《SpringBoot3 + 人大金仓 V9 日志全栈集成实战|Logback+Loki+Filebeat 统一日志平台》,覆盖日志采集、结构化、检索、链路联动、日志审计,补齐信创可观测最后一块拼图。
觉得有用,点赞 + 收藏 + 关注,信创项目少走弯路!评论区留你的项目场景,我帮你定制监控大盘与告警规则~