10.17. ロギングレベルの設定


ロギングレベルは、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
# ...
Copy to Clipboard Toggle word wrap

external 設定の例

# ...
logging:
  type: external
  valueFrom:
    configMapKeyRef:
      name: my-config-map
      key: my-config-map-key
# ...
Copy to Clipboard Toggle word wrap

ConfigMap の namekey の値は必須です。namekey が設定されていない場合は、デフォルトのロギングが使用されます。

10.17.1. Kafka コンポーネントおよび Operator のロギングオプション

特定の Kafka コンポーネントまたは Operator のログ設定の詳細は、次のセクションを参照してください。

10.17.2. ロギングの ConfigMap の作成

ConfigMap を使用してロギングプロパティーを定義するには、ConfigMap を作成してから、リソースの spec にあるロギング定義の一部としてそれを参照します。

ConfigMap には適切なロギング設定が含まれる必要があります。

  • Kafka コンポーネント、ZooKeeper、および Kafka Bridge の log4j.properties
  • Topic Operator および User Operator の log4j2.properties

設定はこれらのプロパティーの配下に配置する必要があります。

この手順では、ConfigMap は Kafka リソースのルートロガーを定義します。

手順

  1. ConfigMap を作成します。

    ConfigMap は、YAML ファイルとして、またはプロパティーファイルから作成できます。

    Kafka のルートロガー定義が含まれる ConfigMap の例:

    kind: ConfigMap
    apiVersion: v1
    metadata:
      name: logging-configmap
    data:
      log4j.properties:
        kafka.root.logger.level="INFO"
    Copy to Clipboard Toggle word wrap

    プロパティーファイルを使用している場合は、コマンドラインでファイルを指定します。

    oc create configmap logging-configmap --from-file=log4j.properties
    Copy to Clipboard Toggle word wrap

    プロパティーファイルではロギング設定が定義されます。

    # Define the logger
    kafka.root.logger.level="INFO"
    # ...
    Copy to Clipboard Toggle word wrap
  2. リソースの specexternal ロギングを定義し、logging.valueFrom.configMapKeyRef.name に ConfigMap の名前を、logging.valueFrom.configMapKeyRef.key にこの ConfigMap のキーを設定します。

    # ...
    logging:
      type: external
      valueFrom:
        configMapKeyRef:
          name: logging-configmap
          key: log4j.properties
    # ...
    Copy to Clipboard Toggle word wrap
  3. リソースを作成または更新します。

    oc apply -f <kafka_configuration_file>
    Copy to Clipboard Toggle word wrap

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

または、ConfigMap を直接編集することもできます。

oc edit configmap strimzi-cluster-operator
Copy to Clipboard Toggle word wrap

この ConfigMap を使用すると、ルートロガーレベル、ログ出力形式、さまざまなコンポーネントのログレベルなど、ログのさまざまな側面を制御できます。monitorInterval 設定は、ログ設定をリロードする頻度を決定します。Kafka AdminClient、ZooKeeper ZKTrustManager、Netty、および OkHttp クライアントのログレベルを制御することもできます。Netty は、Streams for Apache Kafka でネットワーク通信に使用されるフレームワークです。OkHttp は、HTTP リクエストを行うために使用されるライブラリーです。

Cluster Operator のデプロイ時に ConfigMap が見つからない場合、デフォルトのロギング値が使用されます。

Cluster Operator のデプロイ後に ConfigMap が誤って削除される場合、最後に読み込まれたロギング設定が使用されます。新規のロギング設定を読み込むために新規 ConfigMap を作成します。

注記

ConfigMap から monitorInterval オプションを削除しないでください。

10.17.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 
1

appender.console.filter.filter1.onMatch=ACCEPT 
2

appender.console.filter.filter1.onMismatch=DENY 
3

appender.console.filter.filter1.marker=Kafka(my-namespace/my-kafka-cluster) 
4
Copy to Clipboard Toggle word wrap

1
MarkerFilter 型は、フィルターを行うために指定されたマーカーを比較します。
2
onMatch プロパティーは、マーカーが一致するとログを受け入れます。
3
onMismatch プロパティーは、マーカーが一致しない場合にログを拒否します。
4
フィルター処理に使用されるマーカーの形式は KIND(NAMESPACE/NAME-OF-RESOURCE) です。

フィルターは 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)
Copy to Clipboard Toggle word wrap

フィルターの Cluster Operator への追加

フィルターを Cluster Operator に追加するには、そのロギング ConfigMap YAML ファイルを更新します (install/cluster-operator/050-ConfigMap-strimzi-cluster-operator.yaml)。

手順

  1. 050-ConfigMap-strimzi-cluster-operator.yaml ファイルを更新して、フィルタープロパティーを ConfigMap に追加します。

    この例では、フィルタープロパティーは my-kafka-cluster Kafka クラスターのログのみを返します。

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

    または、ConfigMap を直接編集することもできます。

    oc edit configmap strimzi-cluster-operator
    Copy to Clipboard Toggle word wrap
  2. ConfigMap を直接編集せずに YAML ファイルを更新する場合は、ConfigMap をデプロイして変更を適用します。

    oc create -f install/cluster-operator/050-ConfigMap-strimzi-cluster-operator.yaml
    Copy to Clipboard Toggle word wrap

Topic Operator または User Operator へのフィルターの追加

フィルターを Topic Operator または User Operator に追加するには、ロギング ConfigMap を作成または編集します。

この手順では、ロギング ConfigMap は、Topic Operator のフィルターで作成されます。User Operator に同じアプローチが使用されます。

手順

  1. ConfigMap を作成します。

    ConfigMap は、YAML ファイルとして、またはプロパティーファイルから作成できます。

    この例では、フィルタープロパティーは 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)
    Copy to Clipboard Toggle word wrap

    プロパティーファイルを使用している場合は、コマンドラインでファイルを指定します。

    oc create configmap logging-configmap --from-file=log4j2.properties
    Copy to Clipboard Toggle word wrap

    プロパティーファイルではロギング設定が定義されます。

    # 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)
    # ...
    Copy to Clipboard Toggle word wrap
  2. リソースの specexternal ロギングを定義し、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
    Copy to Clipboard Toggle word wrap
  3. Cluster Operator をデプロイして変更を適用します。
create -f install/cluster-operator -n my-cluster-operator-namespace
Copy to Clipboard Toggle word wrap

10.17.5. クラスター操作のロック取得警告

Cluster Operator は、ロックを使用して、各クラスターに対して同時に 1 つの操作だけが実行されるようにします。ロックが保持されている間に別の操作の開始が試行されると、その操作は現在の操作が完了するまで待機します。

クラスターの作成、ローリング更新、スケールダウン、スケールアップなどの操作は、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.
Copy to Clipboard Toggle word wrap

タイムアウトした操作は、STRIMZI_FULL_RECONCILIATION_INTERVAL_MS (デフォルトでは 120 秒) で定義された間隔で、次の定期的な調整中に再試行されます。

同じ調整番号の INFO メッセージが引き続き表示される場合は、ロック解除エラーが発生している可能性があります。

調整に関する INFO メッセージの例

INFO  AbstractOperator:399 - Reconciliation #1(watch) Kafka(myproject/my-cluster): Reconciliation is in progress
Copy to Clipboard Toggle word wrap

このような問題は、Cluster Operator を再起動すると解決できます。

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2026 Red Hat
トップに戻る