轻量级 Spring 监测工具——Spring Insight 发布了

项目地址github.com/iweidujiang...(欢迎 Star)

当前版本0.3.0(Maven Central)· 监测中心镜像 ghcr.io/iweidujiang/spring-insight-server:0.3.0

一、它是什么、不是什么

做微服务久了,大概都碰到过这种情况:

下单接口变慢了。网关 → 订单 → 用户 → 积分,到底慢在哪一跳?日志翻了半小时,还在猜。

业界答案很多:SkyWalking、OpenTelemetry + Jaeger、老一点的 Sleuth + Zipkin......都很强,也都很「重」------协议、采样、存储、鉴权、部署手册一摞。很多中小项目、本地联调,其实只想先回答三件事:

  1. 谁调用了谁
  2. 这条请求耗时卡在哪
  3. 哪里报错了

Spring Insight 就是冲着这个缺口写的:业务侧加一个 Starter,旁边用 Docker 起一个轻量监测中心,打开浏览器就能看拓扑和链路。

不是 可观测性平台,也不打算替代 SkyWalking / OTel。能力有边界,但已经能在自己的 Spring 微服务里把调用关系、慢请求和错误看清楚。

当前正式版是0.3.0:Starter 在 Maven Central,Server 镜像在 GHCR。

主线 Boot 3.5 / JDK 21;还在 Boot 2.7 / Java 8 的,走 0.3.0-boot2

0.1.0 能看链路,到 0.2.0 能留数据、可选加锁,再到现在 RestTemplate / RestClient 出站、可选告警和实验性的 Trace 解释,一步步把监测中心用顺了。

二、两步跑起来

第一步:Docker 起监测中心

bash 复制代码
docker run --rm -p 9966:9966 \
  -e SPRING_INSIGHT_SERVER_STORAGE_MODE=file \
  -e SPRING_INSIGHT_SERVER_STORAGE_FILE_PATH=/data/spans.json \
  -v spring-insight-data:/data \
  ghcr.io/iweidujiang/spring-insight-server:0.3.0

浏览器打开:http://localhost:9966/

默认把 Span 落到数据卷里,容器重启数据还在;不想落盘就把 STORAGE_MODE 改成 memory

想用 SQLite,mode 换成 sqlite,文件指到 /data/insight.db,同样挂卷即可。

仓库根目录也有 compose.yaml,一条 docker compose up -d 等效。

告警、邮件、AI 解释这些,优先在控制台侧栏 设置 页打开,配置写进数据目录的 runtime-settings.json,重启不丢。

第二步:业务服务加依赖

Spring Boot 3 / JDK 21:

xml 复制代码
<dependency>
  <groupId>io.github.iweidujiang</groupId>
  <artifactId>spring-insight-agent-starter</artifactId>
  <version>0.3.0</version>
</dependency>
yaml 复制代码
spring:
  application:
    name: order-service
  insight:
    server-url: http://localhost:9966

还在 Boot 2.7 / Java 8?换成兼容线坐标即可:

xml 复制代码
<dependency>
  <groupId>io.github.iweidujiang</groupId>
  <artifactId>spring-insight-agent-starter-boot2</artifactId>
  <version>0.3.0-boot2</version>
</dependency>

造几笔跨服务调用,等几秒(异步批量上报),刷新控制台------拓扑边和 Trace 列表应该就出来了。

只用新出站埋点(RestTemplate / RestClient)时需要升级 Agent;只想用告警、设置页、AI 解释,可以只换 Server 镜像。

三、跑起来之后能看见什么

仪表盘

慢调用、错误调用的摘要入口,方便从「现象」点进「某条链路」。

服务拓扑

谁调了谁、边上看调用次数;点节点或边可以下钻到相关 Trace。0.3.0 起 RestTemplate / RestClient 出站也会打 CLIENT Span,拓扑不再只靠 Feign 和 Gateway。

链路追踪

列表按 Trace 聚合,支持筛选;详情里是瀑布时间线,以及 Span 的 tags / 错误信息。详情页还可以复制这条 Trace 的 Context。

错误分析

有失败调用时,可以按 HTTP 状态码、异常类收口,再回链路上定位。

设置(0.3.0)

侧栏 设置 里可以打开 Webhook / SMTP 告警,以及可选的「解释 Trace」(OpenAI 兼容,含 DeepSeek)。默认全关;保存后下一轮扫描或解释即生效,不必为改邮箱去重打镜像。

Agent 侧目前覆盖得比较实用:Servlet MVC、OpenFeign、RestTemplate / RestClient、WebFlux / WebClient、Spring Cloud Gateway,以及线程池 Trace 透传;可选导出 spring.insight.* 给 Micrometer / Prometheus。

四、架构为什么要「独立 Server」

有人会问:能不能只引依赖、不另起进程?

