组件日志记录
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 运算符有自己的范围,您可以在其 参考文档 中找到这些范围。
每个范围都有一个唯一的输出级别,它可以是以下之一:
- none
- error
- warn
- info
- debug
其中 none
对范围不产生任何输出,而 debug
产生最多的输出。所有范围的默认级别是 info
,旨在为在正常条件下运行 Istio 提供适量的日志信息。
要控制输出级别,请使用 --log_output_level
命令行选项。例如:
$ istioctl analyze --log_output_level klog:none,cli:info
除了从命令行控制输出级别之外,您还可以使用其 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
选项允许您控制日志信息是否包含程序员级别的信息。这在尝试跟踪组件中的错误时很有用,但在日常操作中通常不使用。