21.3. ログファイルの設定

すべてのタイプのログファイルについて、ログの 作成 ポリシーおよびログ 削除 ポリシーを設定する必要があります。ログ作成ポリシーは、新規ログファイルの起動時に設定され、古いログファイルが削除される際にログ削除ポリシーが設定されます。

21.3.1. ログの有効化または無効化

アクセスおよびエラーロギングはデフォルトで有効になっています。ただし、監査および監査の失敗ロギングはデフォルトで無効になっています。
注記
アクセスログを無効にすると、ディレクトリーへの 2000 回のアクセスごとに約 1 メガバイトのログファイルが増加するため、特定のシナリオで有用です。ただし、アクセスログをオフにする前に、この情報で問題のトラブルシューティングを行うことができます。

21.3.1.1. コマンドラインを使用したロギングの有効化または無効化

dsconf config replace コマンドを使用して、Directory Server のロギング機能を制御する cn=config サブツリーのパラメーターを変更します。
  • アクセスログ: nsslapd-accesslog-logging-enabled
  • エラーログ: nsslapd-errorlog-logging-enabled
  • 監査ログ: nsslapd-auditlog-logging-enabled
  • 監査失敗ログ: nsslapd-auditfaillog-logging-enabled
詳細は、Red Hat Directory Server の設定、コマンド、およびファイルリファレンス の該当するセクションを参照してください。
たとえば、監査ロギングを有効にするには以下を入力します。
# dsconf -D "cn=Directory Manager" ldap://server.example.com config replace nsslapd-auditlog-logging-enabled=on

21.3.1.2. Web コンソールを使用したロギングの有効化または無効化

Web コンソールでロギングを有効または無効にするには、以下を実行します。
  1. Web コンソールで Directory Server ユーザーインターフェイスを開きます。「Web コンソールを使用した Directory Server へのログイン」を参照してください。
  2. インスタンスを選択します。
  3. Server Settings メニューを開き、Logging エントリーで設定するログタイプを選択します。
  4. 選択したログタイプのロギング機能を有効または無効にします。
  5. オプションで、ログローテーションポリシーまたはログ削除ポリシーなどを定義する追加のパラメーターを設定します。
  6. Save をクリックします。

21.3.2. プラグイン固有のロギングの設定

デバッグのために、プラグインが実行する操作についてアクセスおよび監査ロギングを有効にできます。詳細は、Red Hat Directory Server 設定、コマンド、およびファイルリファレンス の対応するセクションに記載されている nsslapd-logAccess および nsslapd-logAudit パラメーターの説明を参照してください。

21.3.3. 高解像度のログタイムスタンプの無効化

Directory Server は、デフォルト設定を使用して、ナノ秒の精度でエントリーをログに記録します。
[27/May/2016:17:52:04.754335904 -0500] schemareload - Schema validation passed.
[27/May/2016:17:52:04.894255328 -0500] schemareload - Schema reload task finished.
高解像度のログタイムスタンプを無効にするには、以下を実行します。
# dsconf -D "cn=Directory Manager" ldap://server.example.com config replace nsslapd-logging-hr-timestamps-enabled=off
注記
高解像度のログのタイムスタンプを無効にするオプションは非推奨で、将来のリリースで削除される予定です。
高解像度のログのタイムスタンプを無効にすると、Directory Server は秒単位の精度でしかログを記録しなくなります。
[27/May/2016:17:52:04 -0500] schemareload - Schema validation passed.
[27/May/2016:17:52:04 -0500] schemareload - Schema reload task finished.

21.3.4. ログファイルのローテーションポリシーの定義

現在のログファイルを定期的にアーカイブして新しいファイルを作成するには、ログファイルのローテーションポリシーを設定します。コマンドラインまたは Web コンソールを使用して、cn=config サブツリーの設定を更新できます。
以下の設定パラメーターを設定して、ログファイルのローテーションポリシーを制御できます。
アクセスモード
アクセスモードでは、新規に作成されたログファイルにファイル権限を設定します。
  • アクセスログ: nsslapd-accesslog-mode
  • エラーログ: nsslapd-errorlog-mode
  • 監査ログ: nsslapd-auditlog-mode
  • 監査失敗ログ: nsslapd-auditfaillog-mode
