Sun Java System Directory Server Enterprise Edition 6.1 管理ガイド

第 27 章 Directory Proxy Server のログ

Directory Proxy Server では、アクセスログおよびエラーログに情報が記録されます。Directory Server とは異なり、Directory Proxy Server には監査ログはありません。Directory Proxy Server のログについては、『Sun Java System Directory Server Enterprise Edition 6.1 Reference』の第 23 章「Directory Proxy Server Logging」を参照してください。

この章の内容は次のとおりです。

Directory Proxy Server ログの表示

Directory Proxy Server のログは、ログファイルを直接表示するか、Directory Service Control Center (DSCC) を通して参照できます。

デフォルトでは、ログは次のディレクトリ内に格納されます。


instance-path/logs

次の図は、DSCC 上の Directory Proxy Server のエラーログの画面キャプチャーです。

図 27–1 Directory Proxy Server のエラーログウィンドウ

画面キャプチャーは、Directory Proxy Server のエラーログを示しています。エラーログエントリは表に一覧表示されています。

Directory Proxy Server のログの設定

Directory Proxy Server のエラーログとアクセスログは、dpconf コマンドまたは DSCC を使用することで設定できます。DSCC によるログの設定方法については、Directory Proxy Server のオンラインヘルプを参照してください。この節では、dpconf コマンドを使用して Directory Proxy Server のログを設定する方法について説明します。

次のコマンドを実行することで、設定オプションのリストを、個々のオプションで設定可能な値およびデフォルトの設定値の情報とともに取得できます。

$ dpconf help-properties error-log
$ dpconf help-properties access-log

ProcedureDirectory Proxy Server のアクセスログとエラーログを設定する

この手順では、Directory Proxy Server のアクセスログを設定します。Directory Proxy Server のエラーログを設定する場合には、以下の手順に出てくる「access」を「error」に置き換えて、同じ手順を実行します。

DSCC を使用してこの作業を実行できます。詳細は、「Directory Service Control Center のインタフェース」と DSCC のオンラインヘルプを参照してください。

  1. アクセスログのプロパティーを表示します。


    $ dpconf get-access-log-prop -h host -p port
    

    アクセスログのデフォルトプロパティーは、次のとおりです。


    default-log-level                :  info
    enable-log-rotation				  :  true
    log-buffer-size                  :  9.8k
    log-file-name                    :  logs/access
    log-file-perm                    :  600
    log-level-client-connections     :  -
    log-level-client-disconnections  :  -
    log-level-client-operations      :  -
    log-level-connection-handlers    :  -
    log-level-data-sources           :  -
    log-level-data-sources-detailed  :  -
    log-min-size						  :  100M
    log-rotation-frequency           :  1h
    log-rotation-policy              :  size
    log-rotation-size                :  100M
    log-rotation-start-day           :  1
    log-rotation-start-time          :  0000
    log-search-filters               :  false
    max-age                          :  unlimited
    max-log-files                    :  10
    max-size                         :  unlimited
    min-free-disk-space-size         :  1M
  2. 手順 1 で一覧表示されるプロパティーのうち、1 つまたは複数を変更します。


    $ dpconf set-access-log-prop -h host -p port property:value \
     [property:value ...]

    たとえば、すべてのメッセージカテゴリのデフォルトのログレベルを warning に設定するには、default-log-level プロパティーの値を warning に設定します。


    $ dpconf set-access-log-prop -h host1 -p 1389 default-log-level:warning

    すべてのログを無効にするには、各メッセージカテゴリのログレベルに関係なく、default-log-level プロパティーの値を none に設定します。


    $ dpconf set-access-log-prop -h host1 -p 1389 default-log-level:none

    特定のログレベルをデフォルトのログレベルにリセットするには、該当のログレベルのプロパティーを inherited に設定します。たとえば、クライアント接続のログレベルをリセットするには、次のコマンドを実行します。


    $ dpconf set-access-log-prop -h host1 -p 1389 log-level-client-connections:inherited

    set-access-log-prop サブコマンドで設定できるプロパティーを調べるには、次のように入力します。


    $ dpconf help-properties access-log

