主要更新内容
- 数据库迁移重构:将旧的 1.2.7 升级向导替换为循环式迁移检测,支持结构重构(restructure),阻止未升级的旧指标库正常启动,引导管理员通过 Web 执行迁移。
- 移除低资源模式:废弃
low_resource_mode配置及自动探测,不会再影响 SQLite 或指标存储行为。 - 移除安装脚本自动获取密码:不再从日志提取初始密码,改为引导用户访问 Web 页面完成管理员创建。
- 指标存储架构重写:精确样本仅保存在内存(10 分钟窗口),分钟级热 rollup 直接被持久化;废除原始点表(points),引入规范化的系列/标签/分辨率字典;
Compact不再处理原始点删除,仅负责封存历史分钟桶。 - 扩展 raw retention 为 10 分钟:默认的精确采样保留窗口从 15 分钟调整为 10 分钟,并固定为内存存储。
- SQLite 优化:主数据库连接统一通过
sqlitetune包配置,设置更小的缓存(8 MB)、关闭内存临时存储、启用缓存溢出、调整 WAL checkpoint 和日志大小限制;移除默认的 mmap 支持。 - 公开 ping 任务添加 weight 字段:返回 PingTask 响应时包含
weight字段。 - 自动重启旧指标库:重载旧格式 metrics 数据库后,服务会自行重启以进入结构升级状态。
- 新增 Web 迁移引导:
web/migration用于结构升级和历史监控数据迁移。
Bug修复
- 修复 metricstore compaction 写饥饿:使用信号量替换通道栅门,允许压缩与写入并发,而非独占写锁。
- 修复热 rollup 刷新时间窗口精确性:推迟热桶的 flush 时机,确保 upsert 窗口内的采样点都被包含再封存。
其他
- Docker 部署文档:所有语言的自述文件均添加
--restart=always参数。 - 依赖调整:
golang.org/x/sync升级为直接依赖,golang.org/x/sys改为间接。 - 清理残留配置:迁移脚本自动删除已废弃的
low_resource_mode配置项。 - 删除旧代码:移除
compaction_watermark、upsertPointSQL、upsertRollupSQL等不再使用的逻辑。
Commits
- refactor: remove automatic password retrieval, guide user to web setup (045f24e) @Akizon77
- fix(metricstore): avoid compaction write starvation (17aa37c) @Akizon77
- feat: add weight field to public ping task response (c7819cd) @Akizon77
- refactor: replace legacy upgrade with database migration loop (b8c1008) @Akizon77
- fix(metric): defer hot rollup flush for exact upsert window (0103b99) @Akizon77
- feat(metricstore): extend raw retention to 10 min, block reload if upgrade needed (c3c3ed8) @Akizon77
- remove low resource mode (1ffe413) @Akizon77
- optimize sqlite memory usage (0d69995) @Akizon77
- feat: auto restart after reload a old metric database (8c849aa) @Akizon77
Full Changelog: 1.3.0...Snapshot-2607281118