【Linux】syslogの設定方法

Linuxのsyslogの設定方法についてまとめました。

syslogとは

syslogdは、システムのログを管理する機能です。
Linux上で動作するアプリケーションの多くは、syslogdを利用してログを出力します。

  • 「/var/log」ディレクトリ
    • ログの出力先は「/var/log」ディレクトリで、複数のログファイルが格納されています。
  • 「/etc/syslog.conf」ファイル
    • ログの設定を行う。

b. ログのチェック

「/var/log」ディレクトリには、デフォルトで以下のようなログファイルがあります。

●ログが出力されるファイル

 ファイル名|内容

 /var/log/messages 一般的なシステムに関する情報
 /var/log/secure セキュリティに関する情報
 /var/log/boot.log OS起動時に関する情報
 /var/log/cron 定期的に実行される処理の結果に関する情報
 /var/log/maillog メールに関する情報
 /var/log/spooler 印刷やニュースに関する情報

これらのログを確認すれば、サーバーの状態や不正アクセスの有無、サービスの動作などを監視できます。
監視対象の情報がどのファイルに出力されるのかを確認し、必要に応じて特定の単語を抜き出すファイルを指定します。

syslogの設定(syslog.conf)

syslog.confは、2つのフィールド「selector」と「action」で構成されています。

selector action
  • selector(セレクタ)
    • 取得するログを指定
  • action(アクション)
    • 取得したログの出力先を指定

selector(セレクタ)

selectorは。「facility」と「priority」(label)を「.(ピリオド)」で接続して記載します。
特定のactionに対して複数のselectorを指定する場合、「;」(セミコロン)で接続します。

facility.priority[;facility.priority]
  • facility(ファシリティ)
    • ログの分類。syslogdを利用してログを出力しているアプリケーションは、「ログが所属するfacility」をsyslogdに通知しています。syslogdの設定を行うことで、facilityに応じて扱い方を変更できます。

facilityのオプション

オプション 概要
facility 対象のログ
auth(security) 認証サービスのメッセージ(authprivが推奨)
authpriv 認証サービス
cron cronのメッセージ
daemon デーモンのメッセージ
kern カーネルのメッセージ
lpr プリンタサービスのメッセージ
mail メールサービスのメッセージ
news ニュースサービスのメッセージ
syslog syslogのメッセージ
user ユーザープロセスのメッセージ
uucp uucp転送を行うプログラムのメッセージ
local0~7 アプリケーションに依存

「news,mail」のように、カンマ区切りで複数のfacilityを指定できます。

priority(プライオリティ)

priorityは、アプリケーションが出力するログのレベルの重要度を設定します。
通常の設定を行うと、指定したpriority以上のログが出力されます。
例えば、priorityを「warn」と指定すると、その下のレベル(err、crit、alert、emerg)の出力がされます。
つまり、重要度の低いpriorityを選択するほど、出力されるログのメッセージが多くなります。

priorityのオプション

オプション 概要
debug デバッグ情報
info 情報
notice 通知
warn 警告
err 一般的なエラー
crit 致命的なエラー
alert 緊急に対処すべきエラー
emerg システムが落ちる状態

指定したpriorityよりも重要度の低いメッセージのみを出力させたい場合、「!」を使用して以下のように記述します。

user.*;user.!info

上記の設定では、「ユーザープロセスのメッセージ」に関する全てのメッセージの「info」と「debug」のみ出力されます。
(「*」はすべてのメッセージを指す)。  

特定のpriorityのみを指定場合、「=」を使用します。例えば、以下のように記述すると「ユーザープロセスの警告メッセージ」のみ表示されます。

user.=warn

「!」を使用すると、特定のpriorityを除いたメッセージを出力できます。
例えば以下の記述だと、「ユーザープロセスの警告以外のメッセージを出力」します。

user.*;user.!=warn

「none」を使用すると、特定のfacirityの出力をしないようにできます。
例えば以下の記述だと、「ユーザープロセス以外の全てのメッセージを出力」します。

.;user.none 

action(アクション)

action(アクション)は、selectorで指定したメッセージの出力先を設定します。具体的には、

actionの設定例は以下のとおりです。

「/var/log/testlog」にログを出力

/var/log/testlog

パイプでログを別のプログラム(MyProgram)に渡します。

| /usr/local/bin/MyProgram

ローカルのコンソールへログを出力します。

/dev/console 

リモートホストのsyslogdへログを送信します。

@remotehost 

「rootユーザー」と「user01ユーザーにログを通知します。

root, user01

全てのオンラインユーザーにログを通知します。

* 

関連記事

【Linux超入門】システムの基礎とよく使うコマンドなど徹底解説
Linuxシステムの基礎とよく使うコマンドなどについて入門者向けに解説します。
【LinuC】試験対策と例題まとめ
LinuCの試験対策と例題(学習サイト)についてまとめました。
LPICの試験対策と例題まとめ
LPICの試験対策と例題(学習サイト)についてまとめました。

コメント