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

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

各OSではcronを使ってシステムログのローテーションを行っていました。では、システムログはどういう仕組みで動いているのでしょうか。今回から2回にわたり、システムログの仕組みや、どのように制御すればよいのかをまとめてみたいと思います。今回はシスログの概念と用語、設定ファイルの書き方をおさらいし、次回は実例を見ながら設定を確認していきます。
UNIX USER 2003年10月号より転載

シスログとは何か
UNIX USERシステムはさまざまなメッセージを出力します。たとえば、システム起動時に検出したハードウェア情報や、各種サーバーデーモンに関する情報などです。また、誰かがログインしようとしているけれどパスワードが間違っている場合や、どこか許可していないサイトからメールを転送するように要求してきたといった情報も、システムはメッセージとして出力します。これらはシステム管理上非常に重要なメッセージで、システム管理者たるもの、常にこういうメッセージに気を配らなくてはいけません。

 これらのメッセージには、コンソール画面に出力されるものもありますし、ログファイルに記録されるものもあります。このように、メッセージの出力先をどこにするかなどを管理しているものがシスログです。

 各種メッセージは、カーネルやサーバーデーモンが出力していますが、メッセージの出力先や出力形式は各プログラムによって個別に決められるのではなく、1つのデーモンで一元的に管理しています。こうすることで、プログラムごとの実装に惑わされることなく、システムを一貫したポリシーで管理できます。

 シスログはsyslogdデーモンと、syslogdデーモンにアクセスするsyslogライブラリで実装されています。カーネルや各種サーバープログラムは、syslogライブラリを使って、特殊なファイルである/dev/log(あるいは/var/run/log)にメッセージを出力します。そして、syslogdがそのファイルからメッセージを読み込み、設定ファイルに従って処理を行います。このときのsyslogdの動作には、
・メッセージをローカルマシン上のログファイルに書き込む
・メッセージをほかのマシンへ転送する
の2通りがあります。

 簡単に図示すると図1のようになります。

図1
図1 シスログ処理の流れ

 ただし、すべてのデーモンがシスログの仕組みを利用しているわけではありません。DNSサービスを提供するnamedやSMTPサービスを提供するSendmailなどはこの仕組みでメッセージを出力していますが、WebサーバーのApacheやWindowsにファイル/プリンタ共有を提供するSambaなどは独自の仕組みでログ出力を行っています。

●シスログで使われる用語
 シスログは、出力元となったプログラムの機能と重要度ごとにメッセージをカテゴライズして扱います。このカテゴライズには独自の用語が使われるので、とっつきにくいと思います。まずは、これらの用語を理解してしまいましょう。

ファシリティ
 ファシリティは機能という意味で、プログラムの出力メッセージがどのカテゴリに入るのかを決めるものです。たとえば、カーネルの出力メッセージには「kern」、Sendmailの出力メッセージには「mail」、ユーザープロセスの出力メッセージには「user」というファシリティが割り当てられます。

 OSによって多少の違いがありますが、用意されているファシリティを表1にまとめておきます。

表1 ファシリティ一覧

サポートするOS ファシリティ名称 利用するプログラムの種類
Solaris、FreeBSD、Linux auth 認証に関するプログラム(login、suなど)
cron cronによる処理
daemon 各種デーモンプログラム(named、gatedなど)
kern カーネルの出力
lpr プリンタデーモン(lpd)
mail メールプログラム(sendmail、postfixなど)
mark syslogdによるタイムスタンプ
news NEWSシステム(nnrpd)
syslog 自分自身に関する出力
user 一般のユーザープログラム
uucp UUCPシステム(uucico)
local0〜local7 任意のプログラムで使用可
FreeBSD、Linux authpriv より機密性の高い認証に関するプログラム(authの代替)
ftp FTPサーバー(wu-ftpd)
FreeBSD console /dev/consoleへの出力
ntp NTPシステム(ntpd)

 ところで、この表をよく見ていただければ分かるのですが、ファシリティには「daemon」や「mark」など、直感的に理解しにくい項目が含まれていて、これがシスログを使いづらいものにしているようです。また、カテゴリの用意されていないデーモンは「daemon」に属していたり、歴史的な事情も混乱の種になっているといえるでしょう(たとえばDNSサービスを提供するnamedはdaemonカテゴリに属します)。

 passwdコマンドやsuコマンドはauthを使っているのでsudoもそうだろうと考えたくなるのですが、sudoはlocal2というファシリティです。結局のところ、それぞれのプログラムでどういうファシリティにするかが埋め込んであって、その名称を使わざるを得ないのです。オンラインマニュアルに「このプログラムはこういうファシリティを使っているよ」と親切に書いてあればまだしも、そういう情報はほとんどありません(コラム参照)。

レベル(重要度レベル)
 メッセージはその重要度によってもカテゴライズされます。致命的なエラーの場合に出力するもの、デバッグ情報として出力するものなどに分けておいて、メッセージを出力するかしないかを決めるわけです。プログラムは何かのイベントがあるごとにメッセージを出力しているのですが、すべてログとして残すと膨大な量になり、重要なメッセージがその中に埋もれてしまうかもしれません。シスログでは、重要度によってログとして残す・残さないを指示できるようにしてこの問題を回避しています。

 この仕組みに用いられているのが「セベリティ(重要度)レベル」です。オンラインマニュアルなどでは、単に「レベル」と表現している場合が多いので本稿でもそれに従いますが、それが「重要度」を指していることは抑えておいてください。また、Linuxのマニュアルでは、セベリティを「プライオリティ」(優先度)と表現しています。

 たとえば、誰かがsuコマンドを使ってrootユーザーになろうとしたとき、正しくパスワードを入力して成功した場合は「notice」というレベルでメッセージが出力されます。パスワードを間違えてログインに失敗したときは「warning」レベルです(Solarisでは「crit」レベル)。シスログではnoticeよりもwarningのほうが重要度が高く設定されているので、シスログでwarningと設定していた場合、成功したログは記録されません。一方、noticeの場合は成功と失敗のどちらも記録されます。表2と図2にレベルをまとめておきます。

表2 レベル一覧

レベル 意味
none メッセージを出力しない
emerg パニック発生
alert 緊急事態発生(システム破損)
crit 危険状況(ハードウェア障害)
err 通常のエラー
warning 警告メッセージ
notice 通知メッセージ
info 一般的な情報
debug デバッグメッセージ
* すべてのメッセージを出力

図2
図2 レベルとメッセージ出力の関係(クリックで拡大)

 「すべてのメッセージ」を意味する「*」はdebugと同じになります。これとは逆に「none」を使うと、「メッセージを出力しない」としてまったくログを出力しなくなります。とりあえずここでは、低いレベルの出力はそれよりも高いレベルの出力を含むことだけ押さえておいてください。情報をとにかくたくさん取りたかったら低いレベルで、重要なメッセージだけを残したかったら高いレベルで記録するように、シスログへ指示します。

 ただし、どのレベルでどれくらいメッセージが出力されるかは試してみないと分かりません。どのプログラムでも、出力メッセージについての記述はオンラインマニュアルにほとんどありません。そのため、何かイベントを故意に発生させて低いレベルから順に指定していき、どこでメッセージが記録されなくなるかを調べていくよりほかないわけです。こういうところでも、シスログの使いづらさが出ています。

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.