Directory Proxy Server ログのローテーションの設定

デフォルトでは、ログファイルのサイズが 100M バイトに達すると、ログファイルのローテーションが行われます。デフォルトでは 10 個のログファイルが保存され、それ以降はローテーション手順によってもっとも古いログファイルの上書きが始められます。この節では、Directory Proxy Server ログを予定されたローテーションに対して設定する方法、ログのローテーションを手動で行う方法、ログのローテーションを無効にする方法について説明します。設定例は、「ログローテーションの設定例」を参照してください。

Procedureアクセスログとエラーログの定期ローテーションを設定する

この手順では、Directory Proxy Server のアクセスログを設定します。Directory Proxy Server のエラーログを設定する場合には、以下の手順に出てくる「access」を「error」に置き換えて、同じ手順を実行します。

DSCC を使用してこの作業を実行できます。詳細は、「Directory Service Control Center のインタフェース」と DSCC のオンラインヘルプを参照してください。

  1. (省略可能) アクセスログのプロパティーを表示します。


    $ dpconf get-access-log-prop -h host -p port
    
  2. (省略可能) アクセスログのプロパティーに対して有効な値を表示します。

    $ dpconf help-properties access-log
  3. 一定のサイズに達するとログのローテーションが行われるようにするには、次のプロパティーを設定します。


    $ dpconf set-access-log-prop -h host -p port \
     log-rotation-policy:size log-rotation-size:maximum file size
    

    最大ファイルサイズの単位を指定しない場合、デフォルトの単位である「バイト」が使用されます。ログファイルが定義されたサイズに達すると、ログのローテーションが行われます。ファイルサイズは、少なくとも 1M バイトにし、2G バイトを超えないようにする必要があります。

    サイズによるログのローテーションの例については、「ログサイズに基づくログのローテーション」を参照してください。

  4. ログのローテーションを定期的に行うには、ログサイズに関係なく、次のプロパティーを設定します。


    $ dpconf set-access-log-prop -h host -p port \
     log-rotation-frequency:interval in months, weeks, hours, or minutes \
     log-rotation-policy:periodic \
     log-rotation-start-day:day in week (1-7) or day in the month (1-31) \
     log-rotation-start-time:time of day (hhmm)
    

    ログのローテーションが月の 31 日に行われるように設定すると、その月の日数が 31 日より短い場合、ログのローテーションは次の月の最初の日に行われます。

    定期的なログのローテーションの例については、「時間に基づくログのローテーション」を参照してください。

  5. ログファイルが十分に大きくなったときに定期的なログのローテーションを行うには、log-rotation-frequency プロパティーと log-min-size プロパティーを設定します。


    $ dpconf set-access-log-prop -h host -p port \
     log-rotation-frequency:interval in months, weeks, hours, or minutes \
     log-rotation-policy:periodic log-min-size:minimum file size
     log-rotation-start-day:day in week (1-7) or day in the month (1-31) \
     log-rotation-start-time:time of day (hhmm)
    

    log-min-size プロパティーは、ログの最小サイズを示します。ローテーションは、ログファイルが指定したサイズより大きくなった場合のみ、予定された時間に実行されます。

    ログのローテーションが月の 31 日に行われるように設定すると、その月の日数が 31 日より短い場合、ログのローテーションは次の月の最初の日に行われます。

    ファイルサイズが十分に大きくなったときに定期的にログのローテーションを行う方法の例については、「時間とログサイズに基づくログのローテーション」を参照してください。

Procedureアクセスログとエラーログのファイルのローテーションを手動で行う

この手順では、Directory Proxy Server のアクセスログのローテーションを行います。Directory Proxy Server のエラーログのローテーションを行う場合には、以下の手順に出てくる「access」を「error」に置き換えて、同じ手順を実行します。

DSCC を使用してこの作業を実行できます。詳細は、「Directory Service Control Center のインタフェース」と DSCC のオンラインヘルプを参照してください。

  1. アクセスログのローテーションを行います。


    $ dpconf rotate-log-now -h host -p port access

