ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Dozzle 日志调试指南:用 `--level` 与 `DOZZLE_LEVEL` 排查容器日志查看器问题

Dozzle 日志调试指南:用 `--level` 与 `DOZZLE_LEVEL` 排查容器日志查看器问题 Dozzle 日志调试指南用--level与DOZZLE_LEVEL排查容器日志查看器问题【免费下载链接】dozzleRealtime log viewer for containers. Supports Docker, Swarm and K8s.项目地址: https://gitcode.com/GitHub_Trending/do/dozzleDozzle 是一款面向 Docker、Swarm 与 Kubernetes 的实时容器日志查看器其自身后端默认在info级别记录日志刻意保持安静。本文基于 docs/fr/guide/debugging.md 讲解如何通过--level命令行参数或DOZZLE_LEVEL环境变量逐级提升日志详细程度结合仓库源码说明debug/trace级别下各条日志的实际来源并给出可复制的 docker-compose 配置与提交 bug 报告的标准要素。读完本文你将掌握 Dozzle 从静默运行到全量追踪的调试路径并能精准定位认证、Agent 连接、容器事件与云服务调用等问题。Dozzle 的日志架构写入 stdout级别默认 infoDozzle 后端使用 Go 编写所有自身日志统一写入标准输出stdout。这意味着在容器化部署下无需进入容器内部直接用宿主机的 Docker 命令即可查看全部日志docker logs dozzle从源码看日志级别由zerolog库控制。启动时 CLI 层读取用户配置的级别并调用全局设置函数相关实现在 internal/support/cli/logger.gofunc ConfigureLogger(level string) { if level, err : zerolog.ParseLevel(level); err nil { zerolog.SetGlobalLevel(level) log.Logger log.With().Str(version, Version).Logger() } else { panic(err) } ... }级别字符串由zerolog.ParseLevel解析非法值会导致进程启动失败panic因此配置时务必使用下文表格中的合法级别。同时ConfigureLogger还会把当前Version作为字段注入每条日志方便你在排查时一眼确认运行版本——这一点在提交 bug 报告时非常有用。日志级别速查表Dozzle 支持三个递进级别默认值为info级别适用场景info默认级别。记录启动细节、错误与警告。debug请求级诊断、认证决策、Agent 连接、配置输出。trace输出一切内容。单个日志事件、beacon 载荷、gRPC 帧。非常嘈杂。debug是日常排查的主力级别它既能覆盖大多数功能性故障连接失败、认证异常、配置异常又不至于被海量事件淹没。trace仅在需要深挖底层协议如 gRPC 帧、beacon 载荷时使用生产环境长期开启会显著放大输出量。debug 级别日志在源码中的典型分布debug日志遍布后端各模块是定位问题的第一手线索容器存储与事件容器 store 初始化时会输出宿主机名与标签信息Docker 事件创建、销毁、重命名、健康状态变化都有对应日志。例如 internal/container/container_store.go 附近对每个容器事件输出debug级记录像container died、container health status changed等可用于判断事件流是否正常送达。认证与 OAuth登录成功会记录用户名与 provider见 internal/auth/oauth.goOAuth 回调异常、state cookie 不匹配等均有Warn/Error记录。法语文档的 OAuth 排障章节 还演示了用docker compose logs dozzle | grep -i sign in验证 provider 是否成功启用的实战手法。Agent 与云服务Agent 客户端的消息收发失败、主服务器对 Agent 下发通知/云配置的更新均有对应日志见 internal/agent/server.go云服务的工具调用、日志流启停等则记录在 internal/cloud/client.go。trace 级别日志的典型分布trace级别主要服务于协议层与高频率事件每个容器事件received container event以trace级别输出见 internal/container/container_store.go匿名分析 beacon 的每次发送都会以trace记录完整事件载荷见 internal/analytics/http_beacon.go。如果你要排查日志流为什么中断或beacon 为何返回非 2xxtrace级别能直接给出原始载荷。两种配置方式命令行参数与环境变量日志级别可通过两种等价方式设置方式示例命令行参数dozzle --level debug环境变量DOZZLE_LEVELdebug参数定义位于 internal/support/cli/args.go默认值即infoLevel string arg:env:DOZZLE_LEVEL default:info help:set Dozzle log level. Use debug for more logging.env:DOZZLE_LEVEL标签表明该参数直接绑定同名环境变量。完整的全局配置项对照表可参考 docs/guide/supported-env-vars.md。docker-compose 配置示例在 Docker 部署下推荐使用环境变量方式无需修改启动命令。以下是文档给出的最小可运行配置services: dozzle: image: amir20/dozzle:latest volumes: - /var/run/docker.sock:/var/run/docker.sock ports: - 8080:8080 environment: DOZZLE_LEVEL: debug保存为docker-compose.yml后启动并观察日志docker compose up -d docker logs -f dozzle仓库自带的 docker-compose.yml 与 e2e 集成测试配置 同样使用了DOZZLE_LEVELdebug可作为多实例场景如带 Agent、remote host下的参考模板。DOZZLE_LEVEL对 server、swarm、agent 等所有模式均生效例如 Makefile 中的 Agent 调试示例也通过-e DOZZLE_LEVELdebug注入见 Makefile。常见故障场景的日志排查路径场景一认证/登录异常将级别调至debug后重启按文档提示检索 provider 相关关键字docker compose logs dozzle | grep -i sign in正常输出形如DBG Enabling Sign in with GitHub。若配置了 OIDC 或 GitHub 登录却找不到该行说明 provider 未被激活应从 internal/auth/oauth.go 涉及的配置项入手复查。场景二Agent/远程主机连接失败Agent 场景下debug级别会输出 Agent 客户端的消息收发记录与订阅/分发器状态internal/agent/server.go、internal/agent/client.go。若看到agent client: failed to unmarshal message之类的错误优先检查 Agent 版本是否与主服务器一致、证书是否匹配。场景三容器列表或事件不更新debug级别下容器 store 初始化、订阅 Docker 事件、容器增删改与健康状态变化都有日志internal/container/container_store.go。事件流异常时可从是否成功订阅 docker events到具体事件是否到达逐段定位。前端与 SSE 流的辅助手段后端日志并非排查的全部。据 CLAUDE.md 的开发者调试指引前端问题可使用浏览器 Vue DevTools 扩展SSE 日志流问题可直接在浏览器 DevTools 的 Network 面板观察 EventSource 连接——这三者后端日志、前端 DevTools、网络面板配合使用可以覆盖大多数 Dozzle 故障场景。提交 bug 报告把上下文一次给足确认日志级别提到debug或trace仍无法解决时按官方文档要求到项目 issues 提交报告。一份高质量的 bug 报告应包含以下要素对应 docs/fr/guide/debugging.mdDozzle 版本界面页脚可见或执行dozzle --version获取部署模式server、swarm、k8s 还是 agent——不同模式对应完全不同的排查路径Docker 或 Kubernetes 版本宿主环境信息有助于复现相关日志输出务必提供debug或trace级别的日志原文而不是笼统描述报错了复现步骤理想情况下附带一个最小化的docker-compose.yml。首次报告包含的上下文越完整维护者 triage分类排查的速度就越快。由于日志已携带version字段见 internal/support/cli/logger.godebug级别下直接粘贴日志原文即可同时覆盖版本与日志输出两项要求。小结Dozzle 的调试体系可以概括为一句话默认info静默运行遇到问题把DOZZLE_LEVEL调到debug需要协议级细节再升到trace所有日志统一走stdout用docker logs查看。结合本文给出的源码级日志分布容器事件、认证、Agent、云服务、beacon你可以在几秒钟内判断问题出在哪一层并为后续的 bug 报告准备好完整证据链。【免费下载链接】dozzleRealtime log viewer for containers. Supports Docker, Swarm and K8s.项目地址: https://gitcode.com/GitHub_Trending/do/dozzle创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表