1.7. 调整日志有效负载和交付
ClusterLogForwarder 自定义资源(CR)中的 tuning spec 提供了配置部署以便优先选择日志吞吐量或持久性的方法。
例如,如果您需要减少收集器重启时日志丢失的可能性,或者您需要在收集器重启后收集日志消息来支持规范,您可以调整部署以优先选择日志持久性。如果您使用对可以接收的批处理大小有硬限制的输出,您可能需要调整部署以优先处理日志吞吐量。
要使用这个功能,您的日志记录部署必须配置为使用 Vector 收集器。使用 Fluentd 收集器时,不支持 ClusterLogForwarder CR 中的 tuning spec。
以下示例显示了您可以修改的 ClusterLogForwarder CR 选项来调整日志转发器输出:
ClusterLogForwarder CR 调整选项示例
- 1
- 指定日志转发的交付模式。
-
AtLeastOnce交付表示如果日志转发器崩溃或重启,则任何在崩溃前读取的日志都会重新发送到其目的地。有些日志可能会在崩溃后重复。 -
AtMostOnce交付意味着日志转发器不会努力恢复崩溃期间丢失的日志。这个模式可以提供更好的吞吐量,但可能会导致日志丢失。
-
- 2
- 指定
compression配置会导致在通过网络发送数据前压缩数据。请注意,并非所有输出类型都支持压缩,如果输出不支持指定的压缩类型,这会导致错误。如需更多信息,请参阅"支持压缩输出"。 - 3
- 为向输出发送操作的最大有效负载指定限制。
- 4
- 指定在失败后重试发送前在尝试之间等待的时间。这个值是一个字符串,可指定为毫秒(
ms)、秒(s)或分钟(m)。 - 5
- 指定在失败后重试发送前在尝试之间等待的最长时间。这个值是一个字符串,可指定为毫秒(
ms)、秒(s)或分钟(m)。
| 压缩算法 | Splunk | Amazon Cloudwatch | Elasticsearch 8 | LokiStack | Apache Kafka | HTTP | Syslog | Google Cloud | Microsoft Azure Monitoring |
|---|---|---|---|---|---|---|---|---|---|
|
| X | X | X | X | X | ||||
|
| X | X | X | X | |||||
|
| X | X | X | ||||||
|
| X | X | X | ||||||
|
| X |
1.7.1. 启用多行异常检测 复制链接链接已复制到粘贴板!
启用容器日志的多行错误检测。
启用此功能可能会对性能有影响,可能需要额外的计算资源或备用日志记录解决方案。
日志解析器通常会错误地将同一个例外中的不同的行识别为不同的例外。这会导致额外的日志条目,以及要跟踪的信息的不完整或不正确。
java 异常示例
java.lang.NullPointerException: Cannot invoke "String.toString()" because "<param1>" is null
at testjava.Main.handle(Main.java:47)
at testjava.Main.printMe(Main.java:19)
at testjava.Main.main(Main.java:10)
java.lang.NullPointerException: Cannot invoke "String.toString()" because "<param1>" is null
at testjava.Main.handle(Main.java:47)
at testjava.Main.printMe(Main.java:19)
at testjava.Main.main(Main.java:10)
-
要启用日志记录来检测多行异常并将其重新编译到单个日志条目中,请确保
ClusterLogForwarder自定义资源(CR)包含.spec.filters下的detectMultilineErrors字段。
ClusterLogForwarder CR 示例
1.7.1.1. 详情 复制链接链接已复制到粘贴板!
当日志消息作为一系列针对一个例外的信息出现时,会将它们合并到一个统一的日志记录中。第一个日志消息的内容被替换为序列中所有消息字段的连接内容。
收集器支持以下语言:
- Java
- JS
- Ruby
- Python
- Golang
- PHP
- Dart