11.2. システムログの設定
11.2.1. ログとは
ログはコンピュータの動作状況の記録を行うもの。
Linuxの場合はsyslogと呼ばれるプログラムを使用することにより、発生する各種イベントをログファイルに出力したりコンソールに出力することが可能となる。
ログのシステムにはrsyslog, syslog, syslog-ngなどがある。
11.2.2. Syslog
syslogはsyslogdというデーモンにより実行される。
syslogは他のプログラムからのメッセージを受信して、出力元や優先度に従って分類を行って、syslogで定義した出力先に送信する。
syslog/rsyslogの設定
syslogの設定は/etc/syslog.confで設定を行う。
rsyslogはsyslogの上位バージョンで拡張機能などがあり、設定は/etc/rsyslog.confで行う。
設定ファイルの構文はファシリティ. プライオリティ アクションで記述する。 記述構文は以下の通り。
<ファシリティ>.<プライオリティ> <出力先(アクションフィールド)>ファシリティ
ファシリティはログの種別、メッセージの出力元を示す。 具体的にはカーネルや実行中のプロセスを表す。
| ファシリティ | 説明 | 
|---|---|
| auth, authpriv | 認証システム(loginなど) | 
| cron | cron | 
| daemon | 各種デーモン | 
| kern | カーネル | 
| lpr | 印刷システム | 
| メールサービス | |
| user | ユーザーアプリケーション | 
| local0-local7 | ローカルシステム | 
プライオリティ
プライオリティはメッセージの重要度を表す。
| 重要度(降順) | 説明 | 
|---|---|
| emerg | 緊急事態 | 
| alert | 早急に対処が必要 | 
| crit | 深刻(システムの処理は継続できる) | 
| err | 一般的なエラー | 
| warning | 一般的な警告 | 
| notice | 一般的な通知 | 
| info | 一般的な情報 | 
| debug | 一般的な情報 | 
| none | ログを記録しない | 
アクション(出力先)
アクションではメッセージの出力先を指定する。
| 表記 | 説明 | 
|---|---|
| ファイル名 | ファイルへの出力 | 
| ユーザー名 | ユーザーの端末への出力 | 
| @ホスト名 | リモートホストのsyslogdへの出力 | 
| /dev/console | コンソールへの出力 | 
| * | 全てのユーザーの端末への出力 | 
11.2.3. ログに関するコマンド
loggerコマンド
ログメッセージ生成するコマンド。
システムログの設定の確認などに使用する。
logger [ -p <ファシリティ>.<プライオリティ> ] [ -t タグ ] <メッセージ>syslog.infoの場合は/var/log/syslogに追記される。
systemd-catコマンド
コマンドの実行結果をジャーナルに書き込むコマンド。
/var/log/syslogに書かれる。
systemd-cat echo 'hoge'journalctlコマンド
systemd採用システムにおいて、systemdのログ(ジャーナル)を閲覧できるコマンド。
ジャーナルは/var/log/journalや/var/run/log/journalのバイナリに保存される。
journalctl| オプション | 説明 | 
|---|---|
| -f, –follow | 末尾を表示し続ける(tail -fとかとおなじ) | 
| -r, –reverse | 新しい順(デフォルトは古い順。その逆) | 
| -e, –pager-end | 末尾を表示する(ページャでさかのぼれる) | 
| -x, –catalog | 説明文付き | 
| -k, –dmesg | カーネルメッセージのみ | 
| -b, –boot | ブート時メッセージ | 
| -p, –priority=プライオリティ | 指定したプライオリティ以上 | 
| -u, –unit=ユニット名 | ユニット指定 | 
| –full | エスケープ文字を除いてプレーンテキストで出力 | 
| –no-pager | 1ページごとに表示せず、すべてのログを出力する | 
11.2.4. ログの調査
主要なログファイルは/var/log/messagesに保存されるが、ディストリビューションにより差異がある。
ログの種類
システム状態に応じて出力される各種ログは以下表のようなログファイルに出力される。
| ログファイル名 | 内容 | 
|---|---|
| /var/log/messages | 一般的なシステム関連のメッセージ | 
| /var/log/secure | セキュリティに関するメッセージ | 
| /var/log/cron | 定期的に実行される処理結果に関するメッセージ | 
| /var/log/maillog | メールに関するメッセージ | 
| /var/log/spooler | 印刷に関するメッセージ | 
| /var/log/boot.log | OS起動時に関するメッセ | 
ログの確認方法
more,tail,tail - fコマンドやgrepを組み合わせてログの調査を行う。
11.2.5. ログファイルのローテーション
ログファイルはログ出力の度に追記されていくので、ファイルサイズが大きくなる。 そのためローテーション機能によりログファイルの分割などを行う。
ローテーション機能はcronを利用してlogrotateユーティリティが定期的に実行される。
logrotateの設定は/etc/logrotate.confファイルで行う。
11.2.6. ログインユーザログの確認コマンド
lastコマンド
最近ログインしたユーザーの一覧を表示するコマンド。
参照ファイルは/var/log/wtmp。
lastwhoコマンド
ログイン中のユーザ名、ログイン端末名、ログイン日時、ログイン元IPを表示するコマンド。
参照ファイルは/var/run/utmp。
whowコマンド
whoコマンドでの情報とシステム情報も表示するコマンド。
参照ファイルは/var/run/utmp。
wlastlogコマンド
ログファイルを参照しユーザごとに最近のログイン一覧を表示するコマンド。
参照ファイルは/var/log/lastlog。
lastlog