前回の記事では、Linuxのログ収集をしないことの重大なリスクについて解説しました。
「ログの重要性は分かった。でも、具体的にどうやって見ればいいの?」
今回は、そんなあなたのための「実践編」です。Linuxサーバーに標準で備わっているログ管理の仕組みを紐解きながら、ログを確認するための必須コマンドをサンプル付きでご紹介します。
この記事を読めば、サーバーから発せられる小さなサインを読み解くための、基本的な技術が身につきます。
Linuxログ管理の心臓部:「rsyslog」を覗いてみよう
多くのLinuxディストリビューション(CentOS, Ubuntuなど)には、rsyslog
というプログラムが標準でインストールされています。これが、システム内で発生する様々なログを一手に引き受け、指定されたファイルに仕分けしてくれる、いわば「ログ管理の心臓部」です。
このrsyslog
の設定は、主に以下のファイルで行われます。
/etc/rsyslog.conf
: 全体的な基本設定が書かれたメインファイル/etc/rsyslog.d/
: アプリケーションごとの個別設定ファイルが置かれるディレクトリ
まずは、メインの設定ファイル/etc/rsyslog.conf
に何が書かれているのか、少しだけ覗いてみましょう。
rsyslog.conf
の基本ルール
設定ファイルを開くと、一見難しそうな記述が並んでいますが、基本ルールは非常にシンプルです。
[ログの種類].[ログの重要度] [どこに記録するか]
この形式で、「どんなログを、どこに出力するか」を定義しています。
- ログの種類 (ファシリティ): ログの出力元プログラムの種類です。
authpriv
(認証関連)、cron
(定時実行ジョブ)、kern
(カーネル)などがあります。 - ログの重要度 (プライオリティ): ログの緊急度です。
info
(情報)、warning
(警告)、err
(エラー)、crit
(致命的)など8段階あります。 - どこに記録するか (アクション): ログを書き出すファイルパス(例:
/var/log/secure
)を指定します。
例えば、設定ファイルによくある以下の記述を見てみましょう。
# The authpriv file has restricted access.
authpriv.* /var/log/secure
これは、「authpriv
(認証関連)から出力される、*
(すべての重要度)のログを、/var/log/secure というファイルに記録しなさい」という意味になります。この一行があるからこそ、ログインの成功や失敗といったセキュリティ上重要な記録が、/var/log/secure
に集約されるのです。
【実践】サーバーと対話する!必須ログ確認コマンド4選
設定の仕組みが分かったところで、いよいよログを実際に見ていきましょう。ここでは、サーバー管理者にとって「読み書き」と同じくらい基本となる4つのコマンドを紹介します。
1. tail
:ログをリアルタイムで追いかける
tail
コマンドは、ファイルの末尾部分を表示します。特に-f
オプションを付けると、ファイルに追記される内容をリアルタイムで表示し続けてくれるため、サーバーの「今」の動きを見るのに最適です。
リアルタイムでシステムログを監視する
このコマンドを実行したまま、別のターミナルからサーバーにログイン(SSH接続)してみてください。ログインした瞬間に、この画面に新しいログが追記されるのが分かるはずです。
Bash
tail -f /var/log/messages
Webサーバーのアクセスログを眺める (Apacheの場合)
Webサイトにアクセスがあるたびに、リアルタイムでログが流れていく様子を確認できます。
Bash
tail -f /var/log/httpd/access_log
ファイルの最後100行を表示する
-nオプションで表示する行数を指定できます。エラーが起きた直後などに、まず何が記録されたかを確認するのに便利です.
Bash
tail -n 100 /var/log/secure
2. grep
:膨大なログからお宝(情報)を探す
grep
コマンドは、指定した文字列が含まれる行だけを抽出してくれる、ログ分析の最強ツールです。エラーの原因調査や、不正アクセスの痕跡調査には欠かせません。
ログイン失敗の記録だけを抜き出す
サーバーへの不正なログイン試行がないかを確認する際の基本コマンドです。
Bash
grep "Failed password" /var/log/secure
特定のエラーメッセージを探す (PHPの場合)
アプリケーションが出力したエラーログから、「Error」という単語を含む行だけを検索します。
Bash
grep "Error" /var/log/php-fpm/www-error.log
特定のIPアドレスからのアクセスを調べる
特定のユーザーや攻撃元からのアクセス履歴を洗い出す際に使います。
Bash
grep "192.168.1.100" /var/log/httpd/access_log
3. less
:長いログファイルを快適に閲覧する
ログファイルは非常に長くなることがあります。less
コマンドを使うと、ファイル全体を一度に読み込まず、1画面ずつ表示してくれるため、巨大なファイルでも快適に閲覧できます。
システムログをじっくり読む
Bash
less /var/log/messages
less
の画面では、以下の操作が便利です。
- PageUp / PageDownキー: ページ単位で移動
- /
検索したい文字列
: ファイル内を検索(例:/error
と入力してEnter) q
キー:less
を終了する
4. パイプ |
:コマンドを繋げて最強の武器にする
Linuxの真骨頂は、パイプ|
を使ってコマンドを連結できることです。あるコマンドの実行結果を、次のコマンドの入力として渡すことができます。grep
とless
を組み合わせるのが定番です。
SSH接続に関するログだけを抽出し、快適に閲覧する
/var/log/secureからsshd(SSHのプログラム名)を含む行だけをgrepで抽出し、その結果をlessに渡して表示します。これにより、関係のないログに惑わされず、SSH関連のログだけをじっくり確認できます。
Bash
grep "sshd" /var/log/secure | less
補足:ログが無限に増えない仕組み「logrotate」
「ログをずっと保存してたら、ディスクがいっぱいになるのでは?」と心配になった方もいるかもしれません。ご安心ください。Linuxには**logrotate
**という仕組みがあり、古いログを自動的に圧縮・世代管理・削除してくれます。
例えば、/var/log
ディレクトリを見ると、messages-20250907
のような日付の付いたファイルや、secure.1.gz
のように圧縮されたファイルがあるはずです。これらがlogrotate
によって管理されている過去のログです。
この仕組みのおかげで、私たちはディスク容量を心配することなく、日々のログ分析に集中できるのです。
まとめ:ログと対話する習慣を身につけよう
今回は、Linuxのログを確認するための基本的なコマンドを紹介しました。
- まずは
tail -f
でサーバーの動きをリアルタイムに感じてみる。 - 次に
less
でログファイル全体を眺めてみる。 - そして
grep
を使って、知りたい情報だけをピンポイントで抜き出してみる。
これらのコマンドは、あなたがサーバー管理者として成長していく上で、一生付き合うことになる相棒のような存在です。最初は難しく感じるかもしれませんが、毎日少しずつ触れていくうちに、必ず手足のように使いこなせるようになります。
サーバーのログは、システムがあなたに送るメッセージです。その声に耳を傾ける習慣を、今日から始めてみませんか?