事情本身不复杂,线索都在日志里。推理服务的日志全部进 Loki,保留 30 天,月底账单里日志存储 4200 元,比 GPU 推理费 3800 元还高;每个请求平均写 18KB 日志,其中 12KB 是完整 prompt 和响应。

第一反应是「30 天保留期没有冷热分层」,验证下来不成立。

真正麻烦的地方在于,几个原因的现象几乎一样。全量记录 prompt 与响应,没有采样。还有一种是日志按 JSON 存,字段名重复占空间。

不容易想到的是,debug 级别忘记关掉。

第一件事是统计每天的日志量与字段占比

python -c "print({'per_req_kb':18,'prompt_kb':12,'req_per_day':420000})"

随后把 prompt 内容改成摘要加哈希

python -c "import hashlib;print(hashlib.sha256(b'prompt').hexdigest()[:16])"

接着对成功请求按 5% 采样保留

python -c "import random;print(random.random()<0.05)"

等前面都确认过,再把 30 天以上数据转到冷存储

python -c "print('retention: hot 7d, cold 30d')"

怎么算真的好了,看的是同一批现象。单请求日志降到 4KB 以内,日志存储费降到推理费的 30% 以下,出错请求仍能按 trace_id 找回完整上下文。

日志成本很容易超过算力,尤其是把整段 prompt 写进去;成功请求采样、失败请求全留,是成本和可排查性之间比较稳的折中。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。

作者 9823189