![]() |
Using SambaRobert Eckstein, David Collier-Brown, Peter Kelly 共著第一版 1999 年 11 月 1-56592-449-5, 注文番号: 4495 416 ページ, 34.95 ドル |
4.8 ロギング設定オプション
Samba が起動しているかどうかを確認したい時がある。Samba が期待する動作を行っていなかったり、全く動作していなかったりする時は特にそうであろう。何がどうなっているかをきちんと確認するための情報を入手するには、Samba のログファイルを確認する必要がある。
Samba のログファイルは簡潔にも詳細にもできる。以下は Samba のログファイルがどのようなものかの一例である:
[1999/07/21 13:23:25, 3] smbd/service.c:close_cnum(514) phoenix (192.168.220.101) closed connection to service IPC$ [1999/07/21 13:23:25, 3] smbd/connection.c:yield_connection(40) Yielding connection to IPC$ [1999/07/21 13:23:25, 3] smbd/process.c:process_smb(615) Transaction 923 of length 49 [1999/07/21 13:23:25, 3] smbd/process.c:switch_message(448) switch message SMBread (pid 467) [1999/07/21 13:23:25, 3] lib/doscalls.c:dos_ChDir(336) dos_ChDir to /home/samba [1999/07/21 13:23:25, 3] smbd/reply.c:reply_read(2199) read fnum=4207 num=2820 nread=2820 [1999/07/21 13:23:25, 3] smbd/process.c:process_smb(615) Transaction 924 of length 55 [1999/07/21 13:23:25, 3] smbd/process.c:switch_message(448) switch message SMBreadbraw (pid 467) [1999/07/21 13:23:25, 3] smbd/reply.c:reply_readbraw(2053) readbraw fnum=4207 start=130820 max=1276 min=0 nread=1276 [1999/07/21 13:23:25, 3] smbd/process.c:process_smb(615) Transaction 925 of length 55 [1999/07/21 13:23:25, 3] smbd/process.c:switch_message(448) switch message SMBreadbraw (pid 467)オプションの多くは Samba のプログラマが利用するためだけのものである。 いくつかの行の意味については、Chapter 9 Samba のトラブルシューティングで、その詳細を解説する。
Samba には、ログ情報がどこにどのように書き込まれるかを制御するためのオプションが6つ存在する。それらはグローバルオプションであり、共有の定義中には記述できない。 以下に今まで述べてきたロギングオプションと、各共有の設定を含むように更新した設定ファイルを示す。
[global] netbios name = HYDRA server string = Samba %v on (%I) workgroup = SIMPLE # Networking configuration options hosts allow = 192.168.220. 134.213.233. localhost hosts deny = 192.168.220.102 interfaces = 192.168.220.100/255.255.255.0 \ 134.213.233.110/255.255.255.0 bind interfaces only = yes # Debug logging information log level = 2 log file = /var/log/samba.log.%m max log size = 50 debug timestamp = yes [data] path = /home/samba/data browseable = yes guest ok = yes comment = Data Drive volume = Sample-Data-Drive writeable = yesここでは、ログファイルにデバッグレベル2までの情報を出力するような設定を追加した。これは比較的低いデバッグレベルである。ロギングレベルは1から10まであり、レベル1は殆んど情報を出力しないが、レベル10は大量の低レベルな情報を出力する。レベル2はサーバのディスクを無駄遣いせず、有用なデバッグのための情報を出力する。通常、Samba の開発者でなければ、ログレベルを 3 以上にすることは避けた方がよいであろう。
このファイルは
log
file
オプションの設定にしたがって /var/log ディレクトリに置かれる。log file = /usr/local/logs/samba.log.%m行で%m
を用いているように、変数を用いることで、個々のユーザやクライアント毎に異なるログファイルを指定することが可能である。ログメッセージを分割することは、特定のマシンやユーザで問題が発生していることがわかっている場合、ネットワークエラーの切り分けに非常に便利である。
ログファイルには、別の予防措置を行っている。それはログファイルが 50キロバイト以上の大きさにならないように、
max
log
size
オプションで設定していることである。ログファイルがこのサイズを超過する場合、ログの内容は、ファイル名に拡張子.oldを付加した名前のファイルに移される。 もし、 .old ファイルが既に存在していた場合、その内容は上書きされて失われる。また元々のログファイルの内容は消去され、新しいログ情報を書き込めるようになる。 これによって、Samba のログファイルでハードディスクが埋め尽くされることを防いでいる。見易さの便を考慮し、我々は
debug
timestamp
オプションによって、ログにタイムスタンプの情報を残すようにした。これはデフォルトの動作であり、ログファイルの全てのメッセージにタイプスタンプが付加されるようになる。もしこれが不要な場合は、このオプションをno
にする。4.8.1 syslog の利用
Samba 標準のログファイルに加えて、もしくはその代替としてsyslogを利用したいという場合に備えて、Samba は関連するオプションを用意している。ただし、 syslogを利用するには、まず Samba を
configure
--with-syslog
オプションでビルドしておく必要がある。 Samba の configure とコンパイルについての詳細な情報は、Chapter 2 を参照のこと。次に、 /etc/syslog.conf ファイルを Samba からのログ情報を受け入れるように設定する必要がある。既に
daemon.*
のエントリが/etc/syslog.conf
ファイルにあれば、以下のようにdaemon.* /var/log/daemon.logを追加する。これで、システムのデーモンからのログ情報が /var/log/daemon.log ファイルに書き込まれるようになる。 この設定は Samba の情報が書き込まれる場所としても利用される。さらに、設定ファイル中に以下のグローバルオプションを追加する
syslog = 2これにより、レベル1のログメッセージが syslog と Samba のログファイルの両方に送られる。( syslog 優先度との対応については後述する"syslog."セクションで記述する)。通常の
log
level
オプションを 4 に設定しているものとしよう。レベル 2, 3, 4 のログメッセージは、Samba のログファイルに送られるが、 syslogには送られない。レベル 1 のログメッセージのみが両方に送られる。もしsyslog
の値がlog
level
の値を越えていた場合、 syslogには何も書き込まれない。メッセージを syslogのみに送り、標準の Samba ログファイルに送りたくないという場合は、以下のオプションを設定ファイルに記述することができる:
syslog only = yesこの場合、
syslog
オプションで指定された番号を越えるログ情報は、log
level
オプションの場合と同様に破棄される。4.8.2 ログ設定オプション
表 4.7 に Samba で設定可能なロギング設定オプションの一覧を示す。
表 4.7: グローバル設定オプション オプション
パラメータ
機能
デフォルト
範囲
log file
文字列 (フルパス名)
Samba が利用するログファイルの名前と位置を指定する。通常の変数を利用できる。
Samba の Makefile で指定される
グローバル
log level
(debug level)
数値 (0-10)
ログファイルに書き込まれるログ/デバッグメッセージの量を指定する。0は全く出力されない。3が妥当な値であろう。
1
グローバル
max log size
数値 (KB単位のサイズ)
ログファイルの最大のサイズを指定する。ログファイルが指定された容量を超過した場合、ファイルには .bak という拡張子を付加され、以降は新しいログファイルが利用されるようにになる。
5000
グローバル
debug
timestamp (timestamp logs)
真偽値
no の場合、ログファイルにタイムスタンプが付加されない。大量のデバッグ情報が読みやすくなるであろう。
yes
グローバル
syslog
数値 (0-10)
syslogに書き込まれるメッセージのレベルを指定する。
syslog level
以下のレベルのメッセージが syslog に送られる。
1
グローバル
syslog only
真偽値
yes の場合、 syslog のみを利用し、標準の Samba ログファイルには何も書き込まれない。
no
グローバル
4.8.2.1 ログファイル
我々のサーバでは、Samba のログ情報は、Makefile によって Samba 構築時に設定された Samba のホームディレクトリの下の varサブディレクトリ内のテキストファイルに出力される。
log
file
オプションにより、ログファイル名を別の場所に設定し直すことが可能になる。例えば、Samba のログファイルの名称と位置を /usr/local/logs/samba.log に設定し直すには、以下のように指定する:[global] log file = /usr/local/logs/samba.log変数を利用することで、特定のユーザやクライアント個別のログファイルを作成することもできる。
デーモンが起動するときに、コマンドラインスイッチで
-l
を指定することで、デフォルトのログファイルの位置を強制的に変更することも可能である。しかし、これはlog
file
オプションの設定を上書きするものではない。このパラメータが指定されていた場合、-l
(もしくは Samba の Makefile で指定されたデフォルト値)で指定されたファイルには、デーモンが smb.conf ファイルを読み込んで、ログファイルの位置を認識するまでの間のログ情報が書き込まれる。4.8.2.2 log level
log
level
オプションは、ロギングされる情報量を指定する。通常これは 0 か 1 に設定される。しかし何らかの問題が発生している場合は、これを 3 に設定する場合があるだろう。 このレベルは、問題を切り分けるのに適した、有用なデバッグ情報を出力する。3 を越えるレベルは、開発者が内部のバグを追跡するために用いることを意図した情報であり、サーバの動作を無視できないほどに遅くする。そのため、このオプションを 3 より大きい値にすることは、避けるべきであろう。[global] log file = /usr/local/logs/samba.log.%m log level = 34.8.2.3 max log size
max
log
size
オプションは、Samba が保持するデバッグログファイルの最大サイズをキロバイト単位で指定する。ログファイルがこのサイズを超過すると、現在のログファイルは .old という拡張子を付加された名前に変更され、(既にその名前のファイルがあった場合は消去される) 新しいデバッグログファイルが本来の名前で新規に作成される。例えば以下のように設定する:[global] log file = /usr/local/logs/samba.log.%m max log size = 1000この設定においてログファイルのサイズが 1 メガバイトを越えた場合、Samba はログファイルの名前を samba.log.
machine-name
.old に変更し、新しいログファイルを作成する。既に .old の拡張子を持つファイルが存在していた場合、Samba はそれを削除する。デバッグ用のロギングは、(たとえ低いレベルであっても)知らないうちにディスクスペースを喰い尽くす可能性があるため、このオプションを設定ファイルに記述することを強く推奨する。このオプションを設定することで、不用心な管理者が突然ディスク容量のほとんどが 1 つの Samba ログファイルによって占められていることに気づくといった事態を回避する。4.8.2.4 debug timestamp もしくは timestamp logs
ネットワークのトラブルをデバッグしていて、Samba のログファイルの各行に付加される日付と時間の情報が邪魔だと感じる時には、
timestamp
logs
もしくはdebug
timestamp
オプション(この二つは同義である)をno
にすることで、これらの情報の出力を抑止できる。 通常の Samba のログファイルが以下のような形式で出力されているとする:12/31/98 12:03:34 hydra (192.168.220.101) connect to server network as user davecbこのオプションの値を
no
にすることで、以下のように出力が日付と時間を含まないものへと変化する:hydra (192.168.220.101) connect to server network as user davecb4.8.2.5 syslog
syslog
オプションにより、Samba がログメッセージを UNIX の syslog に送るようになる。送付される情報の種別は、このオプションの引数によって指定される。log
level
オプションのように、このオプションは0から10までの数値を指定できる。指定された数字未満のレベルのログ情報が syslog に送られる。またsyslog
レベルと等しいかそれ以上のレベルで、log level より小さいレベルの情報は、標準の Samba ログファイルに送付される。これを抑止したい場合は、syslog
only
オプションを利用すること。例えば以下の場合[global] log level = 3 syslog = 1レベル0のログ情報は、標準の Samba のログファイルと syslog に送られ、レベル1, 2, 3は、Samba 標準のログファイルにのみ送られる。3 を越えるレベルの情報はどこにも記録されない。 syslog に送られる全てのメッセージには 表 4.8のように、 syslog プロセスが認識できる優先度(priority level)が付加されることに注意。デフォルトのレベルは1である。
表 4.8: Syslog 優先度の対応表 ログレベル
syslog 優先度
0
LOG_ERR
1
LOG_WARNING
2
LOG_NOTICE
3
LOG_INFO
4 以上
LOG_DEBUG
syslogを利用するときには、Samba をコンパイルするときに
configure
を--with-syslog
オプションで実行し、 /etc/syslog.conf を適切に設定する必要がある。(本章で既述した Section 4.8.1, syslog の利用を参照のこと)4.8.2.6 syslog only
syslog
only
オプションによって、 Samba が通常のログファイルを利用せずに、syslog のみを利用するようにできる。以下のオプションを Samba 設定ファイルのグローバルセクションに指定することで、このオプションが有効になる:[global] syslog only = yes
© 1999, O'Reilly & Associates, Inc.