ログシステムの構成

Virtual DataPort、その Administration Tool、および Design Studio は、 Apache Log4j 2 ライブラリを使用してアクティビティを記録します。

それぞれのログファイルは以下のディレクトリに保存されます。

  • Virtual DataPort: <DENODO_HOME>/logs/vdp/

  • Administration Tool: <DENODO_HOME>/logs/vdp-admin/ 。これは、サーバー上ではなく、Administration Tool を実行するユーザーのコンピュータ上にあります。

  • Design Studio: <DENODO_HOME>/logs/design-studio/

Virtual DataPort のログシステムの構成を制御するファイルを以下に示します。

  • Virtual DataPort: <DENODO_HOME>/conf/vdp/log4j2.xml

  • Administration Tool: <DENODO_HOME>/conf/vdp-admin/log4j2.xml 。これは、サーバー上ではなく、Administration Tool を実行するユーザーのコンピュータ上にあります。

  • Design Studio: <DENODO_HOME>/resources/apache-tomcat/webapps/denodo-design-studio/WEB-INF/classes/log4j2.xml

これらのファイルに対する変更を適用するには、Virtual DataPort、Administration Tool、または Design Studio をそれぞれ再起動します。

Amazon AWS S3 にログを保存するようにこれらのコンポーネントを構成することもできます。設定方法については、ナレッジベースの記事「 How to store Denodo logs in Amazon S3 」を参照してください。

ログカテゴリのレベル (つまり、「ERROR」「WARN」「INFO」「DEBUG」または「TRACE」) を変更するには、以下のオプションのいずれかを使用します。

  1. 構成ファイル <DENODO_HOME>/conf/vdp/log4j2.xml を変更し、Virtual DataPort を再起動して変更内容を適用します。

  2. LogController ストアドプロシージャを呼び出します。

  3. Denodo の監視インターフェイス (JMX) から LogManagementInfo MBean の setLogLevel 操作を呼び出します。

1 番目のオプションでは、変更内容を有効にするために Virtual DataPort を再起動する必要がありますが、変更内容は永続的に有効になります。2 番目と 3 番目のオプションでは、変更内容はただちに適用されますが、Virtual DataPort を再起動すると、変更内容は失われます。

重要

Denodo のサポートチームから指示された場合を除いて、ログレベルを「TRACE」または「DEBUG」に設定しないでください。

ログレベルを「TRACE」または「DEBUG」に設定しないようにする理由は、以下のとおりです。

  1. データソースから取得したデータのような機密情報がログシステムによって記録される可能性があります。たとえば、ログカテゴリ「com.denodo」または「com.denodo.vdb.catalog.type」を「TRACE」に設定した場合、クエリの結果が記録されます。

  2. これにより、調べたい問題とは無関係のメッセージでログファイルがいっぱいになる可能性があり、トラブルシューティングがより困難になります。たとえば、「com.denodo」または「com.denodo.vdb.interpreter」を「TRACE」に設定した場合、Virtual DataPort が受信した各クエリの解析プロセスに関する情報が大量に記録されます。解析に問題がある場合はその必要がありますが、別の問題の場合は、不要なメッセージでログがいっぱいになります。

  3. 本番サーバーでは、ログカテゴリ「com.denodo」を「DEBUG」または「TRACE」に設定しないでください。ログシステムが保存する必要があるメッセージの量が増えるために、Virtual DataPort のパフォーマンスが低下するからです。

リクエストの機密情報を保護

Virtual DataPort では、クエリのログを <DENODO_HOME>/logs/vdp/vdp.log に記録するようにログシステムを構成できます。これを実行するために、 LOGCONTROLLER ストアドプロシージャを使用する方法があります。たとえば、次のコマンドを使用します。

CALL LOGCONTROLLER('com.denodo.vdp.requests', 'INFO');

Virtual DataPort のログシステムがリクエストのログを <DENODO_HOME>/logs/vdp/vdp.log に記録する場合、そのリクエストは読めないように書き換えられます。具体的には、クエリのログを記録する前に、次のような置換を行います。

  • 文字リテラルとユーザー名は ************** で置き換えられます。

  • 数値リテラルは 0 で置き換えられます。10 進数の値は 0.0 です。

  • クライアントアプリケーションの IP アドレスは、 XXX.XXX.XX.XX で置き換えられます。

この置換は、機密情報の可能性があるデータをログファイルに保存しないようにするために行われます。たとえば、ユーザーが以下を実行したとします。

SELECT *
FROM employee
WHERE social_security_number = '555-01-0002'

このリクエストのログを記録するようにログシステムを構成した場合、「vdp.log」ファイルには次のように記録されます。

280993143 [DNI(169)-XXX.XXX.XX.XX-75] INFO  2021-02-08T13:37:44.247 com.denodo.vdp.requests [] - SELECT *
FROM employee
WHERE social_security_number = '***********'

クライアントアプリケーションの IP は「XXX.XXX.XX.XX」に変更され、クエリのソーシャルセキュリティ番号の値はアスタリスクに置換されています。

このような変換は、ログシステムがクエリを保存する方法以外に影響を与えることはなく、クエリの実行にも影響はありません。

この保護を無効にするには、以下のコマンドを実行します。

  • リテラルを書き換えない場合、次のコマンドを実行します。:

    SET 'com.denodo.vdb.util.log.obfuscate.literal' = 'false';
    
  • ユーザー名を書き換えない場合、次のコマンドを実行します。:

    SET 'com.denodo.vdb.util.log.obfuscate.user' = 'false';
    
  • ユーザーの IP アドレスを書き換えない場合、次のコマンドを実行します。:

    SET 'com.denodo.vdb.util.log.obfuscate.ip' = 'false';
    
  • ログ全体で機密データの保護を解除する場合、次のコマンドを実行します。:

    SET 'com.denodo.vdb.util.log.obfuscate' = 'false';
    

クライアントアプリケーションの IP アドレスのみを書き換え、その他の値はプレーンテキストのままにする場合、「com.denodo.vdb.util.log.obfuscate」を「false」に、「com.denodo.vdb.util.log.obfuscate.ip」を「true」に設定します。