8.13. 配置日志记录级别
在 Kafka 组件和 AMQ Streams operator 的自定义资源中配置日志级别。您可以在自定义资源的 spec.logging 属性中直接指定日志级别。或者,您可以使用 configMapKeyRef 属性在自定义资源中引用的 ConfigMap 中定义日志属性。
使用 ConfigMap 的优点在于,日志记录属性在一个位置维护,并可以被多个资源访问。您还可以为多个资源重复使用 ConfigMap。如果使用 ConfigMap 为 AMQ Streams Operator 指定日志记录器,您也可以附加日志记录规格来添加过滤器。
您可以在日志记录规格中指定 日志类型 :
-
直接指定日志记录级别时的
内联 -
引用 ConfigMap 时的
外部
内联 日志记录配置示例
外部日志记录 配置示例
ConfigMap 的 name 和 key 的值是必需的。如果没有设置 name 或 key,则会使用默认日志记录。
8.13.1. Kafka 组件和 Operator 的日志记录选项 复制链接链接已复制到粘贴板!
有关为特定 Kafka 组件或 Operator 配置日志记录的更多信息,请参阅以下部分。
Kafka 组件日志记录
Operator 日志记录
8.13.2. 为日志创建 ConfigMap 复制链接链接已复制到粘贴板!
要使用 ConfigMap 定义日志记录属性,您可以创建 ConfigMap,然后将其引用为资源 spec 中的日志记录定义的一部分。
ConfigMap 必须包含适当的日志记录配置。
-
Kafka 组件、ZooZ 和 Kafka Bridge 的
log4j.properties -
Topic Operator 和 User Operator 的
log4j2.properties
配置必须放在这些属性下。
在此流程中,ConfigMap 为 Kafka 资源定义根日志记录器。
流程
创建 ConfigMap。
您可以将 ConfigMap 创建为 YAML 文件或从属性文件创建。
带有 Kafka 根日志记录器定义的 ConfigMap 示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您使用属性文件,请在命令行中指定该文件:
oc create configmap logging-configmap --from-file=log4j.properties
oc create configmap logging-configmap --from-file=log4j.propertiesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 属性文件定义日志配置:
Define the logger ...
# Define the logger kafka.root.logger.level="INFO" # ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在资源的
spec中定义 外部日志记录,将logging.valueFrom.configMapKeyRef.name设置为 ConfigMap 的名称,并将logging.valueFrom.configMapKeyRef.key设置为此 ConfigMap 中的键。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建或更新资源。
oc apply -f <kafka_configuration_file>
oc apply -f <kafka_configuration_file>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
8.13.3. 配置 Cluster Operator 日志 复制链接链接已复制到粘贴板!
Cluster Operator 日志记录通过名为 strimzi-cluster-operator 的 ConfigMap 配置。安装 Cluster Operator 时会创建一个包含日志记录配置的 ConfigMap。这个 ConfigMap 在文件 install/cluster-operator/050-ConfigMap-strimzi-cluster-operator.yaml 中描述。您可以通过更改此 ConfigMap 中的 data.log4j2.properties 值来配置 Cluster Operator 日志记录。
要更新日志记录配置,您可以编辑 050-ConfigMap-strimzi-cluster-operator.yaml 文件,然后运行以下命令:
oc create -f install/cluster-operator/050-ConfigMap-strimzi-cluster-operator.yaml
oc create -f install/cluster-operator/050-ConfigMap-strimzi-cluster-operator.yaml
或者,直接编辑 ConfigMap :
oc edit configmap strimzi-cluster-operator
oc edit configmap strimzi-cluster-operator
使用这个 ConfigMap,您可以控制日志记录的各个方面,包括根日志记录器级别、日志输出格式和不同组件的日志级别。monitorInterval 设置决定了日志记录配置重新加载的频率。您还可以控制 Kafka AdminClient、ZooKTrustManager、Netty 和 OkHttp 客户端的日志级别。Netnetty 是 AMQ Streams 用于网络通信的框架,而 OkHttp 是用于发出 HTTP 请求的库。
如果部署 Cluster Operator 时缺少 ConfigMap,则使用默认的日志记录值。
如果在部署 Cluster Operator 后 ConfigMap 意外删除,则会使用最近载入的日志配置。创建新的 ConfigMap 以加载新的日志记录配置。
不要从 ConfigMap 中删除 monitorInterval 选项。
8.13.4. 在 AMQ Streams operator 中添加日志记录过滤器 复制链接链接已复制到粘贴板!
如果您使用 ConfigMap 为 AMQ Streams operator 配置(log4j2)日志记录级别,您还可以定义日志记录过滤器来限制日志中返回的内容。
当您有大量日志信息时,日志记录过滤器很有用。假设您将日志记录器的日志级别设置为 DEBUG (rootLogger.level="DEBUG")。日志记录过滤器减少了该级别为日志记录器返回的日志数量,以便您可以专注于特定资源。当设置了过滤器时,只会记录与过滤器匹配的日志消息。
过滤器使用 标记来指定 日志中要包含的内容。您可以为标记指定一个 kind、namespace 和 name。例如,如果 Kafka 集群失败,您可以通过将 kind 指定为 Kafka 来隔离日志,并使用故障集群的命名空间和名称。
本例显示了一个名为 my-kafka-cluster 的 Kafka 集群的标记过滤器。
基本日志记录过滤器配置
rootLogger.level="INFO" appender.console.filter.filter1.type=MarkerFilter appender.console.filter.filter1.onMatch=ACCEPT appender.console.filter.filter1.onMismatch=DENY appender.console.filter.filter1.marker=Kafka(my-namespace/my-kafka-cluster)
rootLogger.level="INFO"
appender.console.filter.filter1.type=MarkerFilter
appender.console.filter.filter1.onMatch=ACCEPT
appender.console.filter.filter1.onMismatch=DENY
appender.console.filter.filter1.marker=Kafka(my-namespace/my-kafka-cluster)
您可以创建一个或多个过滤器。在这里,为两个 Kafka 集群过滤日志。
多个日志记录过滤器配置
在 Cluster Operator 中添加过滤器
要将过滤器添加到 Cluster Operator 中,请更新其日志记录 ConfigMap YAML 文件(install/cluster-operator/050-ConfigMap-strimzi-cluster-operator.yaml)。
流程
更新
050-ConfigMap-strimzi-cluster-operator.yaml文件,将过滤器属性添加到 ConfigMap 中。在本例中,过滤器属性只返回
my-kafka-clusterKafka 集群的日志:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 或者,直接编辑
ConfigMap:oc edit configmap strimzi-cluster-operator
oc edit configmap strimzi-cluster-operatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您更新了 YAML 文件而不是直接编辑
ConfigMap,请通过部署 ConfigMap 来应用更改:oc create -f install/cluster-operator/050-ConfigMap-strimzi-cluster-operator.yaml
oc create -f install/cluster-operator/050-ConfigMap-strimzi-cluster-operator.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
在主题 Operator 或 User Operator 中添加过滤器
要在主题 Operator 或 User Operator 中添加过滤器,请创建或编辑日志记录 ConfigMap。
在此过程中,使用 Topic Operator 的过滤器创建日志记录 ConfigMap。用户 Operator 使用相同的方法。
流程
创建 ConfigMap。
您可以将 ConfigMap 创建为 YAML 文件或从属性文件创建。
在本例中,过滤器属性只返回
my-topic主题的日志:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您使用属性文件,请在命令行中指定该文件:
oc create configmap logging-configmap --from-file=log4j2.properties
oc create configmap logging-configmap --from-file=log4j2.propertiesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 属性文件定义日志配置:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在资源的
spec中定义 外部日志记录,将logging.valueFrom.configMapKeyRef.name设置为 ConfigMap 的名称,并将logging.valueFrom.configMapKeyRef.key设置为此 ConfigMap 中的键。对于主题 Operator,日志记录在
Kafka资源的topicOperator配置中指定。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 通过部署 Cluster Operator 来应用更改:
create -f install/cluster-operator -n my-cluster-operator-namespace
create -f install/cluster-operator -n my-cluster-operator-namespace