组件日志记录

Istio 组件使用灵活的日志记录框架构建,该框架提供了许多功能和控制,以帮助操作这些组件并促进诊断。通过在启动组件时传递命令行选项,您可以控制这些日志记录功能。

日志记录范围

组件输出的日志消息按范围分类。范围代表一组相关的日志消息,您可以整体控制这些消息。不同的组件具有不同的范围,具体取决于组件提供的功能。所有组件都具有default范围,用于未分类的日志消息。

例如,截至撰写本文时,istioctl 有 25 个范围,代表命令中的不同功能区域

  • ads, adsc, all, analysis, authn, authorization, ca, cache, cli, default, installer, klog, mcp, model, patch, processing, resource, source, spiffe, tpath, translator, util, validation, validationController, wle

Pilot-Agent、Pilot-Discovery 和 Istio 运算符有自己的范围,您可以在其 参考文档 中找到这些范围。

每个范围都有一个唯一的输出级别,它可以是以下之一:

  1. none
  2. error
  3. warn
  4. info
  5. debug

其中 none 对范围不产生任何输出,而 debug 产生最多的输出。所有范围的默认级别是 info,旨在为在正常条件下运行 Istio 提供适量的日志信息。

要控制输出级别,请使用 --log_output_level 命令行选项。例如:

$ istioctl analyze --log_output_level klog:none,cli:info

除了从命令行控制输出级别之外,您还可以使用其 ControlZ 接口来控制正在运行的组件的输出级别。

控制输出

日志消息通常发送到组件的标准输出流。--log_target 选项允许您将输出定向到任意多个不同的位置。您可以在选项中指定以逗号分隔的文件系统路径列表,以及特殊值 stdoutstderr,分别表示标准输出和标准错误流。

日志消息通常以对人类友好的格式输出。--log_as_json 选项可用于强制输出为 JSON,这对于工具来说可能更容易处理。

日志轮换

Istio 控制平面组件可以自动管理日志轮转,这使得将大型日志分解成更小的日志文件变得简单。--log_rotate 选项允许您指定用于轮转的基文件名。派生名称将用于各个日志文件。

--log_rotate_max_age 选项允许您指定文件轮转之前允许的最大天数,而 --log_rotate_max_size 选项允许您指定文件轮转之前允许的最大大小(以兆字节为单位)。最后,--log_rotate_max_backups 选项允许您控制要保留的最大轮转文件数量,较旧的文件将自动删除。

组件调试

--log_caller--log_stacktrace_level 选项允许您控制日志信息是否包含程序员级别的信息。这在尝试跟踪组件中的错误时很有用,但在日常操作中通常不使用。

此信息是否有用?
您是否有任何改进建议?

感谢您的反馈!