前回の記事では、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の真骨頂は、パイプ|を使ってコマンドを連結できることです。あるコマンドの実行結果を、次のコマンドの入力として渡すことができます。greplessを組み合わせるのが定番です。

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のログを確認するための基本的なコマンドを紹介しました。

  1. まずはtail -fでサーバーの動きをリアルタイムに感じてみる。
  2. 次にlessでログファイル全体を眺めてみる。
  3. そしてgrepを使って、知りたい情報だけをピンポイントで抜き出してみる。

これらのコマンドは、あなたがサーバー管理者として成長していく上で、一生付き合うことになる相棒のような存在です。最初は難しく感じるかもしれませんが、毎日少しずつ触れていくうちに、必ず手足のように使いこなせるようになります。

サーバーのログは、システムがあなたに送るメッセージです。その声に耳を傾ける習慣を、今日から始めてみませんか?