pjpjq/daili-usage-keeper
HF 长期 Loki(简化方案)
Space 运行单实例 Loki 3.5.1。Loki 的 chunks 与已 ship 的 TSDB index 写入 HF Storage Bucket 挂载 /data/loki;WAL、active index、cache、compactor 工作目录全部位于本地 /tmp/loki。不使用 journal、GenerationJournal、migration、checkpoint、verifier 或 GC。
Secrets
仅配置 LOKI_BASIC_AUTH_USER、LOKI_BASIC_AUTH_PASSWORD(以及 Space 运行所需的 HF_TOKEN,若平台要求)。不要提交凭据。Bucket 通过 Space Volume 挂载到 /data/loki,新建空 bucket/prefix 后直接使用。
链路与边界
VM logs → Alloy(本地 WAL + 长时间重试)→ Caddy → gateway(校验并代理)→ Loki → HF Bucket chunks/index。Alloy 同时保留 Grafana Cloud Loki 写入。gateway 只有在 Loki 返回 2xx 时才向 Alloy 返回 204;HF Space 短暂不可用时由 Alloy WAL 补发。接受 Loki 已返回 2xx 但硬崩溃发生在 chunk flush 前的极小丢失窗口;不把 /flush 204 当作持久化证明。
Loki retention_period: 0s,因此 HF Bucket 是长期历史 source of truth。Space 重启后本地 WAL/active index 会重建,但已写入 Bucket 的 chunks/index 继续可查询。不要把 WAL 或 active index 放到 HF FUSE 卷。
上线步骤
- 创建新的 HF Storage Bucket,并以 read-write Volume 挂载到
/data/loki。 - 部署本目录到
pjpjq/daili-usage-keeper,确认/ready返回 200。 - Grafana 新增 Loki datasource:
https://pjpjq-daili-usage-keeper.hf.space,保留现有 Cloud datasource。 - 推送一条带
machine_id/app/levellabels 的日志,分别在 Cloud 与 HF 查询;重启 Space 后再次查询,确认 Bucket 中出现chunks/与tsdb-index/。
回滚
恢复 Space 到上一个稳定 commit 或停用 HF Alloy destination;Grafana Cloud 链路无需改动。不要删除 Bucket,除非确认不再需要历史。
