28.2. 設定ファイル(/etc/syslog.conf)の詳細

カーネルや各種サーバープログラムの出力するシスログメッセージには、ファシリティ(メッセージの種類)とプライオリティ(重要度)と呼ばれる値が設定されています。ファシリティはメッセージの種類を意味し、プライオリティはメッセージの重要度を意味します。syslogd デーモンの設定ファイルである /etc/syslog.conf には、どのファシリティで、どのプライオリティを持つメッセージをどこに出力するか、といった設定を以下の書式で記述します。

SELECTORS     ACTIONS

SELECTORSACTIONS はスペースで区切ります。SELECTORS には、ファシリティ (facility)とプライオリティ(priority)を以下のように .(ピリオド)で接続して指定します。ACTIONS には、ログの出力先を指定します。

facility.priority

SELECTORS を複数指定したい場合は以下のように ;(セミコロン)で接続して指定することができます。

facility.priority [;facility.priority ...]

syslogd は、受け取ったシスログメッセージのファシリティとプライオリティを参照し、/etc/syslog.conf ファイルの SELECTORSACTIONS に記述されている設定に従いログを処理します。

注意

/etc/syslog.conf の内容を編集した場合は、変更を反映するために syslogd の再起動が必要です。

# /etc/init.d/syslog restart

28.2.1. ファシリティとプライオリティの指定

SELECTORS で指定可能なファシリティとプライオリティには以下があります。

ファシリティの種類

表 28-2. ファシリティの種類

auth認証やセキュリティに関するメッセージ(login、su など)
authpriv認証やセキュリティに関するメッセージ(auth と同様の種類に属しますが出力は異なります)
croncron や at のログ
deamon特定のファシリティを持たない各種デーモンプログラム(named など)
kernカーネルメッセージ
lprプリンタデーモンのログ(cupsd)
mailメールサービスのログ(postfix、sendmail)
newsNEWS サービスのログ
syslogsyslogd のログ
userユーザープログラムのログ
uucpuucp 転送を行うプログラムのログ
local0〜local7任意のプログラムで利用
*すべてのログ

複数のファシリティを指定したい場合は、以下のように ,(カンマ)で続けて指定できます。

deamon,auth.warning

この例では、ファシリティが deamon あるいは auth で、プライオリティが warning 以上のメッセージとなります。プライオリティについては以降で解説します。

なお、ファシリティは通常、プログラムの作成者によって決定されていますが、OpenSSH や xinetd のように設定ファイルでファシリティを変更できるプログラムも存在します。例えば、OpenSSH のデーモン sshd が出力するシスログメッセージのファシリティは /etc/ssh/sshd_config ファイルの以下の行で指定できます。

# Logging
#obsoletes QuietMode and FascistLogging
#SyslogFacility AUTH
#LogLevel INFO

SyslogFacility がファシリティの指定です LogLevel は sshd デーモン自体が出力するログのプライオリティを指定するためのものです。sshd のファシリティはデフォルトで AUTH に設定されています。変更した場合には、先頭のコメントを外して、sshd を再起動します。

xinetd の場合は、/etc/xinetd.conf でファシリティの指定が可能です。

defaults
{
        instances               = 60
        log_type                = SYSLOG authpriv
        log_on_success          = HOST PID
        log_on_failure          = HOST
}

デフォルトでは、authpriv が設定されています。authpriv を他のファシリティに変更して xinetd を再起動すれば、xinetd のシスログメッセージは変更したファシリティで出力されます。

プライオリティの種類

表 28-3. プライオリティの種類

emerg非常に危険な状態
alertシステム破損などの緊急事態発生
critハードウェアの傷害などの危険状態
err一般的なエラーメッセージ
warning警告メッセージ
notice通知メッセージ
info一般的な情報
debugデバッグメッセージ
none出力しない
*すべてのメッセージ

通常、syslogd は指定したプライオリティ以上のログを出力します。例えば、以下のように指定すれば、ファシリティが mail で、warning より高いプライオリティ(err、crit、alert、emerg)のメッセージとなります。

