主要更新内容
- 彻底移除 Nezha 兼容性:删除 gRPC 服务、proto 文件及配置选项(
nezha_compat_enabled、nezha_compat_listen)。不再支持 Nezha 协议连接,迁移到 Komari 原生 Agent。 - 新增访客审计日志 RPC:
public:recordVisitorEvent接口,管理员可通过设置visitor_audit_enabled = true启用,支持 IP 限流(每分钟 30 次,突发 10 次)。 - 指标保留期重构:移除全局
metric_retention_days配置,保留期由每个指标定义中的retention_days控制。值为 0 表示不持久化并清除已有数据。旧配置自动迁移清理。 - 新增 loong64 架构支持:构建和安装脚本加入 loong64(loongarch64)交叉编译。
- 删除客户端/任务时清理 metrics:删除客户端或 ping 任务前自动清除关联的 metric store 数据,避免孤立脏数据。
- 禁用降采样默认:
metric_downsampling_enabled默认值从true改为false,需要时手动开启。 - 报告写入改为批量事务:新增
metricstore.ReportBatcher,将原本按条写入的旧缓存(web/report/cache.go)替换为 3 秒窗口批量事务写入,提升性能。 - Compaction Watermark 持久化:引入
metric_compaction_watermarks表,记录每个指标最后一次成功压缩的边界,避免动态裁剪遗漏。 - 添加 1.2.7 升级检测与迁移服务器:启动时自动检测是否需要从 1.2.7 数据库迁移,升级完成后继续正常启动。
- 移除废弃代码与工具:删除
secureconfig(AES 加密)、SafeMap、nezha/compat.go、web/report/cache.go及大量未使用的数据库函数。
Bug修复
- 修复:删除客户端或 Ping 任务前未清理 metric store,导致残留数据
- 修复:零保留期(
retention_days=0)的指标定义在 upsert 时被错误覆盖 - 修复:访客审计日志缺乏防御性校验,后端增强 IP/User-Agent 记录安全性
- 修复:Ping 记录查询改用
Series读取以支持 rollup
其他
- 禁用降采样默认,降低首次部署磁盘占用
- 移除 Nezha 兼容代码及依赖(
google.golang.org/grpc、google.golang.org/protobuf) - 重构 metric store 报告写入为批量事务,减少数据库连接开销
- 更新安装脚本和 CI 配置支持 loong64 架构
- 新增
visitor-audit-rpc.md文档说明公开审计接口用法 - 删除大量废弃函数和测试文件,清理代码库
What's Changed
- feat(rpc): add public visitor audit event endpoint by @sanrokamlan-prog in #597
- fix: harden visitor audit logging by @sanrokamlan-prog in #602
Commits
- disable downsampling by default (724dd3b) @Akizon77
- feat: add visitor audit rpc endpoint (7679430) @sanrokamlan-prog
- Update generate-release-notes.yml (5c73eba) @Akizon77
- Merge pull request #597 from sanrokamlan-prog/visitor-audit-rpc (1eb3549) @Akizon77
- fix: harden visitor audit logging (0c80f0f) @sanrokamlan-prog
- Merge pull request #602 from sanrokamlan-prog/fix/visitor-audit-hardening (5fa59ab) @Akizon77
- refactor: replace static retention config with dynamic retention summary (7f36881) @Akizon77
- fix: preserve zero-retention metric definitions across operations (66b7691) @Akizon77
- refactor(metrics): remove DefaultRetentionDays config option and enforce explicit retention (7baf2ed) @Akizon77
- fix: reduce default built-in metric retention to 1 day for testing (c1178eb) @Akizon77
- fix(metricstore): use Series to read ping records for rollup support (e2a8284) @Akizon77
- feat: clean metric store before deleting client or ping task (43547b9) @Akizon77
- feat(metric): add compaction watermark upsert and update storage queries (5b90804) @Akizon77
- feat: #414 add support for loong64 architecture (fc3febc) @Akizon77
- refactor: remove unused database functions for sessions, clients, and metric store (0f6f2f4) @Akizon77
- refactor: remove Nezha compatibility (f42cfe7) @Akizon77
- Make metric chart gaps adaptive (73c3c43) @Akizon77
- refactor: remove deprecated WriteRecord/WriteGPURecord and refactor cron jobs (312e320) @Akizon77
- feat(metricstore): batch metric report writes in single transactions (a78ef87) @Akizon77
- refactor(jsonrpc): remove deprecated Tag field from public metric types (d853a83) @Akizon77
- feat: add legacy upgrade server and refactor OAuth initialization (3c27823) @Akizon77
New Contributors
- @sanrokamlan-prog made their first contribution in #597
Full Changelog: 1.2.6...Snapshot-2607171139