主要更新内容
- 安装脚本不再自动从日志中提取初始密码,改为引导用户在 Web 界面通过安装向导创建管理员账号,提升安装安全性。
- 公共 Ping 任务响应新增
weight字段,支持任务权重配置。 - 指标存储架构重构:精确采样点仅保留在内存中(1 分钟窗口),不再持久化;rollup 层改用规范化字典表,外键约束级联删除,提升数据一致性和维护性。
- 启动流程替换:原有的 1.2.7 升级检查改为通用的数据库迁移循环,支持结构升级与旧数据迁移,并在迁移检测失败时自动尝试恢复。
- 默认 TDigest 压缩系数由 100 降至 30,在保持尾部误差可接受的前提下减小每个 digest 的存储体积。
- 公共指标查询 API 移除已废弃的
downsample、server_downsample等字段,简化前端兼容逻辑。 - 自适应填充逻辑优化:不再在数据结束后追加尾部空值,避免图表出现多余空白。
- metric store 配置中移除
low_resource_mode相关选项(配置变更不会触发重载)。 - SQLite 默认 WAL checkpoint 页数调整为 256,并设置日志大小上限(1 MB),减少 WAL 文件膨胀。
Bug修复
- 修复指标存储压缩(compaction)可能因优先级反转导致写操作长时间饥饿的问题。
- 修复热 rollup 刷新的精确 upsert 窗口问题:确保已关闭的分钟桶在最后一次精确覆盖前不会被持久化,避免延迟更新导致 t-digest 重复累加错误。
其他
- 新增
metric_store_restructure升级向导页面及 API,用于支持规范化模式的显式结构迁移。 - 新增
ReplaceRollupPoints方法,支持幂等地将预聚合值(如历史 P95)导入指定 rollup 层级并自动填充更粗层级。 - 新增
CheckpointWAL方法,支持运行时手动触发 SQLite WAL checkpoint。 - 测试覆盖包括:WAL checkpoint 重试、外键约束、规范化模式迁移、内存原始点排序/分页/标签过滤等场景。
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
Full Changelog: 1.3.0...Snapshot-2607271422