尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Cilium 实战:使用 cilium-dbg envoy admin logging set global 调整 Envoy 全局日志级别

Cilium 实战:使用 cilium-dbg envoy admin logging set global 调整 Envoy 全局日志级别 Cilium 实战使用 cilium-dbg envoy admin logging set global 调整 Envoy 全局日志级别【免费下载链接】ciliumeBPF-based Networking, Security, and Observability项目地址: https://gitcode.com/GitHub_Trending/ci/cilium本篇指南聚焦 Cilium 数据面内置 Envoy Proxy 的日志治理当需要排查 L7 策略如 HTTP/TLS 请求或调试 envoy 相关问题时通过cilium-dbg envoy admin logging set global level即可一次性修改 Envoy 全部 logger 的日志级别。读完本文你将掌握该命令的完整语法、参数继承关系、可用的日志级别以及命令背后经由 Unix Socket 调用 Envoy Admin API 的底层原理并能结合list与set loggers子命令进行组合式排障。命令定位从 envoy 到 logging set global 的命令层级cilium-dbg envoy admin logging set global位于cilium-dbg的子命令树末端其完整层级如下cilium-dbg envoy admin logging set global level各层职责分别为cilium-dbg envoy管理 Envoy Proxy 的入口见 cilium-dbg_envoy.mdenvoy admin访问 Envoy 的 Admin Interface见 cilium-dbg_envoy_admin.md该层还挂载了certs、clusters、config、listeners、metrics、serverinfo等查看类子命令envoy admin logging列出与修改 Envoy 日志级别见 cilium-dbg_envoy_admin_logging.md下挂list与set两个分支envoy admin logging set修改日志级别见 cilium-dbg_envoy_admin_logging_set.md下挂global与loggers两个操作envoy admin logging set global将 Envoy 全部 logger 的日志级别统一调整为指定级别本文主角。命令树在源码中的注册关系可见 cilium-dbg/cmd/envoy_admin_logging.goEnvoyAdminLoggingCmd挂载List与Set两个子命令而Set下再挂载SetGlobal与SetLoggers两个子命令。命令语法与完整参数global子命令的用法定义为cilium-dbg envoy admin logging set global level [flags]其中level是必填位置参数表示要为 Envoy 所有 logger 统一设置的日志级别。源码中通过Args: cobra.ExactArgs(1)强制要求恰好传入一个参数envoy_admin_logging.go参数个数不对时命令会直接报错。本命令自有选项-h, --help help for global-h/--help用于查看该子命令自身的帮助信息。继承自父命令的全局选项以下选项由cilium-dbg主命令统一提供global子命令同样可用--config string Config file (default is $HOME/.cilium.yaml) -D, --debug Enable debug messages -H, --host string URI to server-side API --log-driver strings Logging endpoints to use (example: syslog) --log-opt map Log driver options (example: formatjson)--config指定配置文件路径默认读取$HOME/.cilium.yaml-D, --debug开启调试消息输出-H, --host指定访问服务端 API 的 URI用于指定远端 agent--log-driver/--log-opt配置 cilium-dbg 自身的日志输出端与选项与 Envoy 的日志级别无关。可选日志级别说明global子命令把level原样透传给 Envoy 的 Admin API详见下节并不在客户端做白名单校验。因此实际生效的取值取决于 Envoy Proxy 侧对/logging端点所支持的日志级别即 Envoy 标准的日志级别体系trace、debug、info、warning、error、critical、off。trace/debug最详细的排障级别会输出大量内部事件通常只在定位问题时临时开启info常规运行信息也是多数场景的默认工作级别warning/error/critical仅输出告警、错误与严重错误可显著降低日志噪音off关闭对应 logger 的日志输出。如果传入的级别不合法客户端不会提前拦截而是由 Envoy 返回错误响应cilium-dbg 会以failed to set global logging level: ...的形式报告失败。因此建议先通过cilium-dbg envoy admin logging list查看当前各 logger 的级别再执行修改。底层原理通过 Unix Socket 调用 Envoy Admin APIglobal子命令的执行逻辑非常简洁envoy_admin_logging.go创建 Envoy Admin 客户端后调用SetLoggingLevelForAllLoggers(args[0])成功则将响应原文打印到标准输出失败则Fatalf终止。真正与 Envoy 通信的是 cilium-dbg/cmd/envoy_adminclient.go 中的客户端实现客户端通过 Unix Domain Socket 访问 Envoy Admin 接口socket 路径固定为/var/run/cilium/envoy/sockets/admin.sockenvoy_adminclient.go请求的 HTTPHost/:authority固定为envoy-admin即使实际拨号目标是本地 Unix socketenvoy_adminclient.goSetLoggingLevelForAllLoggers将请求构造为对logging?levellevel端点的 HTTP POST 请求envoy_adminclient.go与 Envoy Admin 接口标准的/logging?level语义一一对应底层通过自定义DialContext以net.Dial(unix, ...)完成连接envoy_adminclient.go整个请求不经过 TCP 网络栈。由此可以推断cilium-dbg必须运行在能够访问到该 Unix socket 的环境中通常是与 Cilium agent 同节点或通过cilium-dbg shell进入 agent Pod 执行否则命令会因连接不到 socket 而失败。实战示例组合使用 list 与 set global推荐的三步式排障流程如下。第一步查看当前各 logger 的日志级别cilium-dbg envoy admin logging list该子命令调用ListLoggingLevels()本质是对logging端点发起 POST 请求envoy_adminclient.go返回 Envoy 当前所有 logger 及其级别清单。第二步全局调整所有 logger 的日志级别cilium-dbg envoy admin logging set global debug执行后 Envoy 全部 logger 统一切换到debug级别。如需恢复再次执行并将级别改回例如cilium-dbg envoy admin logging set global info第三步可选按需定向微调单个 logger若只需调整个别 logger 而不想打扰全局可改用兄弟命令cilium-dbg envoy admin logging set loggers logger_namelevel...该命令接受loggerlevel形式的键值对如httpdebug,upstreamwarning其实现会把参数解析为pathslogger:level,...的查询串再 POST 到logging端点envoy_adminclient.go。值得注意的是源码专门拦截了键名为level的写法并提示please use logger set global to change the global log levelenvoy_admin_logging.go即修改全局级别应当始终走global子命令。相关命令与延伸阅读查看日志级别cilium-dbg envoy admin logging list文档见 cilium-dbg_envoy_admin_logging_list.md修改指定 loggercilium-dbg envoy admin logging set loggers文档见 cilium-dbg_envoy_admin_logging_set_loggers.md修改入口与父级文档见 cilium-dbg_envoy_admin_logging.md 与 cilium-dbg_envoy_admin_logging_set.md命令的 cobra 定义与参数解析见 cilium-dbg/cmd/envoy_admin_logging.goEnvoy Admin 客户端与 Unix Socket 通信细节见 cilium-dbg/cmd/envoy_adminclient.go。需要留意的是本文所述命令与配置均以当前仓库Cilium 主仓库为准由于cmdref文档由cilium-dbg命令自动生成文档头部标注 This file was autogenerated via cilium-dbg cmdref若你使用其他版本或发行渠道的 Cilium命令细节请以对应版本的cilium-dbg envoy admin logging set global --help输出为准。【免费下载链接】ciliumeBPF-based Networking, Security, and Observability项目地址: https://gitcode.com/GitHub_Trending/ci/cilium创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表