SpringBoot3 + 人大金仓 V9 微服务监控实战|Prometheus+Grafana+SkyWalking 全链路监控

大家好,本专栏专注信创实战,持续输出 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

七、总结(信创可观测标准方案)

  1. 人大金仓 V9 监控:Kingbase Exporter + Prometheus,覆盖连接、缓存、复制、慢 SQL、事务;政务等保三级必配。
  2. SpringBoot3 指标:Actuator + Micrometer 零侵入;QPS、P99、JVM、业务指标全覆盖。
  3. SkyWalking 全链路:无代码接入;拓扑、Trace、慢 SQL、分布式事务追踪一网打尽。
  4. Grafana 可视化:三大开箱即用大盘;告警规则直接复制;政务运维可直接上岗。
  5. 最终效果问题从小时级定位 → 分钟级定位故障提前预警、事后有据可查,完全满足政务系统稳定性与可审计要求。

下期预告

下一篇:《SpringBoot3 + 人大金仓 V9 日志全栈集成实战|Logback+Loki+Filebeat 统一日志平台》,覆盖日志采集、结构化、检索、链路联动、日志审计,补齐信创可观测最后一块拼图。

觉得有用,点赞 + 收藏 + 关注,信创项目少走弯路!评论区留你的项目场景,我帮你定制监控大盘与告警规则~

相关推荐
TeDi TIVE1 小时前
springboot和springframework版本依赖关系
java·spring boot·后端
二哈赛车手1 小时前
新人笔记---ES和kibana启动问题以及一些常用的linux的错误排查方法,以及ES,数据库泄密解决方案[超详细]
java·linux·数据库·spring boot·笔记·elasticsearch
myrh pdmd1 小时前
maven导入spring框架
数据库·spring·maven
Nicander2 小时前
理解 mybatis 源码:vibe-coding一个mini-mybatis
后端·mybatis
爬山算法2 小时前
MongoDB(118)如何在升级过程中进行数据备份?
数据库·mongodb·oracle
小呆呆6662 小时前
Codex 穷鬼大救星
前端·人工智能·后端
千月落2 小时前
Redis数据迁移
数据库·redis·缓存
FelixBitSoul3 小时前
缓存淘汰策略全解:从原理到手写实现(Java / Go / Python)
后端·面试
AI人工智能+电脑小能手3 小时前
【大白话说Java面试题】【Java基础篇】第29题:静态代理和动态代理的区别是什么
java·开发语言·后端·面试·代理模式