无需Prometheus和Grafana的轻量级Spring Boot监控

Hacker News Top 工具

摘要

StatLite是一个轻量级的Spring Boot应用监控仪表板,利用Actuator端点和SQLite存储,提供健康状态、错误、延迟和重启可见性,无需引入Prometheus和Grafana的开销。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/07/29 03:52

# 轻量级 Spring Boot 监控方案:无需 Prometheus 和 Grafana 来源:https://pvrlabs.xyz/articles/lightweight-spring-boot-monitoring.html 在 VPS 上运行一个或几个 Spring Boot 应用,仍然需要基本的运行可见性。你需要知道应用是否可访问、错误是否在上升、是否重启过。回答这些问题,可能并不需要一个完整的监控平台。 Spring Boot Actuator 已经暴露了大部分这类信息。StatLite 将其转化为一个专注的仪表板,展示健康状态、请求、错误、延迟、内存、运行时间和重启。它作为一个 Go 二进制文件运行,并将历史记录存储在 SQLite 中。 StatLite 仪表板显示 Spring Boot 健康状态、请求活动、延迟、内存、CPU、运行时间和重启 **无需运维完整的监控栈,即可监控 Spring Boot。** ## 为什么常规选项可能超出你的需求 Actuator 为 Spring Boot 应用提供了有用的健康端点和 Micrometer 指标端点。它们非常适合集成,但反复打开 JSON 端点并不是一个方便的日常仪表板。 Spring Boot Admin(https://codecentric.github.io/spring-boot-admin/current/)增加了更广泛的应用管理功能。当你需要更大的监控系统、灵活的查询或跨实例的共享仪表板时,Prometheus 和 Grafana 是不错的选择。 对于一台 VPS 上的少数几个服务,一个更精简的仪表板就足够了。StatLite 读取你已经拥有的 Actuator 数据,并展示日常检查中最有用的运行信号。 ## 小规模部署需要回答的问题 - 应用是否可访问且健康? - 错误是否在增加? - 请求是否变慢? - 内存使用是否在增长? - 应用是否重启过? - 相关服务(例如数据库)是否可访问? ## 快速对比 | 工具 | 运维复杂度 | 最佳适用场景 | |------|----------|------------| | 原始 Actuator 端点 | 低 | 偶尔手动检查 | | Spring Boot Admin | 中等 | 应用管理和监控 | | Prometheus 和 Grafana | 高 | 较大规模部署和高级可观测性 | | StatLite | 非常低 | 小型服务器上的几个 Spring Boot 服务 | 这些工具也可以共存。今天选择 StatLite 作为专注的仪表板,并不妨碍以后需求增长时采用 Prometheus 和 Grafana。 ## 几分钟内设置 StatLite 以下示例使用 StatLite 附带的可运行的 Spring Actuator 演示(https://github.com/PVRLabs/statlite/tree/main/examples/spring-actuator-demo)。 ### 1. 从 Spring Boot 暴露健康状态和指标 在你的应用配置中添加所需的 Actuator 端点暴露。保持 Actuator 仅从可信网络可达,并根据部署需要添加认证。 ``` management: endpoints: web: exposure: include: health,metrics endpoint: health: show-details: always ``` 对于附带的演示,从 `examples/spring-actuator-demo` 启动应用: ``` mvn spring-boot:run ``` ### 2. 安装 StatLite 使用适合你平台的安装方法,参考 StatLite 安装指南(https://github.com/PVRLabs/statlite/blob/main/docs/install.md)。该指南涵盖了发布安装程序、Homebrew 以及每种方法为你设置和不设置的内容。 喜欢从源码构建的开发者可以克隆仓库并构建二进制文件: ``` git clone https://github.com/PVRLabs/statlite.git cd statlite go build -o statlite ./cmd/statlite ``` ### 3. 添加一个目标配置 ``` server: listen: "127.0.0.1:9090" storage: sqlite_path: "./statlite.sqlite" polling: interval: "10s" timeout: "5s" targets: - name: "spring-demo" actuator_base_url: "http://127.0.0.1:8080/actuator" ``` `listen` 默认将仪表板限制在本地。`sqlite_path` 是用于仪表板历史记录的文件。`actuator_base_url` 指向应用的 Actuator 基础 URL。关于 Basic Auth、多个目标、保留策略和生产安全细节,请参阅配置文档(https://github.com/PVRLabs/statlite/blob/main/docs/configuration.md)。 ### 4. 打开仪表板 ``` ./statlite --config ./statlite.yaml ``` 在浏览器中打开 `http://127.0.0.1:9090`。StatLite 按配置的间隔进行轮询,因此在产生流量或重启应用后,请等待下一次轮询。 如果你正在使用附带的演示,在第二个终端中从 StatLite 仓库根目录生成流量: ``` ./examples/spring-actuator-demo/generate-traffic.sh ``` 该脚本向演示应用发送成功的请求、数据库请求、慢请求以及 `400`、`404`、`500` 响应,以便请求和错误图表有活动可显示。运行脚本后,等待下一次 StatLite 轮询。 **看到仪表板更新了吗?** 如果 StatLite 适合你的设置,请给仓库加星以收藏它,并帮助更多 Spring Boot 开发者找到它。 ## StatLite 为何保持精简 - 单个 Go 二进制文件 - SQLite 存储 - 无需监控代理 - 除 Actuator 外无需自定义应用仪表化 - 适用于 systemd 部署 - 一个配置中支持多个 Spring Boot 目标 它有意以 Actuator 为先。你需要按需启用或暴露 Actuator;StatLite 不会跳过这个设置步骤。 ## 何时不使用 StatLite 当你需要大量服务或主机、长保留期、高级指标查询、告警路由、分布式追踪、集中日志或组织级仪表板时,请使用更全面的可观测性平台。 StatLite 并非企业级可观测性的替代品。它是一个专注的选项,适用于运维少数 Spring Boot 服务而无需运行完整的 Prometheus 和 Grafana 栈的场景。 **使用 StatLite 监控你的第一个 Spring Boot 应用。**

相似文章

grafana/grafana

GitHub Trending (daily)

Grafana 是一个开源的可观测性与监控平台,允许用户查询、可视化、告警并理解来自多种数据源的指标。