Dozzle 云服务数据指南:哪些数据离开主机、如何停止传输以及云端的存储策略
2026/9/15 4:01:50 网站建设 项目流程

Dozzle 云服务数据指南:哪些数据离开主机、如何停止传输以及云端的存储策略

【免费下载链接】dozzleRealtime log viewer for containers. Supports Docker, Swarm and K8s.项目地址: https://gitcode.com/GitHub_Trending/do/dozzle

Dozzle 的云服务(Dozzle Cloud)以"外发连接"的方式接入你的自托管实例,本指南围绕"数据边界"展开:哪些日志会离开你的主机、如何用容器标签精确控制转发、云端会存储哪些内容,以及如何随时撤销接入。读完本文,你将掌握dev.dozzle.cloud.min_level标签的完整用法、API 密钥的生命周期管理,以及不注销账户即可彻底停止数据采集的实操路径。

关联 Cloud 不会暴露你的 Dozzle 实例

很多用户担心"把 Dozzle 关联到云端"会把自己的实例暴露到公网,事实恰好相反:

  • 你的 Dozzle 实例只会向 Cloud 发起一条**外发(outbound)**连接;
  • 不会开放任何入站端口,也不存在端口转发;
  • Cloud 只能通过你实例主动建立的那条连接反过来访问你的实例;
  • 一旦你解除关联(unlink),这条访问通道立即终止。

从源码看,这条外发连接是一条基于 gRPC/TLS 的长连接:在 internal/cloud/client.go 中,客户端通过grpc.NewClient建立连接,并使用credentials.NewClientTLSFromCert(nil, "")的 TLS 传输凭据;连接建立后,每个请求会在 metadata 中携带x-api-key(见 client.go)。也就是说,数据流向是单向的"推",云端无法主动扫描或反连你的网络。

关联不等于开启认证:默认情况下 Dozzle 没有登录

一个容易混淆的点是:关联 Cloud 并不会给你的自托管 Dozzle 增加任何认证能力。这是两件独立的事:

  • 默认情况下,Dozzle没有登录机制
  • 任何能通过网络访问到你实例的人,都可以查看你的日志;
  • 如果你的 Dozzle 暴露在公网,或与其他人共享网络,请务必在实例本身配置认证——无论你是否关联 Cloud 都适用。

同理,容器操作(启动、停止、重启)默认是被拒绝的,除非你显式开启DOZZLE_ENABLE_ACTIONS环境变量。该开关在 internal/support/cli/args.go 中定义,默认值为false,只有设置为true后 Web 界面才具备对容器的操作能力。详细说明见操作指南。顺带一提,代理节点(agent)模式下操作能力同样被关闭——见 internal/support/cli/agent_command.go 中的注释"agents don't host action tools today"。

控制转发内容:dev.dozzle.cloud.min_level容器标签

最有效的隐私控制,是"一开始就不发送"。默认情况下,只要实例处于关联状态,每一个正在运行的容器都会把日志流式转发到 Cloud。对于那些 info 级别的日志没有诊断价值的容器,或涉及你希望留在本机的数据,可以用一个容器标签来过滤或完全停用。

标签取值与效果

取值效果
(未设置)所有日志行都会被转发。默认行为。
disabled完全跳过该容器,不向 Cloud 转发任何日志。
trace与未设置相同,因为 trace 是最低级别,所有内容都会被转发。
debug/info/warn/error/fatal只转发该级别及更高级别的日志行;未检测到级别的日志行总是会透传。

几点重要细节:

  • 无法识别的值(例如拼写错误的warningwran)会被记录为一条错误并忽略,此时该容器会像标签不存在一样转发所有内容;
  • 标签在日志读取器启动时读取。在运行中的容器上修改标签,需要重启容器后才会生效;
  • 源码中该标签定义为常量dev.dozzle.cloud.min_level,见 internal/cloud/log_streamer.go;

Docker Compose 配置示例

services: zigbee2mqtt: image: koenkk/zigbee2mqtt labels: # 只把 warn/error/fatal 转发给 Dozzle Cloud - dev.dozzle.cloud.min_level=warn noisy-debug-tool: image: example/debug labels: # 不从这个容器发送任何内容 - dev.dozzle.cloud.min_level=disabled

底层过滤机制

该过滤逻辑在你的 Dozzle 实例上执行,发生在日志离开主机之前,因此被过滤掉的行永远不会触达网络,也永远不会计入你的套餐配额;Dozzle 本地的日志查看功能不受任何影响。

