syslogを押さえよう!

2008年12月9日(火)
菊地 宏一郎

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の説明を行います。

株式会社アールワークス

大学在学時に FreeBSDユーザーになり、その流れで非Windows 系の仕事を求め 2006年アールワークス入社。 現在はネットワークインテグレーション部に在籍し、日々顧客システムの問題を解決すべく奮闘中。http://www.rworks.jp/index.php

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています