Dozzle Cloud 套餐与限额深度解析:Free、Pro、Team 的完整对比与超限处理机制
【免费下载链接】dozzleRealtime log viewer for containers. Supports Docker, Swarm and K8s.项目地址: https://gitcode.com/GitHub_Trending/do/dozzle
Dozzle Cloud 是自托管日志查看器 Dozzle 的官方托管配套服务,它接管了自托管方案中最难独自完成的部分——决定什么事情值得唤醒你、以及真正定位故障根因。本指南以 Dozzle Cloud 的套餐文档为核心,完整解析三个套餐各自的包含内容、何种行为会计入配额、超出配额后会发生什么,并深入仓库源码验证这些机制的底层实现,帮助你在选择套餐与配置实例时做出基于事实的决策。
套餐总览:Free 不是试用版,而是完整的告警产品
Dozzle Cloud 共有三个套餐:Free(免费)、Pro(5 美元/月)、Team(15 美元/月)。官方文档强调了一个容易被误解的事实:免费套餐是完整的告警产品本身,而不是某个付费套餐的试用版本。付费套餐购买的是"主动"的另一半——由 Cloud 通读你的日志、发现从未触发过告警的问题(Findings),以及更大的运行空间。
以下是三个套餐的完整对比(数据以当前仓库文档为准):
| 能力 | 免费版 (Free) | Pro | Team |
|---|---|---|---|
| 价格 | 0 美元 | 5 美元/月 | 15 美元/月 |
| Findings(通读日志,发现从未告警的问题) | 每周 1 条 | 全部,每日 | 全部,每日 |
| 每条 Finding 附带修复方案 | — | ✓ | ✓ |
| 不确定时检查容器与日志的分诊(Triage) | — | ✓ | ✓ |
| 一键完整调查(Full investigation) | — | ✓ | ✓ |
| 每月被处理的事件数(Triaged events) | 2,000 | 50,000 | 250,000 |
| 可搜索日志 | 10 GB · 24 小时 | 50 GB · 30 天 | 100 GB · 30 天 |
| 告警与事件历史 | 1 天 | 14 天 | 30 天 |
| 指标历史(CPU、内存、网络、磁盘) | 24 小时 | 30 天 | 30 天 |
| 连接实例数 | 1 | 不限 | 不限 |
| 每月助手对话数(Assistant chats) | 10 | 200 | 1,000 |
| 优先支持 | — | ✓ | ✓ |
从上表可以看到一个清晰的产品分层逻辑:免费版解决"通知层"问题,付费版解决"主动发现"问题。Findings、修复方案、分诊、完整调查这四项"主动出击"的能力只在付费套餐中提供,而配额类指标(事件数、日志量、历史、实例数、对话数)则随档位逐级放大。
每个套餐都包含的基础能力
官方文档明确指出,以下能力在任何套餐中都包含,包括免费版:
- 智能告警(Smart alerts)
- 重复事件折叠(Repeat folding)
- 告警抑制与严重度过滤(Suppression 与 severity filters)
- 搜索索引(Search indexing)
- 指标记录(Stats monitoring)
- 全部通知渠道(email、Telegram、Discord、Slack、ntfy、Webhook、浏览器推送等)
- 容器操作(Container actions)
- 不限量的 MCP 访问
也就是说,升级到付费套餐并不会解锁告警、搜索或通知本身——这些在免费版上就是完整的。这一点在 Dozzle Cloud 总览文档 中同样被反复强调:"免费版让你保持安静,Pro 版主动去排查"。
什么算作"被处理的事件"(Triaged Event)
这是理解整个配额体系的关键概念。一个**被处理的事件(triaged event)**指的是:一个容器事件或一条匹配的日志行,通过了分诊流水线(triage pipeline)的处理——这条流水线决定它是要发出新告警、折叠进已有告警,还是保持沉默。你为这份"处理工作"付费,而不是为原始存储付费。
为了帮助你准确判断事件计数,官方文档给出了三个非常实用的判定准则:
- 普通日志行不是事件。它们计入的是"可搜索日志量"。所以一个话痨容器消耗的是存储配额,而一个处于 Crash-Loop(崩溃循环)的容器消耗的是事件配额。
- 每次退出算一个事件,但告警只发一条。举例:一个容器退出了 47 次,那是消耗配额的 47 个事件,但你的收件箱里只有一条"47"的告警——这正是重复折叠的意义所在。
- Findings 两者都不消耗。日志通读(log review)读取的是你的日志而非告警历史,因此不触碰事件计数,甚至在完全没有配置告警规则的情况下也能工作。它唯一占用的是你每月的日志量配额。
搜索与指标在任何套餐中都免费
搜索索引从实例连接的那一刻起就开始工作,CPU、内存、网络、磁盘序列也会从你的实例中持续流入 Cloud,均不额外计费。套餐等级改变的只是"存多少、能回溯多远"。
从源码侧看,这一"事件 vs 原始日志"的区分是有明确实现支撑的。在前端,alertMerger.ts 实现了告警折叠与去重逻辑:Cloud 会先以15 秒窗口聚合事件(ALERT_POLL_MS = 15_000),告警才能被创建,因此事件会在到达告警之前先被归并;placedAlerts集合确保同一个事件不会在同一视图里被重复绘制。这解释了为什么"47 次崩溃"最终呈现为"一条写着 47 的告警"。
超出配额:进入采样模式(Sampling Mode)
官方文档用一句话给了最让人安心的结论:不会出任何问题(Nothing breaks)。超出配额后,你的账户会进入"采样模式":
- 分诊(Triage)暂停;
- 事件历史继续记录,所以没有任何数据丢失;
- 大约每十个事件中有一个会以原始(raw)告警的形式送达,让你仍然能感知正在发生的事情;
- 重复事件不再折叠成带计数器的单条告警。
实际体验是:告警会变得更嘈杂、更不实用,而不是消失。文档特别提醒——你会先在收件箱里感觉到异常,然后才会在用量页面上注意到。因此,如果告警突然变得"原始且重复",请先检查用量页。
这一行为同样适用于付费套餐,配额会在每个月月初重置。
文档还附带了一条贴心的经验提示:大多数账户永远接近不了配额上限。只有真正的"消防水龙"——例如一个连续数天 Crash-Loop 的容器——才会突破免费配额,而那个点名该容器的告警,会远在配额耗尽之前就送达。
源码佐证:配额与套餐在连接层的体现
在 internal/cloud/client.go 中可以看到 Cloud 连接客户端对套餐状态的感知。客户端建立 gRPC 长连接时,会通过x-api-key、x-instance-id等元数据向 Cloud 表明身份;当云端返回PermissionDenied错误时,日志会输出:
"cloud account does not have pro plan, waiting for upgrade"
随后客户端停止重连并等待升级信号(internal/cloud/client.go)。这说明套餐校验发生在连接层:云端根据账户当前套餐决定是否允许该实例建立工具流。此外,连接失败采用指数退避重连(初始 1 秒、最大 30 秒、每次 ×2 并附加 10% 抖动),API Key 无效时则暂停整整 1 小时再重试(unauthenticatedPause),避免无效凭证反复冲击云端。
数据保留期限(Retention)
保留期限决定你的历史能回溯多远:告警、事件与日志搜索结果都受其约束。
- 免费版:保留1 天。因此搜索上周发生的事件会返回空结果——即使它确实发生过。文档指出,这正是"搜索似乎丢失了数据"最常见的单一原因。
- Pro:告警与事件历史14 天,可搜索日志30 天。
- Team:告警与事件历史30 天,可搜索日志30 天。
指标保留:免费版 24 小时,付费版 30 天。
一个对用户体验非常重要的设计:当你请求的时间窗口超出套餐允许的范围时,系统不会报错,而是直接返回你实际拥有的时间窗口内的数据。这意味着查询逻辑无需感知套餐边界,前端拿到什么就展示什么。
关于数据生命周期,你的数据文档 进一步说明:存储的数据只在你套餐的保留窗口内保留,到期后自动删除,并且所有数据都以账户为边界隔离,其他用户不可见。
实例连接数限制
免费版同时只能连接一个实例。当你尝试连接第二个实例时,会出现一条限额提示。此时你有两个选择:
- 腾出名额:在 Instances(实例)页面删除现有实例的 API Key,然后连接新实例。这对旧实例是永久性的——它的历史数据仍然保留,但你需要从零重新连接它。
- 升级套餐,让两个实例同时保持连接。
官方文档澄清了此限制的性质:它约束的是免费账户能转发多少数据,而不是某种功能锁。除了连接实例数之外,免费版上的其他一切功能都照常工作。更多关于多实例连接与排查的细节可参考连接你的实例文档。
如何查看用量
Cloud 的**用量页面(Usage page)**会以本月为周期展示三类数据相对配额的消耗情况:
- 事件数(events)
- 日志字节数(log bytes / indexed data)
- 助手对话数(assistant chats)
你还可以直接在聊天中提问:"我这个月用了多少?"(how much have I used this month?)。
用量仪表盘的实现
前端用量展示由 CloudUsage.vue 实现,它同时渲染三根计量条:events_used / events_limit、agent_messages_used / agent_messages_limit、log_bytes_used / log_bytes_limit,并在底部统一标注计费周期。后端返回的用量字段与文档描述的"事件 + 日志字节 + 助手对话"三者一一对应(locales/en.yml 中将日志字节翻译为 "Data indexed")。
UsageMeter.vue 给出了可视化规则:使用率超过90%时计量条变为红色(bg-error),超过70%变为黄色(bg-warning),否则为强调色(bg-primary);字节类指标会自动格式化为可读单位(如3.2 GB / 10.7 GB),避免原始数字难以阅读。此外,用量信息同样会呈现在你自己 Dozzle 实例的设置卡片中——CloudSettingsCard.vue 会展示当前连接状态、套餐名称(cloudStatus.plan.name)与账户邮箱,并把用量条以紧凑行布局嵌入其中。这意味着你无需登录 Cloud 网页,在自托管界面里就能看到套餐与配额消耗。
更换或取消套餐
升级:通过定价页面或设置(settings)入口完成。计费由 Stripe 处理,支付方式、发票与收据都通过设置中的 Billing 链接在 Stripe 侧管理。
取消:取消后,未来的扣款停止,并在你已付费周期结束时自动降级到免费套餐。账户与历史数据都会保留,不会因降级而丢失。
关于降级后的实际影响,结合前文可以预判:事件配额回到 2,000/月、可搜索日志回到 10 GB·24 小时、历史回到 1 天、实例数回到 1 个。由于文档明确"超出配额不报错、查询超窗只返回实际窗口",降级后你看到的现象会是:搜索范围变窄、事件告警更早进入采样模式、第二个实例被断开(需按实例限制流程处理)。
源码层面的整体印证
综合来看,Dozzle Cloud 的配额体系在设计上是"软限制"哲学:
- 服务不中断:超限进入采样模式而非熔断(见"超出配额"一节);
- 查询不报错:超窗返回实际窗口而非错误(见"数据保留期限"一节);
- 连接不硬断:套餐校验失败时等待升级而非永久断开(internal/cloud/client.go);
- 数据不丢失:即使分诊暂停,事件历史仍持续记录(见"超出配额"一节)。
这一整套行为在连接实例、在你的 Dozzle 中、你的数据等文档中都有呼应:本地告警规则配置在自己的 Dozzle 实例上(告警与 Webhook),通知渠道配置在 Cloud 侧,而告警历史、跨实例视角与账户级能力归属 Cloud。理解"免费版 = 完整告警产品 + 有限配额"这一核心,就能准确预期每个套餐在你实际工作负载下的表现:先按事件/日志量评估自己的规模,再决定是否需要每月 5 美元或 15 美元的"主动排查 + 更大配额"组合。
【免费下载链接】dozzleRealtime log viewer for containers. Supports Docker, Swarm and K8s.项目地址: https://gitcode.com/GitHub_Trending/do/dozzle
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考