連載
» 2008年07月15日 00時00分 公開

新世代syslogデーモン徹底活用(1):syslogdの限界と次世代シスログデーモン (1/3)

UNIX系OSのシステムロギングをおよそ20年の長きにわたって支えてきた「syslogd」にも、限界が見えつつあります。その限界を打ち破る機能を備えた新しいシスログデーモンを紹介します。(編集部)

[Shin.鶴長,@IT]

 シスログデーモン「syslogd」は、UNIX系OSのシステムロギングをおよそ20年の長きにわたり支えてきました。しかし、増大する信頼性や安全性への要求、ログの適正保管といった要望に応えるには、syslogdでは力不足との声が高まっています。

 そんな折、システムロギングをより確実に行い、RDBMSへのデータ保存や監視システムの連携といった可用性にも優れた、「syslog-ng」や「rsyslog」が注目を集めています。この連載では、こうした次世代シスログデーモンを取り上げ、導入方法や活用方法を解説します。

システムロギングとsyslogd

 実行したイベントの履歴、システム不調や変更の記録、不正アクセスの痕跡など、シスログの用途は多義にわたります。またUNIX系OSに限らず、ほかのOSやネットワーク機器にも利用されており、システム管理全般においてシスログは欠かすことができません。

syslogサーバの活用 syslogサーバの活用

syslogdの利点

 syslogdが、シスログデーモンのデファクトスタンダードとして20年近くにわたって利用されているのには、主に次のような利点が挙げられます。

  • 複数台の機器が出力するシスログをネットワーク経由で1台のsyslogdサーバに集約できる
  • 出力されるシスログは、クリアテキストで1イベントごとに1行で出力されるため、加工が容易
  • 加工したログを集計・監視など、ほかのプログラムに役立てることができる
  • ログ出力をパイプで任意のプログラムに引き渡すことができる
  • CやJavaといった多くの開発言語でsyslogdをサポートするAPIやライブラリが提供されている

 また、設定がシンプルで、デフォルトのままでもsyslogdサーバとして十分機能することも、広く利用される原因となっています。syslogdの設定は、下のような「/etc/syslog.conf」で行います。

#kern.*                                  /dev/console
*.info;mail.none;authpriv.none;cron.none /var/log/messages
authpriv.*                               /var/log/secure
#authpriv.info                           /var/log/secure
mail.*                                   -/var/log/maillog
cron.*                                   /var/log/cron
*.emerg                                  *
uucp,news.crit                           /var/log/spooler
local7.*                                 /var/log/boot.log
/etc/syslog.confの一例(#で始まる行は無効)

 おのおの1行が設定の単位です。スペースやタブで区切られた第1フィールドで「取得するログの種類」、第2フィールドで「出力先」や「出力方法」を指定します。

 例えば3行目の設定では、認証(authpriv)サービスにかかわるログを、「/var/log/secure」ファイルに出力するよう設定しています。

 また、ログのレベルによって出力を切り替えることができます。例えば4行目のように「authpriv.info」と指定した場合、認証サービス(authpriv)にかかわるログで、レベルが「info」以上のものだけファイルに書き出します。

 ログの種別はファシリティ(facility)プライオリティ(priority)の組み合わせで指定します。「authpriv.info」では、ファシリティが「authpriv」、プライオリティが「info」になります。

 シスログでは、次表のようにファシリティとプライオリティが決められています。プライオリティは表の下にあるものほどレベルが高く、指定したプライオリティより高レベルのものすべてが出力されます。例えば「warning」を指定した場合、err/crit/alert/emergレベルのログも同時に出力されます。

ファシリティ 用途
auth 認証メッセージ
authpriv プライベート認証メッセージ
cron cronやatなどのクロックデーモンのメッセージ
daemon ほかにファシリティの指定がない
デーモンプログラム一般のメッセージ
kern カーネルのメッセージ
lpr ラインプリンタのメッセージ
mail メールサービスのメッセージ
local0からlocal7 任意の用途で利用可能
security authと同様(非推奨)
syslog syslogdの内部メッセージ
user 任意のユーザープロセスメッセージ
uucp UUCPを利用したプログラムのメッセージ
lpr ラインプリンタのメッセージ
表1 ファシリティ(facility)一覧

プライオリティ 用途
debug デバッグレベルメッセージ
info 情報メッセージ
notice 通知状態
warning(warn) 警告状態
err(error) エラー状態
crit 致命的な状態
emerg システムが利用できないような緊急事態
local0からlocal7 任意の用途で利用可能
表2 プライオリティ(priority)一覧

 主要なプロセスやデーモンについては、あらかじめ表1のようにファシリティが指定されていますが、表にないサービスやプロセスでも、ログを受け取る側と出力する側でファシリティを合わせることで、シスログの取得が可能です。

 例えば、sshdサービスでは設定ファイル「/etc/ssh/sshd_config」で、次のようにファシリティ「authpriv」が指定されており、ログを/var/log/secureファイルに出力することができます。

SyslogFacility AUTHPRIV
LogLevel INFO
/etc/ssh/sshd_configでsshdのログ出力方法を設定する
       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。