特集
2003/09/08 18:00 更新

UNIX USER2003年10月号「Pragmatic UNIX」より転載
シスログの仕組み (2/7)


UNIX USER 2003年10月号より転載

シスログの設定
 シスログの仕組みを利用するには、プログラム側でファシリティを決め、レベルに応じてメッセージを分類しておかなくてはなりません。これはプログラム開発者の仕事であり、rootといえども変更できません(パッチを当てれば別ですが)。我々が設定できるのは、メッセージを記録するレベルと出力先だけです。これをセットするためのファイルがsyslog.confです。syslog.confではセレクタとアクションを使って指定します。

●シスログの設定ファイル
 シスログの設定ファイルは/etc/syslog.confです。これについては、場所もファイル名称もOSごとの違いはありません。このファイルを見ると、1行が次のように記述されているのが分かります。


*.err;kern.debug;daemon.notice   /var/adm/messages

 左のフィールドがメッセージ出力のファシリティとレベルを決める部分で、「セレクタ」といいます。右のフィールドが該当するメッセージの出力先を指定する部分で、「アクション」といいます。セレクタとアクションの間はタブ文字で区切らなければいけませんので、注意してください。FreeBSDとLinuxではタブとスペースを利用できますが、互換性を考えるとスペースは使わないほうがいいでしょう。

●セレクタの指定
 セレクタを構成する基本要素は、


ファシリティ.レベル

です。すなわち、「daemon.warning」や「mail.info」のように指定します。「daemon.warning」と指定したときは、「daemon」ファシリティに属するプログラムが「warning」レベル以上のメッセージを出力したときに、ログを記録します。また、前述のようにレベルとして「*」や「none」が使えます。


*.warning   ← すべてのファシリティに対するwarningレベル以上のメッセージを出力
daemon.none  ← daemonファシリティに属するメッセージはすべて除外(メッセージを発行しない)


複数のファシリティはコンマを使って指定
 「*」ですべてのファシリティを指示するのではなく、たとえばdaemonとauthに関するファシリティを指定したいときには、ファシリティ部分をコンマ(,)でつなぎます。


daemon,auth.warning

 ファシリティは何個つないでも構いません。コンマで列挙した全部のファシリティに対して、後のドットに続くレベルを指定したことになります。その一方、複数レベルの指定はできません。複数指定してもいずれかが一番低いレベルになって、ほかのレベルも全部含むことになるからです。

●アクションの指定
 セレクタに関するメッセージ出力先を指定するのがアクションフィールドです。

ローカルファイルに書き込む
 メッセージ出力先をローカルファイルにするには、完全パスで指定する必要があります。たとえば、


daemon.warning    /var/log/messages

と指定した場合、daemon.warningに該当するメッセージは/var/log/messagesファイルに書き込まれます。

 また、ログ書き込み時に指定するファイルが必ず存在していなくてはなりません。シスログはファイルへの書き込みを行いますが、自動的にはファイルを生成しません。そのため、ファイルが存在しなかった場合、エラーにもならずメッセージは消えてなくなります。システム提供のファイルではなく独自のファイルに書き込むようにした場合など、ファイルを作成し忘れることがよくあるので注意してください。

 なお、Linuxではファイルが存在しないと自動的に作成してくれます。しかし、いつもそれに頼っているとほかのOSで作業しなくてはならないときに必ず忘れます。よって、Linuxでも新しいファイルに記録するときはファイルを作成する手順を怠らないようにしておきましょう。

複数ファイルに書き込む
 シスログの設定は1行に1つずつ行います。しかし、ほかの行と干渉することはありません。よって、複数のログファイルに同じメッセージを残しておきたい場合は、アクション部分を変更して何行も書き並べて構いません。たとえば、


daemon,auth.warning    /var/log/messages
kern.err               /var/log/messages
daemon.warning         /var/log/daemon.log
auth.warning           /var/log/auth.log

と指定したとき、/var/log/messagesファイルにはdaemonとauthのwarning以上と、kernのerr以上のメッセージが書き込まれます。同時に、daemonのログが/var/log/daemon.logに、authのログが/var/log/auth.logに書き込まれます。すなわち、1つのメッセージを複数のファイルに書き込むことも、複数のメッセージを1つのファイルにまとめることも可能です。

