今回は、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サーバのログ管理について、シスログの設定項目をみてきました。設定例を参照し、自社の設定状況の確認のうえ、ログ管理に役立ててください。