源码实现非常清晰(internal/cloud/log_streamer.go):

  • cloudLevelRank定义了六个规范级别的严重度排序:trace=1、debug=2、info=3、warn=4、error=5、fatal=6;不在表内的级别(如unknown)排行为 0,总是透传;
  • parseMinLevel负责解析标签值:空值合法且不过滤;disabled表示跳过整个容器;能匹配到级别的返回对应 rank;其他非空值返回valid=false,调用方会记录错误并忽略该标签;
  • runReader中,当minRank > 0时,级别 rank 低于阈值(且 rank 大于 0)的行会被直接continue丢弃(log_streamer.go);
  • 日志按批次发送,每批最多 500 条或 256KB,最长 1 秒刷新一次(log_streamer.go)。

注意:该标签只管日志,不管指标

需要特别强调的是,dev.dozzle.cloud.min_level只过滤日志流,不影响统计指标(CPU、内存、网络、磁盘)的上报。在 internal/cloud/stats_streamer.go 的源码注释中明确写道:这里刻意没有提供退出开关——该标签是日志级别过滤器,其公开契约不涉及指标,如果在此读取它,会让min_level=disabled的容器在云端静默丢失 CPU/内存曲线。指标层面的退出机制需要单独的标签,而不是复用这个。

Cloud 会存储什么

一旦日志到达云端,Dozzle Cloud 存储以下内容:

  • 日志行:来自你关联实例的转发日志,用于全文搜索;
  • 事件与告警:匹配你规则的事件和告警,以及对应的调查过程和结论;
  • 容器与主机元数据:名称、镜像、状态、资源占用;
  • 你的账户信息:邮箱、套餐、通知渠道设置;
  • 与 Agent 的聊天记录

所有这些数据都隔离在你的账户内,其他用户无法看到。存储的数据会按照你套餐的保留窗口(retention window)保留,到期后自动删除。各套餐的保留期限(免费版日志搜索 10GB·24 小时、告警与事件历史 1 天;Pro/Team 版日志搜索 50/100GB·30 天、历史 14/30 天等)详见套餐与限制。

API 密钥:哈希存储、支持过期、删除即断开

每个关联的实例使用自己独立的 API 密钥进行认证。密钥的安全特性:

  • 使用BLAKE2b哈希存储;
  • 支持过期(expiration)机制;
  • 绝不存储明文

在 Instances 页面删除某把密钥,会立即且永久断开对应的实例。这把密钥无法恢复、也无法重新挂接——再次关联实例会生成一把新密钥。

如果你怀疑某把密钥已经泄露,标准做法是:删除它,然后重新关联。这是最彻底的补救方案:旧密钥在删除的那一刻立即失效。

登录方式:GitHub 或 Google

Cloud 使用 GitHub 或 Google 登录,无需单独创建密码,Cloud 永远不会看到你的 GitHub 或 Google 密码。如果你先用一个提供商注册、之后用另一个提供商(但使用同一邮箱)登录,会进入同一个账户。

不注销账户,如何停止数据采集

如果你只想停止数据流入云端、但保留账户,按以下两步操作:

  1. Instances页面删除各实例的 API 密钥——转发会立即停止
  2. Channels页面禁用你的通知渠道——确保不再有任何投递。

之后,已有的历史数据会在你套餐的保留窗口内自然过期。

关闭账户

目前还没有自助删除按钮。如需彻底关闭账户:

  • 从账户注册邮箱发送邮件到amir@dozzle.dev,请求删除;
  • 如果你处于付费套餐,请先从设置中取消订阅,以免继续计费。

在发送邮件之前(或作为替代方案),上文的两步操作已经能让你自行移除绝大部分数据:删除 API 密钥即可停止全部采集,已存储的数据会随保留期过期而清除。

延伸阅读

  • Dozzle Cloud 接入指南:如何将实例关联到云端
  • 套餐与限制:各套餐的存储量、保留窗口、实例数上限
  • 通知渠道:告警投递的配置
  • 认证:为自托管实例配置登录
  • 容器操作:DOZZLE_ENABLE_ACTIONS与容器控制

【免费下载链接】dozzleRealtime log viewer for containers. Supports Docker, Swarm and K8s.项目地址: https://gitcode.com/GitHub_Trending/do/dozzle

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询