组件日志

Istio 组件采用灵活的日志框架构建,日志框架提供了许多有利于组件操作和诊断的功能。日志记录功能可在组件启动时通过命令行选项进行控制。

日志 Scopes

组件输出的记录消息按 scope 分类。scope 表示一组可以作为整体控制的相关日志消息。取决于提供的功能,组件可具有不同的 scope。所有组件都具有 default scope ,用于未分类的日志消息。

例如,截止当前,Mixer 有 5 个 scope ,表示 Mixer 内不同功能区域:

  • adapters
  • api
  • attributes
  • default
  • grpcAdapter

Pilot,Citadel 和 Galley 有不同的 scope ,具体参见参考文档

每个 scope 都有一个独特的输出级别,取值如下:

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

其中 none 级别 scope 不产生输出,debug 将产生最大量输出。所有 scope 的默认级别是 info,保证正常条件下 Istio 操作提供适当的日志信息。

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

$ mixs server --log_output_level attributes=debug,adapters=warning

除从命令行控制输出级别外,还可以使用其 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 选项可以控制日志信息是否包含程序级别的信息。这在尝试追踪组件中的错误时很有用,但通常不会在日常操作中使用。