ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Dozzle 匿名使用数据收集机制解析:Beacon 采集范围、存储方式与完全退出指南

Dozzle 匿名使用数据收集机制解析:Beacon 采集范围、存储方式与完全退出指南 Dozzle 匿名使用数据收集机制解析Beacon 采集范围、存储方式与完全退出指南【免费下载链接】dozzleRealtime log viewer for containers. Supports Docker, Swarm and K8s.项目地址: https://gitcode.com/GitHub_Trending/do/dozzleDozzle 是一个开源的容器实时日志查看工具支持 Docker、Swarm 与 Kubernetes。作为无资金支持的开源项目Dozzle 通过一个轻量的 beacon信标机制收集匿名使用数据用于指导功能优先级与缺陷修复的资源投入方向。本文基于官方文档与仓库源码完整解析 Dozzle 匿名统计的采集字段、发送时机、存储位置并给出通过命令行参数或环境变量彻底退出的实操方案。为什么要收集匿名统计数据Dozzle 是一个没有商业资金注入的开源项目也没有专门的人力去开展正式的用户调研。在这样的前提下匿名使用数据是团队判断应该把开发精力投到哪里的主要信号哪些部署模式server、swarm、k8s、agent被大量使用哪些认证方式被实际启用哪些功能开关actions、shell被打开用户环境的 Docker 引擎版本分布。这些数据帮助维护者优先修复高频问题、优化热门特性。相关说明可见 README.md其中明确提到统计数据完全公开、并强调禁用统计请使用--no-analytics标志。具体采集哪些内容根据官方文档 docs/fr/guide/analytics.md英文原版见 docs/guide/analytics.mdbeacon 所携带的信息包括Dozzle 版本号部署模式server、swarm、k8s、agent启用的认证提供方auth provider如 none、simple、oidc 等若干功能开关状态如是否启用了 actions、shellDocker 引擎版本少量计数主机数量、容器数量、过滤器filter数量每次安装随机生成的实例 ID用于事件去重。文档特别强调日志内容、容器名称、镜像名称、IP 地址、用户标识符永远不会被发送。字段集合会随版本演进权威来源是 types/beacon.go发送实现位于 internal/analytics/http_beacon.go。源码视角BeaconEvent 的完整字段定义从仓库的 types/beacon.go 可以看到 beacon 事件结构的全部字段逐字段说明如下JSON 字段Go 类型含义namestring事件名称如start启动或events前端建立事件流versionstringDozzle 版本browserstring浏览器 User-Agent仅events事件携带authProviderstring启用的认证提供方filterLengthint配置的过滤器数量clientsint主机数量hasCustomAddressbool是否使用了非默认监听地址:8080hasCustomBasebool是否设置了非默认 base 路径/hasHostnamebool是否配置了自定义 hostnamerunningContainersint运行中容器数量hasActionsbool是否启用容器操作actionshasShellbool是否启用容器 shell 访问isSwarmModebool是否 Swarm 模式serverVersionstringDocker 引擎版本serverIDstring每次安装随机生成的 ID用于去重modestring部署模式server / swarm / k8s / agentremoteAgentsint远程 agent 数量remoteClientsint远程主机数量subCommandstring子命令如 agent、generate、generate-certs可以看到所有字段都是版本、模式、开关状态、数量计数这类聚合性元数据不包含任何与具体业务内容相关的敏感信息与文档描述完全一致。发送实现一次简单的 HTTP POST发送逻辑在 internal/analytics/http_beacon.go 中实现事件对象被json.Marshal序列化后以POST方式发送到https://b.dozzle.dev/event。若返回状态码非 2xx则以 Debug 级别记录错误并返回发送失败不会影响 Dozzle 主流程错误仅在 trace/debug 日志中体现。数据存储在哪里beacon 事件被发送到https://b.dozzle.dev/event。根据官方文档描述这是一个部署在 DigitalOcean 上的小型 Go 服务收到事件后将其写入扁平文件flat file供后续离线处理使用——不做实时分析只做批量聚合。两次关键发送时机启动事件与前端事件流从源码结构看beacon 并不是定时或持续发送而是在两个明确的时机各发送一次1. 服务启动时start 事件在服务启动流程中调用cli.StartEvent实现见 internal/support/cli/analytics.go其分支覆盖了各种运行入口server 模式internal/support/cli/clients.go 中go StartEvent(args, server, localClient, )swarm 模式main.go 中go cli.StartEvent(args, swarm, localClient, )k8s 模式main.go 中go cli.StartEvent(args, k8s, localClient, )agent 子命令internal/support/cli/agent_command.gogenerate / generate-certs 子命令internal/support/cli/generate_command.go、internal/support/cli/generate_certs_command.go。该事件携带mode、remoteAgents、remoteClients、subCommand、filterLength、serverVersion、isSwarmMode等字段。注意StartEvent开头就会检查args.NoAnalytics为true时直接返回、不发送任何请求internal/support/cli/analytics.go。2. 前端建立事件流时events 事件当浏览器前端建立 SSE 事件流连接时internal/web/events.go 中的sendBeaconEvent会以 goroutine 方式异步发送events事件调用点见 internal/web/events.go。该函数同样首先检查h.config.NoAnalytics并直接返回internal/web/events.go随后填充AuthProvider、Browser来自请求的 User-Agent、Clients、HasActions、HasCustomAddress、HasCustomBase、HasHostname、RunningContainers、Version并尽力获取本地主机 ID 作为ServerID。异步发送go保证了 beacon 请求不会阻塞前端首屏数据流。如何完全退出Opting Out官方文档提供了两种等效的退出方式任一即可彻底关闭匿名统计之后不会发出任何 beacon 请求方式一命令行参数启动 Dozzle 时附加--no-analyticsdozzle --no-analytics方式二环境变量设置环境变量DOZZLE_NO_ANALYTICStrueDOZZLE_NO_ANALYTICStrue dozzle在 docker-compose 场景下官方文档给出的配置如下摘自 docs/fr/guide/analytics.mdservices: dozzle: image: amir20/dozzle:latest environment: DOZZLE_NO_ANALYTICS: true源码视角参数如何生效该参数的定义位于 internal/support/cli/args.goNoAnalytics bool arg:--no-analytics,env:DOZZLE_NO_ANALYTICS help:disables anonymous analytics这意味着命令行标志名是--no-analytics对应的环境变量名是DOZZLE_NO_ANALYTICS它支持12-factor风格的配置方式即标志与环境变量等效任一途径都能关闭统计该参数默认值为false即默认开启匿名统计参见 docs/guide/supported-env-vars.md 的参数对照表其中明确列出默认值false。关闭开关在两条发送路径上均被强制校验启动事件StartEvent与前端事件流事件sendBeaconEvent在构建并发送 beacon 之前都会先检查NoAnalytics并直接返回因此退出后不会产生任何对外统计请求。仓库自带的 docker-compose.yml 中所有示例服务均统一设置了DOZZLE_NO_ANALYTICS1可作为生产部署时默认关闭统计的参考模板。适用前提与限制说明上述采集字段与发送行为均以当前仓库代码为准types/beacon.go、internal/analytics/http_beacon.go官方文档明确指出字段集合会随时间演进具体以权威源码为准--no-analytics/DOZZLE_NO_ANALYTICS仅影响匿名统计 beacon不影响 Dozzle 的容器日志查看、认证、远程主机remote-host、agent 等核心功能关闭统计后项目维护者将无法获知你所在环境的版本分布与功能使用情况——这是隐私偏好与项目发展之间的权衡按需选择即可。小结Dozzle 的匿名统计采用轻量 beacon 聚合元数据的设计仅在启动与前端连接两个时机发送少量版本、模式、开关与计数信息不采集任何日志内容、容器名、镜像名、IP 或用户标识数据经b.dozzle.dev/event写入扁平文件用于后续处理。无论是出于隐私偏好还是合规要求只需添加--no-analytics标志或设置DOZZLE_NO_ANALYTICStrue即可在两条发送路径上彻底关闭这一机制。【免费下载链接】dozzleRealtime log viewer for containers. Supports Docker, Swarm and K8s.项目地址: https://gitcode.com/GitHub_Trending/do/dozzle创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表