技术上可以做进程内嵌入,但跨服务拓扑需要一个大家共用的汇聚点。Sleuth + Zipkin 其实也是同一思路:库负责埋点,Zipkin 负责存和看。

text 复制代码
业务微服务 × N  ──Starter──►  埋点、异步批量上报
独立进程 × 1    ──Docker──►  insight-server :9966

和 Prometheus 也可以分工:链路 / 拓扑看 Insight,JVM / 连接池 / QPS 继续交给 Actuator + Micrometer。

五、版本发布历史

从画饼到现在的 0.3.0,正式版都发在 Maven Central 和 GHCR 上。兼容线 Boot2 的版本号带 -boot2 后缀,和主线错开,避免坐标打架。

版本 时间 这一版主要解决什么
画饼 2026 年初 一个还没写代码的开源项目,我先来"画个饼":Spring Insight
0.1.0 2026-09 能装、能跑、能看。Starter + Docker 监测中心,拓扑 / 链路 / 瀑布图;Boot2 0.1.0-boot2发布说明
0.2.0 2026-09-14 数据留得住、门口守得住。SQLite / 按时间裁旧、可选上报 Token 与控制台登录、容量可见、错误分析可下钻、Trace Context 可复制
0.2.1 2026-09-17 修体验。登录后账户菜单和退出、关于页版本号自动读取、侧栏图标补齐
0.3.0 2026-09-18 出站更全、监测中心能开口。RestTemplate / RestClient 埋点;可选 Webhook / SMTP 告警;可选 AI 解释 Trace;控制台设置页

完整条目以仓库 CHANGELOG.md 为准。

六、当前边界

  • 仍然是轻量辅助排查,不是 OTel / SkyWalking 替代品
  • Span 有条数上限;不配落盘时重启会清空(Docker 推荐挂卷 + filesqlite
  • 告警是阈值 + Webhook / 邮件,不是完整规则引擎,也没有值班表和密钥保险箱
  • AI 解释默认关,输出须人工核对
  • JVM / JDBC 采集默认关闭(实验开关)
  • 没有多租户、OIDC 那一套生产级账号体系(可选 Token / 简易登录从 0.2 开始有)

欢迎开 Issue / PR 。

七、坐标与链接(收藏向)

用途 地址
源码 github.com/iweidujiang...
Boot3 Starter io.github.iweidujiang:spring-insight-agent-starter:0.3.0
Boot2 Starter io.github.iweidujiang:spring-insight-agent-starter-boot2:0.3.0-boot2
Server 镜像 ghcr.io/iweidujiang/spring-insight-server:0.3.0
Central(Starter) central.sonatype.com/artifact/io...
发版说明 github.com/iweidujiang...
SCA 演示工程 github.com/iweidujiang...

许可:Apache License 2.0

八、写在最后

这个项目最早只是一篇「还没写代码」的画饼------《一个还没写代码的开源项目,我先来"画个饼":Spring Insight》

从画饼到 0.1.0 能装、能跑、能看见调用链,再到 0.2.0 把数据和门口补上、0.3.0 把更多出站和可选告警接进来,中间改过不少需求,也踩过一堆土坑:GPG 签名、PowerShell 拆坏 Maven 参数、Docker 镜像上传......有些坑后来都写进了文档。

今天你只需要 Central 上的 Starter 和 GHCR 上的镜像,两步就能在自己的 Spring 微服务里看「谁调了谁、慢在哪、错在哪」。觉得有用欢迎 Star;有任何问题,可以直接把 Issue 甩过来,感谢不尽!

相关推荐
vx_BS813302 小时前
【项目编号:project51629】Spring Boot 乡村自来水缴费系统:把抄表、水费生成与在线缴费做成一条数字化闭环
java·spring boot·eclipse·tomcat·maven
程序员阿黄2 小时前
基于 Django 与 Vue 3 的智能实验室预约系统设计与实现
后端·python·mysql·django·vue·毕设
光影少年2 小时前
Koa 为什么使用洋葱模型
后端·node.js·koa
用户298698530142 小时前
Python 如何实现 Word 与 RTF 文档互转
后端·python·api
打工仔折腾 AI2 小时前
用 Shell 脚本自动部署 mysqld_exporter 并接入 Prometheus 远程抓取
人工智能·后端·python·性能优化·ai agent 实战
毅炼2 小时前
不写多语言 SDK,怎么让 Python、Go、Node 服务接入注册中心?
java·后端·系统架构·gateway
Methy2 小时前
IoTHub半个月崩了五次?都是裸rethrow惹的祸
服务器·c++·后端
我不会起名字3222 小时前
一天一道力扣Hot100(36):深度优先算法---组合总和
数据结构·c++·后端·python·算法·go
回家路上绕了弯2 小时前
AI 编程助手为什么反复读取同一份上下文?如何减少无效重复
后端