Procedureアクセスログとエラーログのローテーションを無効にする

この手順では、Directory Proxy Server のアクセスログのローテーションを無効にします。Directory Proxy Server のエラーログのローテーションを無効にする場合には、以下の手順に出てくる「access」を「error」に置き換えて、同じ手順を実行します。

  1. ログファイルのローテーションを無効にします。


    $ dpconf set-access-log-prop -h host -p port enable-log-rotation:false

ログローテーションの設定例

ログサイズ、時間、またはその両方によってログのローテーションを設定する方法の例は、次のとおりです。

ログサイズに基づくログのローテーション

この節では、ログサイズだけに従ってログのローテーションを設定する方法の例を示します。次の設定では、最後にログのローテーションが行われてから経過した時間に関係なく、ログが 10M バイトに達したときにローテーションが行われます。


$ dpconf set-access-log-prop -h host1 -p 1389 log-rotation-policy:size \
  log-rotation-size:10M

時間に基づくログのローテーション

この節で示す例では、ログサイズに関係なく、最後のローテーションからの経過時間に従ってログローテーションを設定する方法を示します。

log-rotation-start-day を 31 に設定したときに、30 日しかない月の場合、ログのローテーションは次の月の最初の日に行われます。log-rotation-start-day を 31 に設定したときに、28 日しかない月 (2 月) の場合、ログのローテーションは 3 日に行われます。

時間とログサイズに基づくログのローテーション

この例では、ファイルサイズが十分に大きくなった場合の、指定した間隔でのログのローテーションの設定方法を示します。

次の設定では、ログファイルのサイズが 1M バイトを超えた場合に、毎日 3:00、11:00、19:00 にログのローテーションが行われます。ログファイルのサイズが 1M バイトを超えなければ、ログファイルのローテーションは行われません。


$ dpconf set-access-log-prop -h host1 -p 1389 log-rotation-frequency:8h \
 log-rotation-policy:periodic log-min-size:1M log-rotation-start-time:0300

Directory Proxy Server ログの削除

Directory Proxy Server では、時間、サイズ、またはディスクの空き容量 (デフォルト) に基づいたログの削除を設定できます。これらの削除ポリシーの詳細は、『Sun Java System Directory Server Enterprise Edition 6.1 Reference』「Log File Deletion」を参照してください。

次の手順では、アクセスログのログの削除を設定します。エラーログのログの削除を設定するときも同じコマンドを使います。ただし、 accesserror に置き換えます。

Procedure時間に基づいたアクセスログとエラーログの削除を設定する

DSCC を使用してこの作業を実行できます。詳細は、「Directory Service Control Center のインタフェース」と DSCC のオンラインヘルプを参照してください。

  1. ログファイルの最長有効期間を指定します。


    $ dpconf set-access-log-prop -h host -p port max-age:duration
    

    ここで、duration には、日( d)、週 (w)、または月 (M) の単位を指定します。たとえば、5 日前より古いバックアップログファイルを削除するには、次のコマンドを使用します。


    $ dpconf set-access-log-prop -h host1 -p 1389 max-age:5d

Procedureファイルサイズに基づいたアクセスログとエラーログの削除を設定する

DSCC を使用してこの作業を実行できます。詳細は、「Directory Service Control Center のインタフェース」と DSCC のオンラインヘルプを参照してください。

  1. ログファイルの最大サイズを指定します。


    $ dpconf set-access-log-prop -h host -p port max-size:memory-size
    

    たとえば、1M バイトより大きいバックアップログファイルを削除するには、次のコマンドを使用します。


    $ dpconf set-access-log-prop -h host1 -p 1389 max-size:1M

Procedureディスクの空き容量に基づいたアクセスログとエラーログの削除を設定する