ログの最大数
保持するログファイルの最大数を設定します。ファイル数に達すると、Directory Server は新しいログファイルを作成する前に、最も古いログファイルを削除します。
  • アクセスログ: nsslapd-accesslog-maxlogsperdir
  • エラーログ: nsslapd-errorlog-maxlogsperdir
  • 監査ログ: nsslapd-auditlog-maxlogsperdir
  • 監査失敗ログ: nsslapd-auditfaillog-maxlogsperdir
各ログのファイルサイズ
ログファイルがローテーションされるまでの最大サイズをメガバイト単位で設定します。
  • アクセスログ: nsslapd-accesslog-maxlogsize
  • エラーログ: nsslapd-errorlog-maxlogsize
  • 監査ログ: nsslapd-auditlog-maxlogsize
  • 監査失敗ログ: nsslapd-auditfaillog-maxlogsize
毎回ログの作成
ログファイルの最大期間を設定します。
  • nsslapd-accesslog-logrotationtime および nsslapd-accesslog-logrotationtimeunit
  • nsslapd-errorlog-logrotationtime および nsslapd-errorlog-logrotationtimeunit
  • nsslapd-auditlog-logrotationtime および nsslapd-auditlog-logrotationtimeunit
  • nsslapd-auditfaillog-logrotationtime および nsslapd-auditfaillog-logrotationtimeunit
さらに、以下のパラメーターを使用してログファイルがローテーションされるまでの時間を設定することもできます。
  • nsslapd-accesslog-logrotationsynchour および nsslapd-accesslog-logrotationsyncmin
  • nsslapd-errorlog-logrotationsynchour および nsslapd-errorlog-logrotationsyncmin
  • nsslapd-auditlog-logrotationsynchour および nsslapd-auditlog-logrotationsyncmin
  • nsslapd-auditfaillog-logrotationsynchour および nsslapd-auditfaillog-logrotationsyncmin
詳細は、Red Hat Directory Server 設定、コマンド、およびファイルリファレンス の対応するセクションに記載されているパラメーターの説明を参照してください。
各ログファイルは、ログファイルのアーカイブまたは交換を容易にするため、サーバーのバージョン、ホスト名、およびポートを識別するタイトルで始まります。以下に例を示します。
389-Directory/1.4.0.11 B2018.197.1151
server.example.com:389 (/etc/dirsrv/slapd-instance)

21.3.4.1. コマンドラインを使用したログファイルローテーションポリシーの定義

dsconf config replace コマンドを使用して、Directory Server のロギング機能を制御するパラメーターを変更します。たとえば、エラーログの場合は、アクセスモード 600 を設定して最大 2 を維持し、ログファイルのサイズを 100 MB あるいは 5 日 ごとにローテーションするには、次のコマンドを実行します。
# dsconf -D "cn=Directory Manager" ldap://server.example.com config replace nsslapd-errorlog-mode=600 nsslapd-errorlog-maxlogsperdir=2 nsslapd-errorlog-maxlogsize=100 nsslapd-errorlog-logrotationtime=5 nsslapd-errorlog-logrotationtimeunit=day

21.3.4.2. Web コンソールを使用したログファイルローテーションポリシーの定義

21.3.5. ログファイルの削除ポリシーの定義

