9.13. ロギングレベルの設定
ロギングレベルは、Kafka コンポーネントと Streams for Apache Kafka Operator のカスタムリソースで設定します。ロギングレベルは、カスタムリソースの spec.logging プロパティーに直接指定できます。あるいは、configMapKeyRef プロパティーを使用してカスタムリソースで参照される ConfigMap でロギングプロパティーを定義することもできます。
ConfigMap を使用する利点は、ロギングプロパティーが 1 カ所で維持され、複数のリソースにアクセスできることです。複数のリソースに ConfigMap を再利用することもできます。ConfigMap を使用して Streams for Apache Kafka Operator のロガーを指定する場合は、ロギング仕様を追加してフィルターを追加することもできます。
ロギング仕様でロギング type を指定します。
-
ロギングレベルを直接指定する場合は
inline -
ConfigMap を参照する場合は
external
inline ロギングの設定例
# ...
logging:
type: inline
loggers:
kafka.root.logger.level: INFO
# ...
external 設定の例
# ...
logging:
type: external
valueFrom:
configMapKeyRef:
name: my-config-map
key: my-config-map-key
# ...
ConfigMap の name と key の値は必須です。name や key が設定されていない場合は、デフォルトのロギングが使用されます。
9.13.1. Kafka コンポーネントおよび Operator のロギングオプション リンクのコピーリンクがクリップボードにコピーされました!
特定の Kafka コンポーネントまたは Operator のログ設定の詳細は、次のセクションを参照してください。
Kafka コンポーネントのロギング
Operator のロギング
9.13.2. ロギングの ConfigMap の作成 リンクのコピーリンクがクリップボードにコピーされました!
ConfigMap を使用してロギングプロパティーを定義するには、ConfigMap を作成してから、リソースの spec にあるロギング定義の一部としてそれを参照します。
ConfigMap には適切なロギング設定が含まれる必要があります。
-
Kafka コンポーネント、ZooKeeper、および Kafka Bridge の
log4j.properties。 -
Topic Operator および User Operator の
log4j2.properties
設定はこれらのプロパティーの配下に配置する必要があります。
この手順では、ConfigMap は Kafka リソースのルートロガーを定義します。
手順
ConfigMap を作成します。
ConfigMap を YAML ファイルとして作成するか、プロパティーファイルから Config Map を作成します。
Kafka のルートロガー定義が含まれる ConfigMap の例:
kind: ConfigMap apiVersion: v1 metadata: name: logging-configmap data: log4j.properties: kafka.root.logger.level="INFO"プロパティーファイルを使用している場合は、コマンドラインでファイルを指定します。
oc create configmap logging-configmap --from-file=log4j.propertiesプロパティーファイルではロギング設定が定義されます。
# Define the logger kafka.root.logger.level="INFO" # ...リソースの
specにexternal ロギングを定義し、logging.valueFrom.configMapKeyRef.nameに ConfigMap の名前を、logging.valueFrom.configMapKeyRef.keyにこの ConfigMap のキーを設定します。# ... logging: type: external valueFrom: configMapKeyRef: name: logging-configmap key: log4j.properties # ...リソースを作成または更新します。
oc apply -f <kafka_configuration_file>
9.13.3. Cluster Operator のロギングの設定 リンクのコピーリンクがクリップボードにコピーされました!
Cluster Operator のロギングは、strimzi-cluster-operator という名前の ConfigMap を使用して設定されます。ロギング設定が含まれる ConfigMap は、Cluster Operator のインストール時に作成されます。この 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
または、ConfigMap を直接編集することもできます。
oc edit configmap strimzi-cluster-operator
この ConfigMap を使用すると、ルートロガーレベル、ログ出力形式、さまざまなコンポーネントのログレベルなど、ログのさまざまな側面を制御できます。monitorInterval 設定は、ログ設定をリロードする頻度を決定します。Kafka AdminClient、ZooKeeper ZKTrustManager、Netty、および OkHttp クライアントのログレベルを制御することもできます。Netty は、Streams for Apache Kafka でネットワーク通信に使用されるフレームワークです。OkHttp は、HTTP リクエストを行うために使用されるライブラリーです。
Cluster Operator のデプロイ時に ConfigMap が見つからない場合、デフォルトのロギング値が使用されます。
Cluster Operator のデプロイ後に ConfigMap が誤って削除される場合、最後に読み込まれたロギング設定が使用されます。新規のロギング設定を読み込むために新規 ConfigMap を作成します。
ConfigMap から monitorInterval オプションを削除しないでください。
9.13.4. Streams for Apache Kafka Operator にログフィルターを追加する リンクのコピーリンクがクリップボードにコピーされました!
ConfigMap を使用して Streams for Apache Kafka Operator の (log4j2) ロギングレベルを設定する場合、ロギングフィルターを定義して、ログに返される内容も制限できます。
ロギングフィルターは、ロギングメッセージが多数ある場合に役に立ちます。ロガーのログレベルを DEBUG(rootLogger.level="DEBUG") に設定すると仮定します。ロギングフィルターは、このレベルでロガーに対して返されるログ数を減らし、特定のリソースに集中できるようにします。フィルターが設定されると、フィルターに一致するログメッセージのみがログに記録されます。
フィルターはマーカーを使用して、ログに含まれる内容を指定します。マーカーの種類、namespace、および名前を指定します。たとえば、Kafka クラスターで障害が発生した場合、種類を Kafka に指定してログを分離し、障害が発生しているクラスターの namespace および名前を使用します。
以下の例は、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)
フィルターは 1 つまたは複数作成できます。ここでは、ログは 2 つの Kafka クラスターに対してフィルターされます。
複数のロギングフィルターの設定
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-1)
appender.console.filter.filter2.type=MarkerFilter
appender.console.filter.filter2.onMatch=ACCEPT
appender.console.filter.filter2.onMismatch=DENY
appender.console.filter.filter2.marker=Kafka(my-namespace/my-kafka-cluster-2)
フィルターの 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 クラスターのログのみを返します。kind: ConfigMap apiVersion: v1 metadata: name: strimzi-cluster-operator data: log4j2.properties: #... 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)または、
ConfigMapを直接編集することもできます。oc edit configmap strimzi-cluster-operatorConfigMapを直接編集せずに YAML ファイルを更新する場合は、ConfigMap をデプロイして変更を適用します。oc create -f install/cluster-operator/050-ConfigMap-strimzi-cluster-operator.yaml
Topic Operator または User Operator へのフィルターの追加
フィルターを Topic Operator または User Operator に追加するには、ロギング ConfigMap を作成または編集します。
この手順では、ロギング ConfigMap は、Topic Operator のフィルターで作成されます。User Operator に同じアプローチが使用されます。
手順
ConfigMap を作成します。
ConfigMap を YAML ファイルとして作成するか、プロパティーファイルから Config Map を作成します。
この例では、フィルタープロパティーは
my-topicトピックに対してのみログを返します。kind: ConfigMap apiVersion: v1 metadata: name: logging-configmap data: log4j2.properties: 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=KafkaTopic(my-namespace/my-topic)プロパティーファイルを使用している場合は、コマンドラインでファイルを指定します。
oc create configmap logging-configmap --from-file=log4j2.propertiesプロパティーファイルではロギング設定が定義されます。
# Define the logger rootLogger.level="INFO" # Set the filters appender.console.filter.filter1.type=MarkerFilter appender.console.filter.filter1.onMatch=ACCEPT appender.console.filter.filter1.onMismatch=DENY appender.console.filter.filter1.marker=KafkaTopic(my-namespace/my-topic) # ...リソースの
specにexternal ロギングを定義し、logging.valueFrom.configMapKeyRef.nameに ConfigMap の名前を、logging.valueFrom.configMapKeyRef.keyにこの ConfigMap のキーを設定します。Topic Operator については、
KafkaリソースのtopicOperator設定でロギングを指定します。spec: # ... entityOperator: topicOperator: logging: type: external valueFrom: configMapKeyRef: name: logging-configmap key: log4j2.properties- Cluster Operator をデプロイして変更を適用します。
create -f install/cluster-operator -n my-cluster-operator-namespace