mail.warning

逆に、低いプライオリティのメッセージを出力するには、以下のようにプライオリティの直前に ! を指定します。

mail.!warning

特定のプライオリティのみ指定するには =(イコール)を指定します。以下の例は、ファシリティが mail で、プライオリティが warning のメッセージとなります。

mail.=warning

また、=(イコール)の前に ! を指定した場合は、そのプライオリティ以外のメッセージとなります。例えば、以下のように指定すれば、ファシリティが mail で、プライオリティが warning 以外のメッセージとなります。

mail.!=warning

28.2.2. アクションの指定

ACTIONS には、SELECTORS で指定したメッセージをどこに出力するのかを決定します。出力先としては以下を指定できます。

ローカルファイルに保存する

ログの出力先をローカルファイルに指定するには、ファイル名をフルパスで指定します。例えば、以下のように指定すれば、ファシリティが mail のすべてのメッセージは、/var/log/messages に出力されます。

mail.*    /var/log/maillog

ティップ

Turbolinux 10 Server では、指定したファイルが存在しない場合には自動的に作成されますので、事前に用意する必要はありません。

他のホストにメッセージを転送する

以下のように @ をホスト名、あるいは IP アドレスの前に指定すると、指定したホスト(この例では、syslogserver)へメッセージを転送することができます。転送したメッセージを受け取る側のホストでの設定も必要です。メッセージの転送については、項28.4 で解説します。

mail.*    @syslogserver

ユーザーのコンソールに表示する

ユーザー名を指定すると、そのユーザーのコンソールにメッセージを出力することができます。例えば、以下のように指定すると、root と admin ユーザーのコンソールにプライオリティ emerg 以上のログを出力します。

*.emerg    root,admin

また、* を指定すると、すべてのユーザーのコンソールに出力されます。以下のように指定すれば、システムの異常を全ユーザーに通知することもできます。

*.emerg    *

ローカルのコンソール(/dev/console)に出力する

/dev/console を指定すると、現在使用しているコンソールにログを出力します。

auth.warning    /dev/console

プログラムにメッセージを渡す

|(パイプ)を使用して任意のプログラムにメッセージの内容を渡すことができます。以下のように指定すれば、ファシリティが auth でプライオリティ warning 以上のメッセージが /usr/local/bin/program に渡されます。ログを管理者宛にメールで通知するプログラムの作成などに使用できます。

auth.warning    |/usr/local/bin/program

28.2.3. Turbolinux 10 Server の /etc/syslog.conf

上記の解説を踏まえて Turbolinux 10 Server の /etc/syslog.conf の内容を確認してみます。ファイル中のコメントは消去しています。

*.info;mail.none;news.none;authpriv.none                /var/log/messages
authpriv.*                                              /var/log/secure
mail.*                                                  /var/log/maillog
*.emerg                                                 *
uucp,news.crit                                          /var/log/spooler
local7.*                                                /var/log/boot.log
news.=crit                                              /var/log/news/news.crit
news.=err                                               /var/log/news/news.err
news.notice                                             /var/log/news/news.notice

1 行目から順に以下の設定がデフォルトで記述されています。

  1. ファシリティが mail、news、authpriv 以外で、プライオリティが info 以上のログを /var/log/messages に出力

  2. ファシリティが authpriv のすべてのログを /var/log/secure に出力

  3. ファシリティが mail のすべてのログを /var/log/maillog に出力

  4. プライオリティが emerg のすべてのログを全ユーザーのコンソールに出力

  5. ファシリティが uucp、news でプライオリティが crit 以上のログを /var/log/spooler に出力

  6. ファシリティが local7 のすべてのログを /var/log/boot.log に出力

  7. ファシリティが news でプライオリティが crit のログを /var/log/news/news.crit に出力

  8. ファシリティが news でプライオリティが err のログを /var/log/news/news.err に出力

  9. ファシリティが news でプライオリティが notice 以上のログを /var/log/news/news.notice に出力