ディレクトリーサーバーは、削除ポリシー を設定すると、アーカイブされた古いログファイルを自動的に削除します。
注記
ログファイルのローテーションポリシーが設定されている場合に限り、ログファイルの削除ポリシーを設定できます。Directory Server は、ログローテーション時に削除ポリシーを適用します。
以下の設定パラメーターを設定して、ログファイルの削除ポリシーを制御できます。
ログサイズの合計
すべてのアクセス、エラー、監査、または監査失敗ログファイルのサイズが設定された値を越えると、最も古いログファイルが自動的に削除されます。
  • アクセスログ: nsslapd-accesslog-logmaxdiskspace
  • エラーログ: nsslapd-errorlog-logmaxdiskspace
  • 監査ログ: nsslapd-auditlog-logmaxdiskspace
  • 監査ログ: nsslapd-auditfaillog-logmaxdiskspace
空きディスク領域がより少ない
空きディスク容量がこの値に達すると、最も古いアーカイブファイルが自動的に削除されます。
  • アクセスログ: nsslapd-accesslog-logminfreediskspace
  • エラーログ: nsslapd-errorlog-logminfreediskspace
  • 監査ログ: nsslapd-auditlog-logminfreediskspace
  • 監査ログ: nsslapd-auditfaillog-logminfreediskspace
指定した時間よりもファイルが古い場合
ログファイルが設定された時間よりも古い場合は、これが自動的に削除されます。
  • アクセスログ: nsslapd-accesslog-logexpirationtime および nsslapd-accesslog-logexpirationtimeunit
  • エラーログ: nsslapd-errorlog-logminfreediskspace および nsslapd-errorlog-logexpirationtimeunit
  • 監査ログ: nsslapd-auditlog-logminfreediskspace および nsslapd-auditlog-logexpirationtimeunit
  • 監査ログ: nsslapd-auditfaillog-logminfreediskspace および nsslapd-auditfaillog-logexpirationtimeunit
詳細は、Red Hat Directory Server の設定、コマンド、およびファイルリファレンス の該当するセクションを参照してください。

21.3.5.1. コマンドラインを使用したログ削除ポリシーの設定

dsconf config replace コマンドを使用して、Directory Server のロギング機能を制御するパラメーターを変更します。たとえば、すべてのアクセスログファイルの合計サイズが 500 MB 増加した場合に、最も古いアクセスログファイルを自動的に削除するには、次のように実行します。
dsconf -D "cn=Directory Manager" ldap://server.example.com config replace nsslapd-accesslog-logmaxdiskspace=500

21.3.5.2. Web コンソールを使用したログ削除ポリシーの設定

21.3.6. 手動ログファイルローテーション

Directory Server は、3 つのすべてのログの自動ログファイルのローテーションをサポートします。ただし、自動ログファイルの作成や削除ポリシーが設定されていない場合には、ログファイルを手動でローテーションすることができます。デフォルトでは、アクセス、エラー、監査、および監査失敗のログファイルは、以下の場所にあります。
/var/log/dirsrv/slapd-instance
ログファイルを手動でローテーションするには、以下を実行します。
  1. インスタンスを停止します。
    # dsctl instance_name stop
  2. 古いログファイルが今後の参照で利用できるように、ローテーションされるログファイルを移動するか名前を変更します。
  3. インスタンスを起動します。
    # dsctl instance_name restart

21.3.7. ログレベルの設定

アクセスとエラーログはいずれも、設定されるログレベルに応じて、さまざまな情報を記録できます。
以下の設定パラメーターを設定して、以下のログレベルを制御できます。
  • アクセスログ: nsslapd-accesslog-level
  • エラーログ: nsslapd-errorlog-level
詳細情報およびサポートされるログレベルのリストは、Red Hat Directory Server の設定、コマンド、およびファイルリファレンス の該当するセクションを参照してください。
注記
デフォルトからログレベルを変更すると、ログファイルが急速に増大する可能性があります。Red Hat は、Red Hat のテクニカルサポートからの要請がない限り、デフォルト値を変更しないことを推奨します。

21.3.7.1. コマンドラインを使用したログレベルの設定

