5.3. Debezium ログの設定


デフォルトでは、Debezium コネクターはすべての INFOWARN、および ERROR メッセージをコンソールに書き込みます。次のいずれかの方法を使用して、デフォルトのログ設定を変更できます。

注記

他の方法を使用して、Log4j による Debezium のログを設定することができます。詳細は、アペンダーを設定および使用し、特定の宛先にログメッセージを送信する方法のチュートリアルを検索してください。

5.3.1. ロガーを設定して Debezium のログレベルを変更する

デフォルトの Debezium ログレベルで、コネクターが正常かどうかを判断するのに十分な情報が得られます。ただし、コネクターが正常でない場合は、そのログレベルを変更して問題のトラブルシューティングを行うことができます。

一般に、Debezium コネクターは、ログメッセージを生成している Java クラスの完全修飾名と一致する名前のロガーにログメッセージを送信します。Debezium では、パッケージを使用して、類似または関連する機能のコードを取りまとめます。つまり、特定パッケージ内の特定クラスまたは全クラスのすべてのログメッセージを制御することができます。

手順

  1. connect-log4j.properties ファイルを開きます。
  2. コネクターのロガーを設定します。

    以下の例では、MySQL コネクターのロガーおよびコネクターが使用するデータベーススキーマ履歴の実装用ロガーを設定し、それらが DEBUG レベルのメッセージを記録するように設定します。

    例5.2 connect-log4j.properties 設定してロガーを有効にし、ログレベルを DEBUGに設定します。

    ...
    log4j.logger.io.debezium.connector.mysql=DEBUG, stdout  1
    log4j.logger.io.debezium.relational.history=DEBUG, stdout  2
    
    log4j.additivity.io.debezium.connector.mysql=false  3
    log4j.additivity.io.debezium.storage.kafka.history=false
    ...
    表5.2 ロガーを有効にし、ログレベルを設定するための connect-log4j.properties 設定の説明
    プロパティー説明

    1

    io.debezium.connector.mysql という名前のロガーを設定して、DEBUGINFOWARNERROR のメッセージを stdout のアペンダーに送信します。

    2

    io.debezium.relational.history という名前のロガーを設定して、DEBUGINFOWARNERROR のメッセージを stdout のアペンダーに送信します。

    3

    この log4j.additivity.io エントリーのペアは、additivity を無効にします。複数のアペンダーを使用する場合は、additivity の値を false に設定して、重複したログメッセージが親ロガーのアペンダに送信されないようにします。

  3. 必要に応じて、コネクター内のクラスの特定サブセットのログレベルを変更します。

    コネクター全体のログレベルを上げるとログがより煩雑になり、状況を把握するのが困難になる場合があります。このような場合は、トラブルシューティングを行う問題に関連するクラスのサブセットのログレベルだけを変更することができます。

    1. コネクターのログレベルを DEBUG または TRACE に設定します。
    2. コネクターのログメッセージを確認します。

      トラブルシューティングを行う問題に関連するログメッセージを探します。それぞれのログメッセージの末尾には、メッセージを生成した Java クラスの名前が表示されます。

    3. コネクターのログレベルを INFO に戻します。
    4. 識別したそれぞれの Java クラスのロガーを設定します。

      たとえば、MySQL コネクターが binlog を処理する際にいくつかのイベントをスキップする理由が不明なシナリオを考えてみます。コネクター全体で DEBUG または TRACE ログを有効にするのではなく、コネクターのログレベルは INFO のままにして、binlog を読み取るクラスについてのみ DEBUG または TRACE を設定することができます。

      例5.3 BinlogReader クラスの DEBUG ログを有効にする connect-log4j.properties 設定

      ...
      log4j.logger.io.debezium.connector.mysql=INFO, stdout
      log4j.logger.io.debezium.connector.mysql.BinlogReader=DEBUG, stdout
      log4j.logger.io.debezium.relational.history=INFO, stdout
      
      log4j.additivity.io.debezium.connector.mysql=false
      log4j.additivity.io.debezium.storage.kafka.history=false
      log4j.additivity.io.debezium.connector.mysql.BinlogReader=false
      ...

5.3.2. Kafka Connect API を使用して Debezium のログレベルを動的に変更する

Kafka Connect REST API を使用して、実行時にコネクターのログレベルを動的に設定できます。connect-log4j.properties で設定されるログレベルの変更とは異なり、API 経由で行った変更は即座に反映されるため、ワーカーを再起動する必要はありません。

API に指定するログレベル設定は、要求を受信するエンドポイントのワーカーにのみ適用されます。クラスター内の他のワーカーのログレベルは変更されません。

指定されたレベルは、ワーカーの再起動後に維持されません。ロギングレベルを永続的に変更するには、connect-log4j.propertiesロガーを設定 するか、マップされた 診断コンテキストを追加します

手順

  • 以下の情報を指定する admin/loggers エンドポイントに PUT 要求を送信してログレベルを設定します。

    • ログレベルを変更するパッケージ。
    • 設定するログレベル。

      curl -s -X PUT -H "Content-Type:application/json" http://localhost:8083/admin/loggers/io.debezium.connector.<connector_package> -d '{"level": "<log_level>"}'

      たとえば、Debezium MySQL コネクターのデバッグ情報をログに記録するには、以下のリクエストを Kafka Connect に送信します。

      curl -s -X PUT -H "Content-Type:application/json" http://localhost:8083/admin/loggers/io.debezium.connector.mysql -d '{"level": "DEBUG"}'

5.3.3. マッピングされた診断コンテキストを追加して Debezium のロギングレベルの変更

ほとんどの Debezium コネクター (および Kafka Connect ワーカー) は、複数のスレッドを使用してさまざまな動作を実行します。そのために、ログファイルを探し、特定の論理動作のログメッセージだけを識別するのが困難な場合があります。容易にログメッセージを探すことができるように、Debezium にはそれぞれのスレッドの追加情報を提供するさまざまな マッピングされた診断コンテキスト (MDC) が用意されています。

Debezium では、以下の MDC プロパティーを利用することができます。

dbz.connectorType
コネクタータイプの短縮エイリアスたとえば、MySQLMongoPostgres などです。同じ タイプ のコネクターに関連付けられたすべてのスレッドは同じ値を使用するので、これを使用して、特定タイプのコネクターによって生成されたすべてのログメッセージを探すことができます。
dbz.connectorName
コネクターの設定で定義されているコネクターまたはデータベースサーバーの名前たとえば、productsserverA などです。特定の コネクターインスタンス に関連付けられたすべてのスレッドは同じ値を使用するので、あるコネクターインスタンスによって生成されたすべてのログメッセージを探すことができます。
dbz.connectorContext
コネクターのタスク内で実行されている別のスレッドとして実行されている動作の短縮名たとえば、mainbinlogsnapshot などです。コネクターが特定のリソース (テーブルやコレクション等) にスレッドを割り当てる場合、そのリソースの名前が使用されることがあります。コネクターに関連付けられたスレッドごとに異なる値を使用するので、この特定の動作に関連付けられたすべてのログメッセージを探すことができます。

コネクターの MDC を有効にするには、connect-log4j.properties ファイルでアペンダーを設定します。

手順

  1. connect-log4j.properties ファイルを開きます。
  2. サポートされている Debezium MDC プロパティーのいずれかを使用するようにアペンダーを設定します。この例では、以下の MDC プロパティーを使用するように stdout アペンダーを設定します。

    例5.4 MDC プロパティーを使用するように stdout アペンダーを設定する connect-log4j.properties 設定

    ...
    log4j.appender.stdout.layout.ConversionPattern=%d{ISO8601} %-5p  %X{dbz.connectorType}|%X{dbz.connectorName}|%X{dbz.connectorContext}  %m   [%c]%n
    ...

    前述の例の設定では、以下の出力のようなログメッセージが生成されます。

    ...
    2017-02-07 20:49:37,692 INFO   MySQL|dbserver1|snapshot  Starting snapshot for jdbc:mysql://mysql:3306/?useInformationSchema=true&nullCatalogMeansCurrent=false&useSSL=false&useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8&zeroDateTimeBehavior=convertToNull with user 'debezium'   [io.debezium.connector.mysql.SnapshotReader]
    2017-02-07 20:49:37,696 INFO   MySQL|dbserver1|snapshot  Snapshot is using user 'debezium' with these MySQL grants:   [io.debezium.connector.mysql.SnapshotReader]
    2017-02-07 20:49:37,697 INFO   MySQL|dbserver1|snapshot  GRANT SELECT, RELOAD, SHOW DATABASES, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'debezium'@'%'   [io.debezium.connector.mysql.SnapshotReader]
    ...

ログのそれぞれの行には、コネクターのタイプ (例: MySQL)、コネクターの名前 (例: dbserver1)、およびスレッドの動作 (例: snapshot) が含まれます。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.