システムロギングとログ管理のコマンド
サーバーの上で起きたことを記録し、あとから確かめる。ログ管理の基本と主なコマンドです。

システムロギングとは、Linux OSを搭載したサーバー上で起きるさまざまな出来事を、ログファイルとして記録することです。ログファイルには、ハードウェアやソフトウェアの警告、異常、ログインなどの認証の履歴といった、さまざまなシステム情報が保存されます。
ログを残し、定期的に確認することは、システムを円滑に運用するために欠かせません。ログ管理の主な目的は、利用状況の把握、不正アクセスの発見、そして情報漏えいへの対策です。
ログはどこにあるのか
多くのディストリビューションでは、ログは/var/logディレクトリに保存されています。
| ファイル | 内容 |
|---|---|
/var/log/syslog または /var/log/messages | システム全体の一般的なログ |
/var/log/auth.log または /var/log/secure | ログインや認証に関するログ |
/var/log/wtmp | ログインとログアウトの履歴(バイナリ形式) |
/var/log/btmp | ログインに失敗した記録(バイナリ形式) |
ファイル名はディストリビューションによって異なり、Debian系ではsyslogとauth.log、Red Hat系ではmessagesとsecureが使われます。
ログを記録する仕組み
従来、ログの記録はrsyslogなどのsyslogデーモンが担ってきました。現在の多くのディストリビューションでは、systemdの一部であるsystemd-journaldもログを集めており、両方が併用されていることもあります。
ログ管理の主要なコマンド
journalctl
journalctlは、systemd-journaldが集めたログを表示するコマンドです。保存されているログを一覧で表示できるほか、条件を指定して絞り込めます。
journalctl -e # 最新のログを表示
journalctl -u ssh # 特定のサービスのログ
journalctl --since "1 hour ago" # 1時間前からのログ
journalctl -p err # エラー以上の重要度のログ
journalctl -f # 新しいログを表示し続ける
last
lastは、/var/log/wtmpをもとに、ユーザーのログインとログアウトの履歴を新しい順に表示するコマンドです。システムの再起動の記録も確認できます。
lastb
lastbは、ログインに失敗した履歴を一覧表示するコマンドです。/var/log/btmpを参照し、新しい順に表示します。管理者権限が必要です。同じユーザー名や接続元から失敗が繰り返されている場合は、不正なログインを試みられている可能性があります。
lastlog
lastlogは、ユーザーごとの最後のログイン情報を表示するコマンドです。ログイン名、接続に使った端末、最後にログインした日時を一覧で確認できます。一度もログインしていないユーザーも表示されるため、使われていないアカウントを見つけるのに役立ちます。
logrotate
logrotateは、ログファイルが大きくなりすぎないように、決まった期間やサイズごとにファイルを切り替える仕組みです。設定によって、古いファイルをgzip形式で圧縮したり、さらに古いものを削除したりできます。設定は/etc/logrotate.confと/etc/logrotate.d/以下のファイルに書きます。
/var/log/myapp/*.log {
weekly
rotate 4
compress
missingok
notifempty
}
この例では、ログを毎週切り替え、4世代分を圧縮して残します。
ログを確認する習慣を
ログは、問題が起きてから見るだけでなく、普段から定期的に確認しておくことが大切です。ログの確認やバックアップを自動で実行したいときは、タスクのスケジュールで紹介しているcronが便利です。そのほかの基本操作はLinuxの基本コマンドをご覧ください。