监控一个 Spring Boot 应用,最省事的办法是直接开 Actuator 端点,看 JSON 里的 health、metrics 数据。但 Actuator 只给你当前时刻的快照,没有历史曲线,没有重启记录,CPU 和内存的变化趋势全靠自己脑补。想看得舒服一点,就得上一套 Prometheus + Grafana,两个重服务,配置链路长,对小项目来说完全是杀鸡用牛刀。StatLite 这个开源项目想解决的正是这个尴尬:它把 Actuator 暴露的指标拉过来,存进本地 SQLite,再用一个 Go 写的轻量 Web 服务把历史曲线画出来。整个东西编译完就是一个二进制文件,空闲内存占用大约 15 MiB,不需要任何外部监控服务,docker run 一条命令就能跑起来,默认监控自己,打开 http://127.0.0.1:9090 就能先玩起来再配自己的应用。
它的工作方式很直白:你给 StatLite 配一个 target,指向应用的 Actuator 端点,比如 `http://localhost:8080/actuator`,它就会定期去拉 health、metrics 数据,写进本地 SQLite,然后在前端画出健康状态、请求量、延迟、CPU、内存、重启次数这些图表。重启检测是它比较有特色的功能,应用一重启,面板上会直接标出来,配合内存和 CPU 曲线,能很快看出是不是内存泄漏导致 OOM 被杀。数据全存在本地 SQLite 里,历史记录自己留着,不依赖任何 SaaS 监控服务,适合跑在私有网络或受保护的网络环境里。它没有内置认证,作者也明确说了设计目标就是私有网络,这点用的时候要注意,别裸奔到公网。
StatLite 不只支持 Spring Boot。Quarkus 和 Micronaut 也能用,因为它们都基于 Micrometer 暴露 Prometheus 格式的指标,StatLite 直接兼容。更轻量的场景,它提供了一个固定的 JSON profile,FastAPI、Express、Django 这些框架可以按文档暴露一个 `/statlite/metrics` 端点,然后 StatLite 生成对应的 target 配置就能接入。也就是说,不管你是 Java 系还是 Python/Node 系,只要愿意暴露几个指标,都能用上这个面板。
作者在 1 GiB 的虚拟机上做了 JDBC 实验,对比了三种方案的资源占用,也在 512 MB 的小机器上对比过 Spring Boot 和 Quarkus 的表现。结论很明确:StatLite 适合一个或少数几个应用、小 VPS、独立开发者和小团队。它不打算替代 Prometheus + Grafana 这种重型方案,而是填补一个中间地带——你只需要关注几个核心指标,不想为监控本身再维护一套基础设施。
最让我觉得实用的是它的自监控设计。默认配置下,StatLite 会监控它自己所在的主机和 SQLite 文件系统的容量,所以第一次跑起来不用配任何东西,就能看到 CPU、内存、磁盘的实时曲线,对理解它怎么工作非常有帮助。对于手头有一两个小服务、又不想为监控折腾半天的开发者,这个工具能直接拿来用。要注意的坑是:它没有认证,别暴露到公网;数据存在本地 SQLite,备份要自己管;指标维度比 Prometheus 那套少很多,想查任意标签组合的复杂查询它做不了。但如果你要的就是"应用活着吗、响应快不快、内存涨没涨、有没有重启"这几个问题的答案,StatLite 是性价比极高的选择。

内容与图片版权归原作者所有 · 原文: https://pvrlabs.xyz/statlite/