Linuxログ調査の基本コマンド集(grep, awk, tail):巨大ログと戦う技術

もっち

  • 関東大手SIer勤務
  • 10システム、仮想サーバ約200台の基幹系システムが稼働する仮想化基盤のインフラ運用リーダー

以下3点について、ブログで役立つ情報を発信

  1. インフラ技術・システム運用
  2. キャリア・マネジメント
  3. エンジニア実務・仕事術

「障害が発生した。至急ログを確認して原因を特定してくれ!」

そんな緊迫した場面で、あなたはどうやってログを調査していますか? 数GBを超えるような巨大なログファイルを前に、いつもの癖で vicat を実行しようとしているなら、少しだけ待ってください。その一打が、さらなる悲劇を招くかもしれません。

今回は、インフラエンジニアとして18年間、数多くの現場でログと格闘してきた私が、「巨大ログを安全に、かつ迅速にさばくための実践テクニック」を、愛用の基本コマンドとともに紹介します。

この記事の想定読者

  • 実務でログ調査を任され、効率的な手順を知りたい
  • ログ調査において、現場での「組み合わせ技」を知りたい

この記事を読むことでのメリット

  • 最短ルートのログ調査術が身に付く
  • 「マニュアルには載っていないプロの作法」を自分のものにできる
目次

【警告】巨大ログを 「vi」で開いてはいけない

まず、鉄則中の鉄則です。数GBクラスのログを vi などのテキストエディタで開くのは、非常に危険な行為です。

  • メモリの枯渇: エディタはファイルをメモリ上に読み込もうとします。巨大なファイルを読み込んだ瞬間、メモリを食いつぶし、最悪の場合は OOM Killer(OSがメモリ確保のためにプロセスを強制終了させる仕組み)が発動して、稼働中のサービスを停止させてしまう恐れがあります。
  • システムのフリーズ: 巨大なスワップファイルが作成され、ディスクI/Oを圧迫。操作が一切受け付けられなくなることもあります。

巨大なログは「開く」のではなく、これから紹介するコマンドを使って「必要な部分だけを抜き出す」のがプロの作法です。

【tail】「今」何が起きているかを最速で知る

ファイルがどれほど巨大でも、末尾の数十行だけを読み取る tail は非常に軽量で安全です。

  • 実践例:特定のエラーをリアルタイム監視する

エラーを色付きで強調しながら、リアルタイムに監視

tail -f /var/log/syslog | grep --line-buffered --color=auto -i "error"

tail -f は基本ですが、grep と組み合わせる際は --line-buffered を付けると、バッファ溜まりによる表示遅延を防げるのでおすすめです。

詳細リファレンス:tail (日本語)/tail (English)

【grep】膨大なノイズから「真実」を抜き出す

調査の要となるのが grep です。私が現場で助けられた3つの実践例を紹介します。

混在したログから「特定のホスト」を分離する

統合ログサーバのように、複数台のサーバからログが集約されている環境では、まず対象を絞る必要があります。

特定のホスト名 “web-server-01” のログだけを抽出して別ファイルに保存

grep "web-server-01" /var/log/remote_combined.log > web01_investigation.log

大文字・小文字を無視して「正常性」を一括確認

「エラーが出ていないこと」を確認するのも重要な仕事です。-i オプションで表記の揺れをカバーします。

Error, ERROR, Warningなどをまとめて検索

grep -Ei "error|warning|critical" /var/log/app.log

特定の「時間帯」を狙い撃つ

「14:05分頃に何が起きたか」を探す際、正規表現で時間を指定すると瞬時に絞り込めます。

14:00〜14:09のログを抽出

grep "2026-02-14 14:0" /var/log/syslog > 1400_incident.log

詳細リファレンス:grep (日本語)/grep (English)

【awk】ログを「報告書に貼れるデータ」に変える

awk は、特定の列(カラム)だけを抜き出すのに非常に便利です。

  • 実践例:日時とエラーメッセージだけを抜き出す

第1列(日付)と第5列(メッセージ)だけを表示

awk '{print $1, $5}' /var/log/auth.log

調査結果をチャットや報告書に貼る際、不要な列を awk で削っておくだけで、情報の伝わりやすさが劇的に変わります。

詳細リファレンス:awk (日本語)/awk (English)

【巨大ログ攻略】さらに一歩進んだテクニック

数GBのログを扱うなら、以下の2点も覚えておきましょう。

  1. 解凍せずに戦う (zgrep): ログローテーションで圧縮された .gz ファイルは、解凍せずに zgrep で直接中身を検索しましょう。ディスク容量と時間の節約になります。
  2. パイプの順番を意識する: grep | awk の順で使いましょう。最初に grep で行数をガッツリ減らしてから awk に渡すのが、最も処理効率が良い(CPU負荷が低い)方法です。

まとめ:コマンドは「思考の武器」

ログ調査の速さは、単なるスキルの証明ではなく、「システムを安定させたい」というエンジニアの誠実さそのものです。

最新のログ分析ツールも便利ですが、トラブルの現場で最後に頼りになるのは、やはり greptail といった基本コマンドです。これらを自在に組み合わせ、巨大なログの中から「真実」を最短ルートで掴み取りましょう。

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

もっちのアバター もっち インフラエンジニア/サービスマネージャ

・関東大手SIer勤務
・10システム、仮想サーバ約200台の基幹系システムが稼働する仮想化基盤のインフラ運用リーダー

以下3点について、ブログで役立つ情報を発信
1.インフラ技術・システム運用
2.キャリア・マネジメント
3.エンジニア実務・仕事術

目次