DSCC を使用してこの作業を実行できます。詳細は、「Directory Service Control Center のインタフェース」と DSCC のオンラインヘルプを参照してください。

  1. 使用可能な最小ディスク容量を指定します。


    $ dpconf set-access-log-prop -h host -p port min-free-disk-space-size:memory-size
    

    たとえば、使用可能なディスク容量が 2M バイトより少なくなったときにバックアップログファイルを削除するには、次のコマンドを使用します。


    $ dpconf set-access-log-prop -h host1 -p 1389 min-free-disk-space-size:2M

syslogd デーモンに対するアラートのログ

この節では、syslogd デーモンに対するアラートメッセージのログを設定する方法と、syslog アラートを受け付けるようにオペレーティングシステムを設定する方法について説明します。

Proceduresyslogd デーモンに対するアラートをログに記録するように Directory Proxy Server を設定する

DSCC を使用してこの作業を実行できます。詳細は、「Directory Service Control Center のインタフェース」と DSCC のオンラインヘルプを参照してください。

  1. (省略可能) システムログアラートのプロパティーの現在の値を表示します。


    $ dpconf get-server-prop -h host -p port syslog-alerts-enabled \
     syslog-alerts-facility syslog-alerts-host

    システムログアラートのデフォルトプロパティーは、次のとおりです。


    syslog-alerts-enabled   :  false
    syslog-alerts-facility  :  USER
    syslog-alerts-host      :  localhost

    syslog-alerts-host プロパティーは、メッセージの送信先である syslogd デーモンのホスト名を定義します。syslog-alerts-facility プロパティーは読み取り専用であり、メッセージをシステムログ内の user カテゴリに送信します。

  2. syslogd デーモンにアラートメッセージのログを記録できるようにします。


    $ dpconf set-server-prop -h host -p port syslog-alerts-enabled:true
  3. (省略可能) アラートメッセージを別のホスト上の syslogd デーモンに送信します。


    $ dpconf set-server-prop -h host -p port syslog-alerts-host:hostname
    

syslog アラートを受け付けるオペレーティング システムの設定

この節では、syslog アラートを受け付けるように SolarisTM、Linux、および HP-UX オペレーティング システムを設定する手順を示します。

Proceduresyslog アラートを受け付けるように Solaris OS を設定する

  1. 適切な機能を syslog 設定ファイルに追加します。

    たとえば、すべてのアラートを USER 機能を使用して格納するには、/etc/syslog.conf に次の行を追加します。

    user.info       /var/adm/info

    ここでは、例として、/var/adm/info をメッセージの格納先になるローカルディレクトリとします。続行する前に、/var/adm/info が存在することを確認します。

  2. syslogd デーモンを再起動します。

    1. Solaris 8 および 9 の場合は、次のように入力して syslogd を再起動します。

      $ /etc/init.d/syslog stop | start
    2. Solaris 10 の場合は、次のように入力して syslogd を再起動します。

      $ svcadm restart system/system-log
  3. メッセージが syslog に記録されることを確認します。

    $ logger -p user.info "Test message"
    $ cat /var/adm/info
     Jun 19 17:18:38 host user: [ID 12345 user.info] Test message

Proceduresyslog アラートを受け付けるように Linux を設定する

  1. 適切な機能を syslog 設定ファイルに追加します。

    たとえば、すべてのアラートを USER 機能を使用して格納するには、/etc/syslog.conf に次の行を追加します。

    user.info       /var/adm/info

    ここでは、例として、/var/adm/info をメッセージの格納先になるローカルディレクトリとします。続行する前に、/var/adm/info が存在することを確認します。

  2. - r オプションを指定して実行するように、syslogd デーモンを設定します。

    このオプションを使えば、syslogd でネットワークからの接続を受け付け可能になります。デフォルトでは、-r オプションは設定されていません。

    -r オプションを設定するには、/etc/sysconfig/syslog に次の行を追加します。

    SYSLOGD_OPTIONS="-m 0 -r"

    /etc/sysconfig/syslog が存在しない場合は、同じ行を /etc/init.d/syslog に追加します。

  3. syslogd デーモンを再起動します。

    $ /etc/init.d/syslog stop | start
  4. メッセージが syslog に記録されることを確認します。

    $ logger -p user.info "Test message"
    $ cat /var/adm/info
     Jun 19 17:18:38 host user: [ID 12345 user.info] Test message