dsconf config replace コマンドを使用してログレベルを設定します。
たとえば、検索フィルターロギング (32) および設定ファイル処理 (64) を有効にするには、nsslapd-errorlog-level パラメーターを 96 (32 + 64) に設定します。
# dsconf -D "cn=Directory Manager" ldap://server.example.com config replace nsslapd-errorlog-level=96
たとえば、内部アクセス操作ロギング (4) および接続、操作、および結果のロギング (256) を有効にするには、nsslapd-accesslog-level パラメーターを 260 (4 + 256) に設定します。
# dsconf -D "cn=Directory Manager" ldap://server.example.com config replace nsslapd-accesslog-level=260

21.3.7.2. Web コンソールを使用したログレベルの設定

Web コンソールを使用してアクセスおよびエラーログレベルを設定するには、以下を実行します。
  1. Web コンソールで Directory Server ユーザーインターフェイスを開きます。「Web コンソールを使用した Directory Server へのログイン」を参照してください。
  2. インスタンスを選択します。
  3. 設定するには、以下を実行します。
    • アクセスログレベル:
      1. Server SettingsLoggingAccess Log メニューを開きます。
      2. Access Logging Levels セクションでログレベルを選択します。以下に例を示します。
    • エラーログレベル:
      1. Server SettingsLoggingError Log メニューを開きます。
      2. Error Logging Levels セクションでログレベルを選択します。以下に例を示します。
  4. Save をクリックします。

21.3.7.3. 内部操作のロギング

複数の操作により、Directory Server で追加の内部操作が発生します。たとえば、ユーザーがエントリーを削除した場合、サーバーはエントリーの検索や、ユーザーが所属していたグループの更新など、いくつかの内部処理を行います。このセクションでは、内部操作ログエントリーの形式を説明します。ログレベルの設定に関する詳細は、「ログレベルの設定」 を参照してください。
Directory Server は、内部操作ロギングの以下のような形式を提供します。
サーバー開始の内部操作
サーバーが開始した内部操作ログエントリーの例:
[14/Jan/2021:09:45:25.814158882 -0400] conn=Internal(0) op=0(0)(0) MOD dn="cn=uniqueid generator,cn=config"
[14/Jan/2021:09:45:25.822103183 -0400] conn=Internal(0) op=0(0)(0) RESULT err=0 tag=48 nentries=0 etime=0.0007968796
このタイプのログエントリーの場合:
  • conn フィールドは、Internal に続いて (0) が設定されます。
  • op フィールドは 0(0)(nesting_level) に設定されます。server-initiated 内部操作の場合、操作 ID と内部操作 ID の両方は常に 0 になります。入れ子ではないログエントリーの場合、ネストレベルは 0 になります。
クライアントで開始される内部操作
クライアントが開始した内部操作ログエントリーの例:
[14/Jan/2021:09:45:14.382918693 -0400] conn=5 (Internal) op=15(1)(0) SRCH base="cn=config,cn=userroot,cn=ldbm database,cn=plugins,cn=config" scope=1 filter="objectclass=vlvsearch" attrs=ALL
[14/Jan/2021:09:45:14.383191380 -0400] conn=5 (Internal) op=15(1)(0) RESULT err=0 tag=48 nentries=0 etime=0.0000295419
[14/Jan/2021:09:45:14.383216269 -0400] conn=5 (Internal) op=15(2)(0) SRCH base="cn=config,cn=example,cn=ldbm database,cn=plugins,cn=config" scope=1 filter="objectclass=vlvsearch" attrs=ALL
[14/Jan/2021:09:45:14.383449419 -0400] conn=5 (Internal) op=15(2)(0) RESULT err=0
このタイプのログエントリーの場合:
  • conn フィールドはクライアント接続 ID に続いて文字列 (Internal) に設定されます。
  • op フィールドで、操作 ID の後に (internal_operation_ID)(nesting_level) が含まれます。内部の操作 ID は変わることがあり、ネスト化していないログエントリーは 0 になります。
nsslapd-plugin-logging パラメーターが on に設定され、内部操作のロギングが有効になっている場合、Directory Server はプラグインの内部操作の追加をログに記録します。