ほかのホストにメッセージを送る
 シスログのログ出力は、ローカルファイルへ書き出すだけでなく、ほかのマシンで動作するsyslogdにメッセージを渡すこともできます。この際使用するのはUDPの514番ポートです。UDPなのでネットワークの状況によってはメッセージを喪失する危険性もありますが、1つのログ管理マシンで中央管理する利便性には捨て難いものがあります。

 ほかのマシンのsyslogdにメッセージを送りたいときは、ファイルの位置にホスト名称を指定します(IPアドレスでも構いません)。その際、ホスト名称の前に「@」を付けます。


daemon,auth.warning    @centralloghost

 これで、centralloghostというホストへメッセージを渡します。また、メッセージを受け取ったホストでもさらにほかのマシンへメッセージを送ることができます(ただし、この方法には問題があるのでそこまではしないほうが無難です。詳細は次回に説明します)。メッセージを受け取ったホストでログファイルに書き込むようにしておけば、ネットワーク全体からのメッセージをまとめる「シスログ管理ホスト」が構築できるわけです。もちろん、次のようにすればローカルとリモートの両方にログを残すことも可能です。


daemon,auth.warning    @centralloghost
daemon,auth.warning    /var/log/messages

ユーザーにメッセージを送る
 ユーザーの端末画面にメッセージを出力することも可能です。この場合、アクション部分にはユーザー名称を直接指定します。


daemon,auth.warning    username

 こうしておけば、usernameが利用しているTTY端末すべてにメッセージを出力します。もちろん、ログインしていなければ出力先がないので何も出力しません。
 ユーザー名として「*」を指定すると、ログインしている全ユーザーの全TTY端末が対象になります。これを利用して、システムがパニックに陥ったという情報だけは全ユーザーに知らせたいとして、


*.emerg              *

と指定することがあります。

プログラムにメッセージを送る
 アクションフィールドに、「|」を前置してプログラム名称を完全パスで記述すれば、メッセージをプログラムに送ることができます。


daemon,auth.warning    |program


 特定イベントが発生したときに、管理者宛てにメール通知するなどの使い方が可能になるでしょう。

 なお、この指定はSolarisではできません。

●複数セレクタの同時指定
 先ほど、複数ファシリティを1つのログファイルに出力するケースとして次のような例を挙げました。


daemon,auth.warning    /var/log/messages
kern.err               /var/log/messages

 これはアクションが同じなので、セレクタをひとまとめにして1行に書くことが可能です。セレクタを複数同時に指定する場合はセミコロン(;)で区切ります。


kern.err;daemon,auth.warning    /var/log/messages

 ただ、この指定は読みやすさも考慮して使用したほうがいいでしょう。複数のセレクタやファシリティを同時に書き並べる場合、1行がかなり長くなってしまいます。エディタで編集する際にちょうど画面幅に収まる程度にして、それを超えるようなら別の行にしておくほうがいいと思います。1行に書いたからといってメリットがあるわけでもありません。

UNIX USER連載「Pragmatic UNIX」
シスログの仕組み
シスログとは何か
シスログの設定
OS固有のセレクタ指定
シスログメッセージのフォーマットと内容
設定変更手順
Column:プログラムでファシリティを設定する
今月のサマリ

関連リンク
▼UNIXUSER
▼定期購読のご案内
▼バックナンバー販売協力店
▼読者モニターレポート

UNIX USER10月号表紙
UNIX USER 10月号

第1特集:オリジナル1CD Linux講座
第2特集:今日から始めるグリッドコンピューティング
第3特集:仮想環境によるシステム構築術

付録CD-ROM 2枚組み
・オリジナル1CD Linux
・Globus Toolkit 2.4/3.0
・VisualuRuby 030817、Ruby 1.8.0 ほか

前のページ | 1 2 3 4 5 6 7 | 次のページ

[山下 哲典,UNIX USER]

Copyright © ITmedia, Inc. All Rights Reserved.