如何启用 TSDB
TSDB 默认关闭。Dashboard 只有在配置了 tsdb.data_path 后才会初始化内置的 VictoriaMetrics 存储。
适用范围
启用 TSDB 后,服务器详情页的历史指标图表可以查询 1 天、7 天、30 天等历史周期;未启用时,前端会锁定这些历史周期。
服务监控历史在未启用 TSDB 时仍会从数据库读取;启用后会改为从 TSDB 查询。
配置方式
编辑 Dashboard 配置文件,通常是 /opt/nezha/dashboard/data/config.yaml,增加或修改:
tsdb:
data_path: "data/tsdb"
retention_days: 30
min_free_disk_space_gb: 1
max_memory_mb: 256
write_buffer_size: 512
write_buffer_flush_interval: 5data_path 可以填写相对路径或绝对路径。相对路径会按 Dashboard 运行目录解析。此项为空时 TSDB 不会启用。
也可以使用环境变量启用:
NZ_TSDB_DATAPATH=data/tsdb修改配置后需要重启 Dashboard。
如何确认已启用
重启后查看 Dashboard 日志:
- 出现
TSDB initialized successfully:TSDB 已启用。 - 出现
TSDB is disabled (tsdb.data_path not configured):未配置data_path,TSDB 仍关闭。
前端也会通过系统配置接口读取 tsdb_enabled。如果该值为 false,服务器详情页的历史指标周期会保持锁定。
磁盘空间不足时的行为
Dashboard 对磁盘空间不足进行降级处理:
- 低于
min_free_disk_space_gb导致存储进入只读时,暂停并丢弃新指标写入,已有历史仍可查询;空间恢复、存储退出只读后自动恢复写入。 - 写入或刷盘时遇到真正的磁盘满/配额耗尽错误,会停写至 Dashboard 重启。先释放磁盘空间,再重启 Dashboard。
- 启动时 TSDB 因磁盘满无法初始化,Dashboard 会继续运行,并尝试准备 SQLite 服务监控历史存储;本次进程未启用 TSDB,
tsdb_enabled为false。释放空间并重启后才能重新打开 TSDB。
日志中的 TSDB writes paused、TSDB writes resumed 和 TSDB disk is full 可帮助区分以上情况。停写期间的数据不会排队等待补写,因此历史曲线可能有缺口。降级不会把既有 TSDB 历史迁回 SQLite;Dashboard 的降级保护也不代表同一磁盘上的 SQLite 仍有足够空间写入。
服务器在线历史 使用独立的数据库会话记录,不受 TSDB 指标保留期控制,也不要求启用 TSDB。
注意事项
启用 TSDB 后,Dashboard 会删除旧的 service_histories 数据库表,已有服务监控历史不会自动迁移到 TSDB。建议在启用前先备份数据库。
TSDB 使用本地磁盘存储,请确保 data_path 所在分区有足够空间,并根据保留天数和服务器数量调整 retention_days、min_free_disk_space_gb 和 max_memory_mb。