例21.1 プラグインロギングが有効になっている内部操作ログエントリー

uid=user,dc=example,dc=com エントリーを削除し、Referential Integrity プラグインが example グループからこのエントリーを自動的に削除すると、サーバーログは以下のようになります。
[time_stamp] conn=2 op=37 DEL dn="uid=user,dc=example,dc=com"
[time_stamp] conn=2 (Internal) op=37(1) SRCH base="uid=user,dc=example,dc=com" scope=0 filter="(|(objectclass=*)(objectclass=ldapsubentry))" attrs=ALL
[time_stamp] conn=2 (Internal) op=37(1) RESULT err=0 tag=48 nentries=1 etime=0.0000129148
[time_stamp] conn=2 (Internal) op=37(2) SRCH base="dc=example,dc=com" scope=2 filter="(member=uid=user,dc=example,dc=com)" attrs="member"
[time_stamp] conn=2 (Internal) op=37(2) RESULT err=0 tag=48 nentries=0 etime=0.0000123162
[time_stamp] conn=2 (Internal) op=37(3) SRCH base="dc=example,dc=com" scope=2 filter="(uniquemember=uid=user,dc=example,dc=com)" attrs="uniquemember"
[time_stamp] conn=2 (Internal) op=37(3) RESULT err=0 tag=48 nentries=1 etime=0.0000128104
[time_stamp] conn=2 (Internal) op=37(4) MOD dn="cn=example,dc=example,dc=com"
[time_stamp] conn=2 (Internal) op=37(5) SRCH base="cn=example,dc=example,dc=com" scope=0 filter="(|(objectclass=*)(objectclass=ldapsubentry))" attrs=ALL
[time_stamp] conn=2 (Internal) op=37(5) RESULT err=0 tag=48 nentries=1 etime=0.0000130685
[time_stamp] conn=2 (Internal) op=37(4) RESULT err=0 tag=48 nentries=0 etime=0.0005217545
[time_stamp] conn=2 (Internal) op=37(6) SRCH base="dc=example,dc=com" scope=2 filter="(owner=uid=user,dc=example,dc=com)" attrs="owner"
[time_stamp] conn=2 (Internal) op=37(6) RESULT err=0 tag=48 nentries=0 etime=0.0000137656
[time_stamp] conn=2 (Internal) op=37(7) SRCH base="dc=example,dc=com" scope=2 filter="(seeAlso=uid=user,dc=example,dc=com)" attrs="seeAlso"
[time_stamp] conn=2 (Internal) op=37(7) RESULT err=0 tag=48 nentries=0 etime=0.0000066978
[time_stamp] conn=2 (Internal) op=37(8) SRCH base="o=example" scope=2 filter="(member=uid=user,dc=example,dc=com)" attrs="member"
[time_stamp] conn=2 (Internal) op=37(8) RESULT err=0 tag=48 nentries=0 etime=0.0000063316
[time_stamp] conn=2 (Internal) op=37(9) SRCH base="o=example" scope=2 filter="(uniquemember=uid=user,dc=example,dc=com)" attrs="uniquemember"
[time_stamp] conn=2 (Internal) op=37(9) RESULT err=0 tag=48 nentries=0 etime=0.0000048634
[time_stamp] conn=2 (Internal) op=37(10) SRCH base="o=example" scope=2 filter="(owner=uid=user,dc=example,dc=com)" attrs="owner"
[time_stamp] conn=2 (Internal) op=37(10) RESULT err=0 tag=48 nentries=0 etime=0.0000048854
[time_stamp] conn=2 (Internal) op=37(11) SRCH base="o=example" scope=2 filter="(seeAlso=uid=user,dc=example,dc=com)" attrs="seeAlso"
[time_stamp] conn=2 (Internal) op=37(11) RESULT err=0 tag=48 nentries=0 etime=0.0000046522
[time_stamp] conn=2 op=37 RESULT err=0 tag=107 nentries=0 etime=0.0010297858