Proceduresyslog アラートを受け付けるように HP-UX を設定する

  1. 適切な機能を syslog 設定ファイルに追加します。

    たとえば、すべてのアラートを USER 機能を使用して格納するには、/etc/syslog.conf に次の行を追加します。

    user.info       /var/adm/info

    ここでは、例として、/var/adm/info をメッセージの格納先になるローカルディレクトリとします。続行する前に、/var/adm/info が存在することを確認します。

  2. syslogd デーモンを再起動します。

    $ /sbin/init.d/syslogd stop | start
  3. メッセージが syslog に記録されることを確認します。

    $ logger -p user.info "Test message"
    $ cat /var/adm/info
     Jun 19 17:18:38 host user: [ID 12345 user.info] Test message

Directory Proxy Server および Directory Server のアクセスログによるクライアント要求の追跡

クライアント要求のパスを追跡するには、要求が Directory Proxy Server のアクセスログと Directory Server のアクセスログに記録される方法を理解する必要があります。この節の内容を理解するには、最初に『Sun Java System Directory Server Enterprise Edition 6.1 Reference』「Tracking Client Requests Through Directory Proxy Server and Directory Server Access Logs」をお読みください。

ProcedureDirectory Proxy Server から Directory Server を経由したクライアントアプリケーションへの操作を追跡する

