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 | プリンタサービスのメッセージ |
メールサービスのメッセージ | |
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
全てのオンラインユーザーにログを通知します。
*
コメント