OS

Linuxでログを確認する方法:tail・grep・Docker Composeの基本

LinuxとDocker環境でログを確認する基本手順を、tail・grep・docker compose logsの役割と使い分けに絞って解説する。

この記事でわかること

  • ログファイルの末尾をtailで確認し、動きをtail -fで追跡する方法
  • grepでエラーや警告などの必要な行を絞り込む考え方
  • Docker Composeのサービスログを確認するときの基本コマンドと注意点
  • 調査対象・時間帯・キーワードを整理して、効率よく原因を切り分ける手順

ログ調査を始める前に確認すること

まず、調査対象がLinux上のログファイルなのか、Docker Composeで動作するサービスなのかを区別します。あわせて、発生した事象、発生時刻、関連しそうなサービス名、検索キーワードを整理しましょう。ログの保存場所や読み取り権限は環境によって異なります。実際の構成と運用ルールを確認してから操作してください。

tailでログの末尾を確認する

tailは、ログファイルの末尾を確認するときに使います。引数なしでは末尾の一定行を表示し、-nで表示行数を指定できます。

BASH
# ログの末尾を確認
tail logfile.log

# 直近100行を確認
tail -n 100 logfile.log

# 追記されるログを継続表示
tail -f logfile.log

# 期待される挙動:
# tail       : 実行時点の末尾を表示して終了
# tail -f    : 新しく追記された行を継続して表示

一度だけ内容を確認する場合は通常のtail、アプリケーションの動作中に追加されるログを追跡する場合はtail -fを使い分けます。継続表示は通常、Ctrl+Cで終了します。

grepでエラーや警告を絞り込む

grepは、指定したパターンに一致する行を検索します。大量のログからエラーや警告だけを確認したい場合に便利です。-iを付けると、大文字・小文字の違いを無視して検索できます。

BASH
# ERRORを含む行を検索
grep 'ERROR' logfile.log

# 大文字・小文字を区別せず検索
grep -i 'error' logfile.log

# 一致した行の前後2行も表示
grep -C 2 'ERROR' logfile.log

# 直近200行からerrorを検索
tail -n 200 logfile.log | grep -i 'error'

# 期待される挙動:
# 条件に一致したログ行が表示される。
# 一致しない場合は通常、何も表示されない。

検索範囲を直近のログ、対象サービス、発生時刻の周辺に絞るほど、ノイズを減らせます。前後の処理も確認したい場合はgrep -C 2のように前後の行数を指定します。

Docker Compose logsでコンテナのログを確認する

Docker Composeのプロジェクトディレクトリでdocker compose logsを実行すると、サービスのログを確認できます。特定のサービス名を指定すれば、対象を絞り込めます。

BASH
# Composeで管理するサービスのログを確認
docker compose logs

# 特定サービスのログを確認
docker compose logs SERVICE_NAME

# 特定サービスのログを継続表示
docker compose logs -f SERVICE_NAME

# 各コンテナの直近100行に絞る
docker compose logs --tail 100 SERVICE_NAME

# 期待される挙動:
# Composeで管理されている対象サービスのログが表示される。

Composeのコマンドは、通常はComposeファイルを認識できるプロジェクトディレクトリで実行します。--tailで末尾の行数を絞り、-fでログを継続表示できます。表示できる範囲や形式は、コンテナのログドライバーやサービス設定にも左右されます。

エラーや警告を効率よく切り分ける手順

  1. 直近のログを確認し、エラーや警告が発生した時刻を特定する。
  2. grepでキーワードを検索し、必要に応じて前後のログを確認する。
  3. Docker Composeでは、アプリケーション、データベース、リバースプロキシなどのサービスごとにログを調べる。
  4. ログの時刻と、利用者が認識した障害発生時刻にずれがないか確認する。
  5. 使用したコマンド、対象ファイル、検索語、確認結果を記録する。

最初からすべてのログを読むのではなく、「どのサービスの」「いつ頃の」「どのキーワードを含む」ログかを決めてから調査すると、原因を追いやすくなります。

ログ確認時の権限と情報管理の注意点

  • 読み取り権限がない場合は、権限変更の前に運用ルールや管理者の手順を確認する。
  • ログに認証情報、個人情報、トークンなどが含まれる可能性を考え、共有前にマスキングする。
  • tail -fやdocker compose logs -fの継続表示を不要なまま残さない。
  • 本番環境では、取得範囲を絞り、負荷や情報漏えいのリスクを抑える。

参考