1.7. 调整日志有效负载和交付


ClusterLogForwarder 自定义资源(CR)中的 tuning spec 提供了配置部署以便优先选择日志吞吐量或持久性的方法。

例如,如果您需要减少收集器重启时日志丢失的可能性,或者您需要在收集器重启后收集日志消息来支持规范,您可以调整部署以优先选择日志持久性。如果您使用对可以接收的批处理大小有硬限制的输出,您可能需要调整部署以优先处理日志吞吐量。

重要

要使用这个功能,您的日志记录部署必须配置为使用 Vector 收集器。使用 Fluentd 收集器时,不支持 ClusterLogForwarder CR 中的 tuning spec。

以下示例显示了您可以修改的 ClusterLogForwarder CR 选项来调整日志转发器输出:

ClusterLogForwarder CR 调整选项示例

apiVersion: observability.openshift.io/v1
kind: ClusterLogForwarder
metadata:
# ...
spec:
  # ...
  outputs:
  - name: default-lokistack
    type: lokiStack
    lokiStack:
      tuning:
        deliveryMode: AtLeastOnce 
1

        compression: none 
2

        maxWrite: <integer> 
3

        minRetryDuration: 1s 
4

        maxRetryDuration: 1s 
5

# ...
Copy to Clipboard Toggle word wrap

1
指定日志转发的交付模式。
  • AtLeastOnce 交付表示如果日志转发器崩溃或重启,则任何在崩溃前读取的日志都会重新发送到其目的地。有些日志可能会在崩溃后重复。
  • AtMostOnce 交付意味着日志转发器不会努力恢复崩溃期间丢失的日志。这个模式可以提供更好的吞吐量,但可能会导致日志丢失。
2
指定 compression 配置会导致在通过网络发送数据前压缩数据。请注意,并非所有输出类型都支持压缩,如果输出不支持指定的压缩类型,这会导致错误。如需更多信息,请参阅"支持压缩输出"。
3
为向输出发送操作的最大有效负载指定限制。
4
指定在失败后重试发送前在尝试之间等待的时间。这个值是一个字符串,可指定为毫秒(ms)、秒(s)或分钟(m)。
5
指定在失败后重试发送前在尝试之间等待的最长时间。这个值是一个字符串,可指定为毫秒(ms)、秒(s)或分钟(m)。
Expand
表 1.1. 支持的调整输出的压缩类型
压缩算法SplunkAmazon CloudwatchElasticsearch 8LokiStackApache KafkaHTTPSyslogGoogle CloudMicrosoft Azure Monitoring

gzip

X

X

X

X

 

X

   

snappy

 

X

 

X

X

X

   

zlib

 

X

X

  

X

   

zstd

 

X

  

X

X

   

lz4

    

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)
Copy to Clipboard Toggle word wrap

  • 要启用日志记录来检测多行异常并将其重新编译到单个日志条目中,请确保 ClusterLogForwarder 自定义资源(CR)包含 .spec.filters 下的 detectMultilineErrors 字段。

ClusterLogForwarder CR 示例

apiVersion: "observability.openshift.io/v1"
kind: ClusterLogForwarder
metadata:
  name: <log_forwarder_name>
  namespace: <log_forwarder_namespace>
spec:
  serviceAccount:
    name: <service_account_name>
  filters:
  - name: <name>
    type: detectMultilineException
  pipelines:
    - inputRefs:
        - <input-name>
      name: <pipeline-name>
      filterRefs:
        - <filter-name>
      outputRefs:
        - <output-name>
Copy to Clipboard Toggle word wrap

1.7.1.1. 详情

当日志消息作为一系列针对一个例外的信息出现时,会将它们合并到一个统一的日志记录中。第一个日志消息的内容被替换为序列中所有消息字段的连接内容。

收集器支持以下语言:

  • Java
  • JS
  • Ruby
  • Python
  • Golang
  • PHP
  • Dart
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat