组件日志
Istio 组件采用灵活的日志框架构建,日志框架提供了许多有利于组件操作和诊断的功能。日志记录功能可在组件启动时通过命令行选项进行控制。
日志 Scopes
组件输出的记录消息按 scope
分类。scope 表示一组可以作为整体控制的相关日志消息。取决于提供的功能,组件可具有不同的 scope。所有组件都具有 default
scope ,用于未分类的日志消息。
例如,截止当前,Mixer 有 5 个 scope ,表示 Mixer 内不同功能区域:
adapters
api
attributes
default
grpcAdapter
Pilot,Citadel 和 Galley 有不同的 scope ,具体参见参考文档。
每个 scope 都有一个独特的输出级别,取值如下:
- none
- error
- warning
- info
- debug
其中 none
级别 scope 不产生输出,debug
将产生最大量输出。所有 scope 的默认级别是 info
,保证正常条件下 Istio 操作提供适当的日志信息。
要控制日志输出级别,可使用 --log_output_level
命令行选项。例如:
$ mixs server --log_output_level attributes=debug,adapters=warning
除从命令行控制输出级别外,还可以使用其 ControlZ 接口控制正在运行的组件的日志输出级别。
控制输出
日志消息通常发送到组件的标准输出流。--log_target
选项允许将输出定向到任意数量的其他位置。可以为其选项提供逗号分隔的文件系统路径列表,以及特殊值 stdout
和 stderr
,分别表示标准输出和标准错误流。
日志消息通常以人性化的格式输出。--log_as_json
选项可用于强制输出为 JSON 格式,以方便于工具处理。
日志轮换
Istio 组件可以自动管理日志轮换,这使得将大型日志分解为更小的日志文件变得简单。 --log_rotate
选项允许指定用于轮换的基本文件名。派生名称将用于单个日志文件。
--log_rotate_max_age
选项允许指定文件轮换发生前的最大天数,而 --log_rotate_max_size
选项允许指定文件轮换发生前的最大大小(以兆字节为单位)。最后,使用 --log_rotate_max_backups
选项可以控制要保留的最大轮换文件数,用于自动删除旧文件。
组件调试
使用 --log_caller
和 --log_stacktrace_level
选项可以控制日志信息是否包含程序级别的信息。这在尝试追踪组件中的错误时很有用,但通常不会在日常操作中使用。