DSCC を使用してこの作業を実行することはできません。この手順で説明しているように、コマンド行を使用してください。

  1. Directory Server のアクセスログ内で追跡する操作の接続番号を見つけます。

    たとえば、アクセスログ内の次の行は、接続番号が conn=12839 である op=2 という操作を示します。


    [20/Jul/2006:18:01:49 -0500] conn=12839 op=2 msgId=4 - SRCH base="dc=example,dc=com" 
     scope=2 filter="(objectClass=organizationalunit)" attrs=ALL
  2. その接続についての Directory Proxy Server の接続情報を入手します。

    この情報を入手するには、Directory Server のアクセスログを検索して、対応する接続番号を持つすべての操作を見つけます。たとえば、UNIX システムの場合、次のような grep コマンドを実行して、Directory Server のアクセスログ内の接続 conn=12839 に対応するすべての行を見つけます。


    $ grep conn=12839 access

    最初の LDAP 接続を示す行が探している行であり、次のようになります。


    [19/Jul/2006:16:32:51 -0500] conn=12839 op=-1 msgId=-1 - fd=27 slot=27 
     LDAP connection from 129.153.160.175:57153 to 129.153.160.175

    前述の行は、129.153.160.175:57153 から Directory Server への LDAP 接続があることを示しています。ポート番号 (57153) は、Directory Proxy Server のアクセスログで接続情報を調べる際に必要となります。このポート番号を使って、Directory Proxy Server のログ内で対応する接続を見つけることができ、この接続からクライアント情報を見つけることができます。

    接続が最初に確立されてからログファイルのローテーションが行われている場合は、アーカイブされたログファイルと現在のアクセスログファイルを検索する必要があります。

  3. Directory Proxy Server のアクセスログ内で対応する接続を見つけます。

    この情報を入手するには、Directory Proxy Server のアクセスログを検索して、対応するポート番号を持つすべての操作を見つけます。

    ログファイル内で、同じポート番号を持つ複数のエントリが見つかることがあります。正しいエントリを確実に見つけるには、Directory Server のログを検索したときに見つかったエントリに記載されていたタイムスタンプも条件に含めて検索します。

    たとえば、UNIX システムでは、次のように grep コマンドを実行して、Directory Server のログで見つけたエントリのタイムスタンプおよびポート番号に対応する接続エントリを見つけます。


    $ grep 19/Jul/2006:16:32 access | grep 57153

    サーバー間でのわずかな時間のずれを考慮に入れて、検索条件にタイムスタンプを含めるときには、秒の値は除きます。

    Directory Proxy Server のログ内の対応する行は、次のようになります。


    [19/Jul/2006:16:32:51 -0500] - SERVER_OP  - INFO  - Created BIND  LDAP connection 
     s_conn=sunds-d1m1-9389:34 client=0.0.0.0:57153 
     server=idm160.central.sun.com:9389 main

    この行は、Directory Proxy Server で s_conn=sunds-d1m1-9389:34 への BIND 接続が作成されたことを示します。Directory Proxy Server は、自分自身を TCP ポート 57153 上のクライアント client=0.0.0.0 として識別します。

    ログのこの行から得られる重要な情報は、サーバー ID とポート番号 (s_conn=sunds-d1m1-9389:34 ) です。

  4. 前述の手順で識別されたサーバー ID とポート番号に対応するすべての操作を見つけます。

    この情報を入手するには、Directory Proxy Server のアクセスログで、対応するサーバー ID とポート番号を持つすべての操作をを検索します。

    たとえば、UNIX システムでは、次のような grep コマンドを実行して、前述の手順で見つけたサーバー ID に対応する操作を見つけます。


    $ grep s_conn=sunds-d1m1-9389:34 access

    この例では、関連する操作が数日にまたがっている可能性があるため、タイムスタンプを用いた検索は有効ではないかもしれません。ただし、検索によって返される操作が正しいものであることを確認する必要があります。複数の Create 接続ステートメントがある場合は、必ず、Directory Server のログで見つけた Create 接続ステートメントと合致するものを見つけてください。そのためには、手順 1 で見つかったエントリのタイムスタンプと同じタイムスタンプのエントリを見つけます。

    Directory Proxy Server のアクセスログの次の抜粋は、s_conn=sunds-d1m1-9389:34 に対して返されたすべての操作を示します。


    [19/Jul/2006:16:32:51 -0500] - SERVER_OP  - INFO - Created BIND LDAP connection
     s_conn=sunds-d1m1-9389:34 client=0.0.0.0:57153 server=idm160.central.sun.com:9389 main
    [20/Jul/2006:18:01:49 -0500] - SERVER_OP  - INFO  - conn=31 op=0 BIND dn="cn=directory manager"
     method="SIMPLE" s_msgid=3 s_conn=sunds-d1m1-9389:34
    [20/Jul/2006:18:01:49 -0500] - SERVER_OP  - INFO  - conn=31 op=0 BIND RESPONSE err=0 msg=""
     s_conn=sunds-d1m1-9389:34
    [20/Jul/2006:18:01:49 -0500] - SERVER_OP  - INFO  - conn=31 op=1 SEARCH base="dc=example,dc=com"
     scope=2 s_msgid=4 s_conn=sunds-d1m1-9389:34
    [20/Jul/2006:18:01:49 -0500] - SERVER_OP  - INFO  - conn=31 op=1 SEARCH RESPONSE err=0 msg=""
     nentries=1 s_conn=sunds-d1m1-9389:34

    この情報により、Directory Proxy Server のこの検索操作に対する接続 ID が 31 (conn=31) であることがわかります。

  5. 前述の手順で見つかった接続 ID に対応する、クライアント接続 IP アドレスを見つけます。

    この情報を入手するには、Directory Proxy Server のアクセスログで、正しい接続 ID とタイムスタンプを持つすべての操作を検索します。検索時には、手順 1 で検索したステートメントのタイムスタンプを使用します。

    たとえば、UNIX システムでは、次のような grep コマンドを実行して、クライアント接続 IP アドレスを見つけます。


    $ grep "20/Jul/2006:18:01" access | grep conn=31

    目的の行は次のようになります。


    [20/Jul/2006:18:01:49 -0500] - CONNECT - INFO  - conn=31 client=129.150.64.156:2031
    server=0.0.0.0:11389 protocol=LDAP
  6. 前述の手順で見つかった IP アドレスの所有者を確認します。

    この情報により、Directory Server 上で行われた操作をだれが担当したかを、正確に証明できます。