Directory Proxy Server では、アクセスログおよびエラーログに情報が記録されます。Directory Server とは異なり、Directory Proxy Server には監査ログはありません。Directory Proxy Server のログについては、『Sun Java System Directory Server Enterprise Edition 6.3 Reference』の第 23 章「Directory Proxy Server Logging」を参照してください。
この章の内容は次のとおりです。
Directory Proxy Server のログは、ログファイルを直接表示するか、Directory Service Control Center (DSCC) を通して参照できます。
デフォルトでは、ログは次のディレクトリ内に格納されます。
instance-path/logs |
次の図は、DSCC 上の 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
この手順では、Directory Proxy Server のアクセスログを設定します。Directory Proxy Server のエラーログを設定する場合には、以下の手順に出てくる「access」を「error」に置き換えて、同じ手順を実行します。
このタスクは DSCC を使用して実行することができます。詳細については、「Directory Service Control Center のインタフェース」および DSCC オンラインヘルプを参照してください。
アクセスログのプロパティーを表示します。
$ 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 |
手順 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 |
デフォルトでは、ログファイルのサイズが 100M バイトに達すると、ログファイルのローテーションが行われます。デフォルトでは 10 個のログファイルが保存され、それ以降はローテーション手順によってもっとも古いログファイルの上書きが始められます。この節では、Directory Proxy Server ログを予定されたローテーションに対して設定する方法、ログのローテーションを手動で行う方法、ログのローテーションを無効にする方法について説明します。設定例は、「ログローテーションの設定例」を参照してください。
この手順では、Directory Proxy Server のアクセスログを設定します。Directory Proxy Server のエラーログを設定する場合には、以下の手順に出てくる「access」を「error」に置き換えて、同じ手順を実行します。
このタスクは DSCC を使用して実行することができます。詳細については、「Directory Service Control Center のインタフェース」および DSCC オンラインヘルプを参照してください。
(省略可能) アクセスログのプロパティーを表示します。
$ dpconf get-access-log-prop -h host -p port |
(省略可能) アクセスログのプロパティーに対して有効な値を表示します。
$ dpconf help-properties access-log
一定のサイズに達するとログのローテーションが行われるようにするには、次のプロパティーを設定します。
$ dpconf set-access-log-prop -h host -p port \ log-rotation-policy:size log-rotation-size:maximum file size |
最大ファイルサイズの単位を指定しない場合、デフォルトの単位である「バイト」が使用されます。ログファイルが定義されたサイズに達すると、ログのローテーションが行われます。ファイルサイズは、少なくとも 1M バイトにし、2G バイトを超えないようにする必要があります。
サイズによるログのローテーションの例については、「ログサイズに基づくログのローテーション」を参照してください。
ログのローテーションを定期的に行うには、ログサイズに関係なく、次のプロパティーを設定します。
$ 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 日より短い場合、ログのローテーションは次の月の最初の日に行われます。
定期的なログのローテーションの例については、「時間に基づくログのローテーション」を参照してください。
ログファイルが十分に大きくなったときに定期的なログのローテーションを行うには、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 日より短い場合、ログのローテーションは次の月の最初の日に行われます。
ファイルサイズが十分に大きくなったときに定期的にログのローテーションを行う方法の例については、「時間とログサイズに基づくログのローテーション」を参照してください。
この手順では、Directory Proxy Server のアクセスログのローテーションを行います。Directory Proxy Server のエラーログのローテーションを行う場合には、以下の手順に出てくる「access」を「error」に置き換えて、同じ手順を実行します。
このタスクは DSCC を使用して実行することができます。詳細については、「Directory Service Control Center のインタフェース」および DSCC オンラインヘルプを参照してください。
この手順では、Directory Proxy Server のアクセスログのローテーションを無効にします。Directory Proxy Server のエラーログのローテーションを無効にする場合には、以下の手順に出てくる「access」を「error」に置き換えて、同じ手順を実行します。
ログサイズ、時間、またはその両方によってログのローテーションを設定する方法の例は、次のとおりです。
この節では、ログサイズだけに従ってログのローテーションを設定する方法の例を示します。次の設定では、最後にログのローテーションが行われてから経過した時間に関係なく、ログが 10M バイトに達したときにローテーションが行われます。
$ dpconf set-access-log-prop -h host1 -p 1389 log-rotation-policy:size \ log-rotation-size:10M |
この節で示す例では、ログサイズに関係なく、最後のローテーションからの経過時間に従ってログローテーションを設定する方法を示します。
次の設定では、ログのローテーションは今日の 3:00 とそれ以降の 8 時間ごとに行われ、ログファイルのサイズとは無関係です。
$ dpconf set-access-log-prop -h host1 -p 1389 log-rotation-frequency:8h \ log-rotation-policy:periodic log-rotation-start-time:0300 |
次の設定では、ログファイルのサイズとは無関係に、毎日 3:00、13:00、23:00 にログのローテーションが行われます。log-rotation-start-time パラメータは log-rotation-frequency パラメータに優先するため、ログのローテーションは 23:00 に行われると、次回は 10 時間後ではなく、4 時間後の 3:00 に行われます。
$ dpconf set-access-log-prop -h host1 -p 1389 log-rotation-frequency:10h \ log-rotation-policy:periodic log-rotation-start-time:0300 |
次の設定では、ログのローテーションは月曜日の正午に行われ、そのあと毎週同じ時間に行われ、ログファイルのサイズとは無関係です。
$ dpconf set-access-log-prop -h host1 -p 1389 log-rotation-frequency:1w \ log-rotation-policy:periodic log-rotation-start-day:2 log-rotation-start-time:1200 |
次の設定では、ログファイルのサイズとは無関係に、月曜日の正午に最初のログのローテーションが行われ、それ以降は、3 日おきに正午にローテーションが行われます。
$ dpconf set-access-log-prop -h host1 -p 1389 log-rotation-frequency:3d \ log-rotation-policy:periodic log-rotation-start-day:2 log-rotation-start-time:1200 |
ログのローテーションが行われる曜日は、月曜日、木曜日、日曜日、水曜日というように続きます。log-rotation-start-day パラメータは最初の週だけに適用されます。2 週目の月曜日にはログのローテーションは行われません。
次の設定では、ログサイズとは無関係に、毎月 22 日の正午にログのローテーションが行われます。
$ dpconf set-access-log-prop -h host1 -p 1389 log-rotation-frequency:1m \ log-rotation-policy:periodic log-rotation-start-day:22 \ log-rotation-start-time:1200 |
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 では、時間、サイズ、またはディスクの空き容量 (デフォルト) に基づいたログの削除を設定できます。これらの削除ポリシーの詳細は、『Sun Java System Directory Server Enterprise Edition 6.3 Reference』の「Log File Deletion」を参照してください。
次の手順では、アクセスログのログの削除を設定します。エラーログのログの削除を設定するときも同じコマンドを使います。ただし、 access を error に置き換えます。
このタスクは DSCC を使用して実行することができます。詳細については、「Directory Service Control Center のインタフェース」および DSCC オンラインヘルプを参照してください。
ログファイルの最長有効期間を指定します。
$ 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 |
このタスクは DSCC を使用して実行することができます。詳細については、「Directory Service Control Center のインタフェース」および DSCC オンラインヘルプを参照してください。
ログファイルの最大サイズを指定します。
$ 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 |
このタスクは DSCC を使用して実行することができます。詳細については、「Directory Service Control Center のインタフェース」および DSCC オンラインヘルプを参照してください。
使用可能な最小ディスク容量を指定します。
$ 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 デーモンに対するアラートメッセージのログを設定する方法と、syslog アラートを受け付けるようにオペレーティングシステムを設定する方法について説明します。
このタスクは DSCC を使用して実行することができます。詳細については、「Directory Service Control Center のインタフェース」および DSCC オンラインヘルプを参照してください。
(省略可能) システムログアラートのプロパティーの現在の値を表示します。
$ 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 カテゴリに送信します。
syslogd デーモンにアラートメッセージのログを記録できるようにします。
$ dpconf set-server-prop -h host -p port syslog-alerts-enabled:true |
(省略可能) アラートメッセージを別のホスト上の syslogd デーモンに送信します。
$ dpconf set-server-prop -h host -p port syslog-alerts-host:hostname |
この節では、syslog アラートを受け付けるように SolarisTM、Linux、および HP-UX オペレーティング システムを設定する手順を示します。
適切な機能を syslog 設定ファイルに追加します。
たとえば、すべてのアラートを USER 機能を使用して格納するには、/etc/syslog.conf に次の行を追加します。
user.info /var/adm/info
ここでは、例として、/var/adm/info をメッセージの格納先になるローカルディレクトリとします。続行する前に、/var/adm/info が存在することを確認します。
syslogd デーモンを再起動します。
メッセージが syslog に記録されることを確認します。
$ logger -p user.info "Test message" $ cat /var/adm/info Jun 19 17:18:38 host user: [ID 12345 user.info] Test message
適切な機能を syslog 設定ファイルに追加します。
たとえば、すべてのアラートを USER 機能を使用して格納するには、/etc/syslog.conf に次の行を追加します。
user.info /var/adm/info
ここでは、例として、/var/adm/info をメッセージの格納先になるローカルディレクトリとします。続行する前に、/var/adm/info が存在することを確認します。
- r オプションを指定して実行するように、syslogd デーモンを設定します。
このオプションを使えば、syslogd でネットワークからの接続を受け付け可能になります。デフォルトでは、-r オプションは設定されていません。
-r オプションを設定するには、/etc/sysconfig/syslog に次の行を追加します。
SYSLOGD_OPTIONS="-m 0 -r"
/etc/sysconfig/syslog が存在しない場合は、同じ行を /etc/init.d/syslog に追加します。
syslogd デーモンを再起動します。
$ /etc/init.d/syslog stop | start
メッセージが syslog に記録されることを確認します。
$ logger -p user.info "Test message" $ cat /var/adm/info Jun 19 17:18:38 host user: [ID 12345 user.info] Test message
適切な機能を syslog 設定ファイルに追加します。
たとえば、すべてのアラートを USER 機能を使用して格納するには、/etc/syslog.conf に次の行を追加します。
user.info /var/adm/info
ここでは、例として、/var/adm/info をメッセージの格納先になるローカルディレクトリとします。続行する前に、/var/adm/info が存在することを確認します。
syslogd デーモンを再起動します。
$ /sbin/init.d/syslogd stop | start
メッセージが 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 のアクセスログに記録される方法を理解する必要があります。この節の内容を理解するには、最初に『Sun Java System Directory Server Enterprise Edition 6.3 Reference』の「Tracking Client Requests Through Directory Proxy Server and Directory Server Access Logs」をお読みください。
DSCC を使用してこのタスクを実行することはできません。次の手順に示すように、コマンド行を使用します。
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 |
その接続についての 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 のログ内で対応する接続を見つけることができ、この接続からクライアント情報を見つけることができます。
接続が最初に確立されてからログファイルのローテーションが行われている場合は、アーカイブされたログファイルと現在のアクセスログファイルを検索する必要があります。
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 ) です。
前述の手順で識別されたサーバー 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) であることがわかります。
前述の手順で見つかった接続 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 |
前述の手順で見つかった IP アドレスの所有者を確認します。
この情報により、Directory Server 上で行われた操作をだれが担当したかを、正確に証明できます。