syslogを押さえよう!
syslogdの設定方法
syslodの設定ファイルは別途コマンドラインで指定されない限り/etc/syslog.confです。設定ファイルは行志向のファイルで、1行ごとに、facilityとpriorityのペアを記したselector部と、selectorにマッチしたログの出力先を記したaction部とを、スペースまたはTABで区切って記述します(図2-1)。selectorに指定されたpriority以上のpriority(selectorに指定されたpriorityより値の小さいpriority)を持つログメッセージが、そのselectorにマッチします。
selectorには、図1に示したキーワードを、facility、priorityの順にピリオド(.)で区切って記述します。また、キーワードのほかに、すべてを表すアスタリスク(*)をfacilityとpriorityの両方に、何にもマッチしないことを表すnoneをpriorityに記述することができます。例えば、「facilityがmailでpriorityがinfo以上のログメッセージ」にマッチするselectorは「mail.*」、「emerg以上のpriorityを持つすべてのログメッセージ」にマッチするselectorは「*.emerg」と書きます。
また、priorityの前にイコール(=)を置くことで、マッチするpriorityを、指定したもののみに限定することができます。同様に、エクスクラメーションマーク(!)をpriorityの前に置くと否定の意味になり、指定したpriority以外のすべてのpriorityがマッチするようになります。例えば、「priorityがdebugであるすべてのログメッセージ」にマッチするselectorは「*.=debug」と書きます。
このほか、1つのactionに対し複数のselectorをセミコロン(;)で区切って書くこともできます。また、1つのpriorityに対し複数のfacilityをカンマ(,)で区切って書くこともできます。例えば、「facilityがmail、authpriv、cron以外のinfo以上のpriorityを持つメッセージ」にマッチするselectorは「*.info;mail.none;authpriv.none;cron.none」と書きます。
actionには、selectorにマッチしたログメッセージの出力方法を記述します。出力先としては、通常ファイル、特定のコマンド、リモートのsyslogd、ローカルユーザが指定できます。
通常ファイルにログ出力する場合は、actionに「/var/log/messages」のように、ファイル名をフルパスで記述します。特定のコマンドにログメッセージを渡す場合には、「|/usr/sbin/rotatelogs」のように、actionを「パイプ(|)」で始めます。ログメッセージはパイプで特定のコマンドに渡されます。ローカルユーザにログメッセージを送る場合には、actionに「root,user1」のように、ユーザ名をカンマ(,)で区切って記述します。また、actionにアスタリスク(*)を書くと、すべてのログインユーザにログメッセージが送られます。図2-2は、actionに指定できるログ出力方法のまとめです。
facility、priorityの確認方法とsyslogdの設定確認方法
続いて、ログメッセージのfacilityとpriorityの確認方法と、syslogdの設定を変更した際の確認方法について説明します。
まず、ログメッセージのfacilityとpriorityの確認方法ですが、これは、syslogdの起動オプションに-Sを指定することで確認できます。-Sを1つ指定すると、以下のように、ログファイルにfacilityとpriorityが数値で記録されるようになります。
Nov 17 05:58:31 <5.6> localhost syslogd 1.4.1: restart.
また、-Sを2つ指定すると、以下のように、ログファイルにfacilityとpriorityが、syslog.confに指定するキーワードと同様の文字列として記録されます。
Nov 17 06:00:23 <syslog.info> localhost syslogd 1.4.1: restart.
なお、起動スクリプト(/etc/rc.d/init.d/syslog)を使ってsyslogdの起動/停止を行っている場合、syslogd の起動オプションは/etc/sysconfig/syslog中のSYSLOGD_OPTIONSにて指定されていますので、これを編集してください。
続いて、syslogdの設定確認方法ですが、これにはloggerコマンドが利用できます。local0.infoの「test」というメッセージを出力するには以下のコマンドを実行します。
$ logger -p local0.info test
ログメッセージをファイルに保存するように設定した場合には、指定したログファイルに、以下のようなメッセージが記録されていれば、正しく設定が行われたことになります。
Nov 19 08:31:28 <local0.info> localhost root: test
以上で、syslogの基本的な説明は終了です。次ページではlogrotateの説明を行います。