そもそも、OpenLDAPの場合、デフォルト設定のままではログが出力されない設定になっているらしい。変更すべき設定は syslogd のファシリティとデバッグレベル。
・syslogd のファシリティ
ファシリティとは、ログの分類のこと。syslogd で出力されるログには、アプリケーションが指定したファシリティとプライオリティが付いている。
ファシリティには次のようなものがある。
ファシリティ | 対象のログ |
---|---|
auth(security) | 認証サービスのメッセージ(現在はauthprivが推奨されている) |
authpriv | 認証サービス(カテゴリはauthと同じ。authとは出力結果が異なる) |
cron | cronのメッセージ |
daemon | デーモンのメッセージ |
kern | カーネルのメッセージ |
lpr | プリンタサービスのメッセージ |
メールサービスのメッセージ | |
news | ニュースサービスのメッセージ |
syslog | syslogのメッセージ |
user | ユーザープロセスのメッセージ |
uucp | uucp転送を行うプログラムのメッセージ |
local0~7 | アプリケーションに依存する |
プライオリティは、ログの重要度を表す。次のようなものがある。
プライオリティ | 説明 |
---|---|
emerg | 認証サービスのメッセージ(現在はauthprivが推奨されている) |
alert | 認証サービス(カテゴリはauthと同じ。authとは出力結果が異なる) |
crit | cronのメッセージ |
err | デーモンのメッセージ |
warning | カーネルのメッセージ |
notice | プリンタサービスのメッセージ |
info | メールサービスのメッセージ |
debug | ニュースサービスのメッセージ |
どのファシリティのどのプライオリティのログを出力するかについては、/etc/syslog.conf ファイルに設定する。なお最近の Linux では syslogd ではなくその改良版である rsyslog が使われているかもしれないので、その場合 /etc/rsyslog.conf が設定ファイルになる。
設定は
ファシリティ.プライオリティ ログ出力先
のように書く。例えばメールに関する全てのログを /var/log/maillog に出力する設定は
mail.* /var/log/maillog
という感じになる。
で、話をOpenLDAPに戻すと、実はOpenLDAPのデフォルトのファシリティは local4 になっている。この local4 に対するログ出力設定がデフォルトでは存在しないため、デフォルト設定のままではログが出力されないのだ。
これに対処するには、syslogd側の設定を変更するlogd側の設定を変更する場合、ファシリティlocal4 に対する設定を追加すればいい。次のような感じになる。
local4.* /var/log/ldap.log
これを /etc/syslog.conf (または /etc/rsyslog.conf)に追加し、syslogデーモンを再起動すればよい。
なお、slapd側がsyslogdへログを出力する際のファシリティを変更することもできる。これは slapd 起動時の -l オプションで指定できる。LOCAL0〜LOCAL7, USER, DAEMON が指定可能。
もう一つ注意すべき点は、slapd が syslog へ出力する際のプライオリティは DEBUG になる点だ。このプライオリティを変更する方法は色々調べたが見つからなかった。(僕の環境では -S INFO を指定することでプライオリティを INFO に変更できたが、誰か正式な方法知ってたら教えてください。)
slapd が出力するログのレベルは、Configuration Backend を使っている場合 cn=config エントリの olcLogLevel に格納する。ログレベルは、次のようなものがある。
ログレベル (10進数) |
ログレベル (16進数) |
ログレベル (文字列) |
ログ出力内容 |
---|---|---|---|
-1 | - | any | すべてのログを出力 |
0 | - | - | まったくログを出力しない |
1 | 0x1 | trace | 内部の関数呼び出し |
2 | 0x2 | packets | パケット操作 |
4 | 0x4 | args | 処理の詳細なトレース |
8 | 0x8 | cons | コネクション管理 |
16 | 0x10 | BER | パケット送受信 |
32 | 0x20 | filter | 検索フィルタ処理 |
64 | 0x40 | config | 設定ファイルの処理 |
128 | 0x80 | ACL | アクセス制御リストの処理 |
256 | 0x100 | stats | ステータスログ(デフォルト) |
512 | 0x200 | stats2 | ステータスログ2 |
1024 | 0x400 | shell | シェルバックエンドとの通信 |
2048 | 0x800 | parse | エントリの解析 |
16384 | 0x4000 | sync | syncrepl コンシューマ処理 |
32768 | 0x8000 | none | 設定に依存しない最低限の出力のみ |
出力したいログレベルの数値の合計、またはログレベルの文字列をカンマ区切りで列挙する。デフォルトは 256 (stats) 。設定例としては
dn: cn=config objectClass: olcGlobal cn: config olcLogLevel: trace,ACL
こんな感じ。
※この記事について指摘・意見・提案・感想などありましたら下のコメント欄にどうそ。
参考ページ:
OpenLDAP ソフトウェア 2.3 管理者ガイド: slapd の実行
OpenLDAPによるディレクトリサーバ運用(3):ものいわぬOpenLDAPサーバのログ管理 (1/3) - @IT
Linux管理者への道(3):システム管理の基礎 syslogdの設定をマスターしよう (1/3) - @IT
0 件のコメント:
コメントを投稿