入門!ログ管理:シスログの設定項目

syslog_0

今回は、UNIXログシステムの大半を担うシスログを中心に、基本的なログ管理の設定項目について説明します。

運用管理で不可欠なログ管理

UNIXでは、システムが出力したメッセージやアプリケーションの動作状況などを、ログとして記録します。
記録される内容には、システムの異常を示すログ、ユーザーのログイン履歴や認証時のログ、メールシステムの送信ログ、さらにはサーバプログラムの動作ログなど、さまざまな事象のデータが含まれることから、ログはUNIXサーバのログ管理を運用するうえで欠かせない存在となっています。

シスログの設定内容を理解する

UNIXサーバ管理者は、シスログが、どういった内容を、どこに出力するのかを把握しておく必要があります。
そのために、まずシスログで設定されている内容を理解することから始めます。

シスログの仕組み

シスログ(RFC3196)は、もともとsendmail用のログ制御システムとして開発されたもので、現在広く浸透しているシスログは、BSD版がオリジナルとなっています。

まず、外部サーバからのログデータ受け取りは、514/udpのインターネットドメインソケットを使われます。
自分自身のログデータは、UNIXドメインソケットの/dev/logが使われます。
ただし、カーネルの出力メッセージには、/dev/klogが使用されることになります。
シスログは、これらすべてのログデータのやりとりを、シスログサーバプログラムのsyslogdで行い、その動作は、/etc/syslog.confの内容に基づき決定されます。

シスログの設定(syslog.confの書式)

シスログに関する設定は、/etc/syslog.confの値で決まります。
syslogdは、このsyslog.confの設定内容を読み込み、実際の運用に適用します。

基本的なsyslog.confの記述形式は、以下のとおりです。
「facility.priority  1個以上のタブ(TAB)  ログの出力先」

facility(機能)とpriority(重要度)を理解する

シスログを理解するうえで絶対に必要なのが、facilityとpriorityの設定項目です。
このfacilityとpriorityの値を調整することで、意図したログの内容を、特定の出力先に出力できるようになります。

facility(機能)の代表的な値は、以下のとおりです。
機能(項目)別に設定すべき値があらかじめ定義されています。

値……意味
auth……login、su、gettyなどの認証やセキュリティ
authpriv……authと同じだが、ログファイルの読み取り権限が特定ユーザーのみに限られている必要があります
cron……クロックデーモン(cronやatなど)
daemon……facility値に存在しない、そのほかのデーモン
ftp……ftpデーモン
kern……カーネルメッセージ
lpr……プリンタ
mail……メール
news……USERNET(NetNews)
syslog……syslogdが出力するメッセージ
user……ユーザープロセスが生成しますメッセージ(デフォルト)
uucp……UUCP
local0……拡張用のfacility。local0からlocal7までが予約されています
* すべてのfacility

priority(重要度)の代表的な値は、以下のとおりです。
上にいくほど緊急度が高くなり、条件として、設定した値またはそれよりも緊急度が高い場合に限り、ログメッセージが出力されます。

値……意味
emerg……緊急事態。通常、すべてのユーザーに一斉通知されます
alert……システムの破壊など、緊急に対処すべき状態
crit……ハードウェアのデバイスエラーなど、危険な状態
err……一般的なエラー
warning……警告レベルの場合
notice……エラーではないが、対処した方がよい状態
info……通常のメッセージ
debug……詳細メッセージ。プログラムのデバッグなどで利用します
* ……すべてのpriority
none……指定したfacilityを除外

ログの出力先
facilityとpriorityで定義したログの内容を、どこに出力するかを定義します。

出力先……意味
ファイル……指定ファイルに保存
/dev/console……コンソール画面に表示
ユーザー……ログイン中の指定ユーザーに通知
*  ……ログイン中の全ユーザーに一斉通知
| プログラム名……ログメッセージを指定したプログラムに渡す
@ログサーバ……別のログサーバにログを転送

シスログの設定例

実際にsyslog.confの代表的な設定例をいくつか紹介しておきます。

例:メールに関するすべてのログ(mail.*)は、/var/log/maillogに格納します。
mail.* /var/log/maillog

例:緊急事態のすべてのログ(*.emerg)は、ログイン中のすべてのユーザーに一斉通知します。
*.emerg *

例:認証関連のすべてのログ(auth,authpriv.*)は、ログサーバloghost.example.co.jpに転送します。
auth,authpriv.* @loghost.example.co.jp

以上、UNIXサーバのログ管理について、シスログの設定項目をみてきました。設定例を参照し、自社の設定状況の確認のうえ、ログ管理に役立ててください。