9.16. 配置日志记录级别
在 Kafka 组件和 Apache Kafka operator 的 Streams 的自定义资源中配置日志记录级别。您可以在自定义资源的 spec.logging
属性中直接指定日志级别。或者,您可以使用 configMapKeyRef
属性在自定义资源中引用的 ConfigMap 中定义日志属性。
使用 ConfigMap 的优点在于,日志记录属性在一个位置维护,并可以被多个资源访问。您还可以为多个资源重复使用 ConfigMap。如果您使用 ConfigMap 为 Apache Kafka Operator 指定 Streams 的日志记录器,您也可以附加日志记录规格来添加过滤器。
您可以在日志记录规格中指定 日志类型
:
-
直接指定日志记录级别时的
内联
-
引用 ConfigMap 时的
外部
内联
日志记录配置示例
外部日志记录
配置示例
ConfigMap 的 name
和 key
的值是必需的。如果没有设置 name
或 key
,则会使用默认日志记录。
9.16.1. Kafka 组件和 Operator 的日志记录选项 复制链接链接已复制到粘贴板!
有关为特定 Kafka 组件或 Operator 配置日志记录的更多信息,请参阅以下部分。
Kafka 组件日志记录
Operator 日志记录
9.16.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.properties
Copy 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
9.16.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 是 Apache Kafka 用于网络通信的框架,而 OkHttp 是用于发出 HTTP 请求的库。
如果部署 Cluster Operator 时缺少 ConfigMap
,则使用默认的日志记录值。
如果在部署 Cluster Operator 后 ConfigMap
意外删除,则会使用最近载入的日志配置。创建新的 ConfigMap
以加载新的日志记录配置。
不要从 ConfigMap
中删除 monitorInterval
选项。
9.16.4. 在 Apache Kafka operator 的 Streams 中添加日志记录过滤器 复制链接链接已复制到粘贴板!
如果您使用 ConfigMap 为 Apache Kafka 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-cluster
Kafka 集群的日志:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 或者,直接编辑
ConfigMap
:oc edit configmap strimzi-cluster-operator
oc edit configmap strimzi-cluster-operator
Copy 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.yaml
Copy 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.properties
Copy 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
9.16.5. 集群操作的锁定获取警告 复制链接链接已复制到粘贴板!
Cluster Operator 通过使用锁定确保每个集群只运行一个操作。如果另一个操作试图在锁被保存时启动,它会等待当前操作完成。
集群创建、滚动更新、缩减和扩展等操作由 Cluster Operator 管理。
如果获取锁定的时间超过配置的超时时间(STRIMZI_OPERATION_TIMEOUT_MS
),则会记录 DEBUG 信息:
锁定获取的 DEBUG 消息示例
DEBUG AbstractOperator:406 - Reconciliation #55(timer) Kafka(myproject/my-cluster): Failed to acquire lock lock::myproject::Kafka::my-cluster within 10000ms.
DEBUG AbstractOperator:406 - Reconciliation #55(timer) Kafka(myproject/my-cluster): Failed to acquire lock lock::myproject::Kafka::my-cluster within 10000ms.
下一次定期协调期间将重试超时操作,间隔由 STRIMZI_FULL_RECONCILIATION_INTERVAL_MS
(默认为 120 秒)定义。
如果 INFO 信息继续显示相同的协调号,这可能表示锁定发行错误:
协调的 INFO 消息示例
INFO AbstractOperator:399 - Reconciliation #1(watch) Kafka(myproject/my-cluster): Reconciliation is in progress
INFO AbstractOperator:399 - Reconciliation #1(watch) Kafka(myproject/my-cluster): Reconciliation is in progress
重启 Cluster Operator 可能会解决这个问题。