【新卒研修】L30分で学ぶLinux ログの取り方「ログを読める=障害を直せる」── 原因特定の解像度が変わる30分 時短でスキル追加しましょう!_202605181015

>100 Views

May 16, 26

スライド概要

新卒研修 理系出身者向けの原理原則ベースでのご説明資料です。※スキルが高い方向け

profile-image

何卒よろしくお願い申し上げます。 一流のIT研修講師を目指し、日々研鑽を続けております。 本資料は外部公開用としてご提供するものです。

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

ダウンロード

関連スライド

各ページのテキスト
1.

CORPORATE TRAINING / 新卒未経験向け 30分で学ぶ Linux ログの取り方 「ログを読める=障害を直せる」── 原因特定の解像度が変わる30分 時短でスキル追加しましょう! journald / syslog / 認証 / カーネル / 監査 ── 全6セクション22スライド Yukiko Ishiguro 面白きこともなき世を面白く ── 高杉晋作

2.

AGENDA 02 / 22 本日のアジェンダ ログを「探す・読む・絞り込む・残す」を30分で押さえる 00 3分 ログを読める価値 なぜログ調査スキルが運用の99%か §1 4分 ログの居場所 journald / rsyslog / アプリ別 ── Linuxログの3つの世界 §2 5分 基本のログ閲覧 tail / head / less / 圧縮版 zcat / zless / zgrep §3 5分 検索・抽出・集計 grep を中核に、awk / sort / uniq でランキング集計 §4 6分 systemd journal journalctl の -u / -f / --since / -p / -b を制する §5 4分 syslog・認証・カーネル rsyslog / dmesg / last / facility・severity の体系 §6 3分 記録・ローテ・監査 tail -f / script / logrotate / auditd / トラブル4ステップ Linuxログ取り方30分講義|うさうさ先生監修

3.

INTRO 03 / 22 ログを自分で調べて読めるエンジニアが、現場で強いよ! 推測ではなく事実から原因を特定する力 ── これが運用の80% 01 ログは「機械が残した事実」 人間の記憶や推測ではない、システム自身が書き残した記録。これを読む力は、真実から逆算する力。 02 ログを読めない人は直せない 障害対応の90%は「ログをどう絞り込むか」。grep と journalctl を使いこなせるかで時間が桁違いに変わる。 03 ログは過去・現在・未来 過去のエラー追跡、現在のリアルタイム監視、未来のトラブル兆候。tail -f と監査ログで全方位を押さえる。 Linuxログ取り方30分講義|うさうさ先生監修

4.

SECTION 1 / 6 §1 ログの居場所 WHERE LOGS LIVE journald / rsyslog / アプリ別 ── Linux ログの3つの世界を地図にする 04 / 22

5.

§1 ログの居場所 05 / 22 Linuxログの3つの世界 「どこを見ればいいか」を最初に知っておくと迷わない journald rsyslog アプリ別 systemd-journald /var/log/*.log /var/log/<app>/ 現代Linuxの主役 従来からのテキストログ アプリが独自に書き出す バイナリ構造化ログ。ユニット名・優先度・PID等 facility.severityで振り分けられたテキスト形式。 Apache, Nginx, MySQL, PostgreSQL等が自前の場 のメタデータ付きで /var/log/journal/ に永続化 grep/tail などUnix標準ツールで扱える 所にローテーション付きで書き出す 閲覧: journalctl コマンド Linuxログ取り方30分講義|うさうさ先生監修 閲覧: less / tail / grep 閲覧: less / tail + zgrep

6.

§1 ログの居場所 06 / 22 主要ログファイル早見表 Debian系(Ubuntu)と RHEL系(CentOS/Rocky)でファイル名が違う点に注意 用途 汎用システム rsyslog集約の総合日誌 認証関連 ssh / sudo / PAM 認証成否 カーネル dmesg相当の永続化版 起動時ログ 起動時カーネルリングバッファ 全ログイン履歴 バイナリ/lastで読む 失敗ログイン バイナリ/lastbで読む(要root) systemd journal バイナリ構造化/journalctl メール postfix等のメール送受信 Debian / Ubuntu RHEL / CentOS / Rocky /var/log/syslog /var/log/messages /var/log/auth.log /var/log/secure /var/log/kern.log (messages に統合) /var/log/dmesg /var/log/dmesg /var/log/wtmp /var/log/wtmp /var/log/btmp /var/log/btmp /var/log/journal/ /var/log/journal/ /var/log/mail.log /var/log/maillog ▷ ローテ後は .1, .2.gz と番号付きで圧縮保管される(logrotate)。古いログは zcat / zless / zgrep で開く Linuxログ取り方30分講義|うさうさ先生監修

7.

SECTION 2 / 6 §2 基本のログ閲覧 READING LOGS tail / head / less ── まず「中身を見る」3点セット+圧縮版 07 / 22

8.

§2 基本のログ閲覧 08 / 22 見るための3点セット ─ tail / head / less tail head less テイル ヘッド レス 意味 意味 意味 末尾N行を表示/-fで追記をリアルタイ ム監視 先頭N行を表示(既定10行) ページャ(前後・検索可) 原理原則 [理系] 原理原則 [理系] 原理原則 [理系] ファイル末尾を読出し標準出力。-fは inotify でフ ファイル先頭からread(2)してN行分を標準出力 ファイル全体をメモリ展開せずシーク移動。/で ァイル変更を監視し追記分を逐次出力。-Fはロ 。設定ファイルや巨大ログの冒頭確認に。スト 前方検索、?で後方検索、n/Nで次/前、Gで末尾 ーテーション追従。ログ調査で最も叩くコマン リームの先頭だけ消費して残りを破棄する用途 、gで先頭、Fでtail -f相当の追従モードに。 ド。 にも。 $ tail -n 100 /var/log/syslog $ tail -f /var/log/nginx/error.log Linuxログ取り方30分講義|うさうさ先生監修 $ head -n 20 /etc/rsyslog.conf $ less /var/log/syslog → /ERROR → n / n / n

9.

§2 基本のログ閲覧 09 / 22 圧縮済みログをそのまま読む ─ zcat / zless / zgrep cat / tac zcat / zless zgrep キャット・タック ジーキャット・ジーレス ジーグレップ 意味 意味 意味 全文表示/逆順表示 gz圧縮ログをそのまま閲覧 gz圧縮ログ内をgrep検索 原理原則 [理系] 原理原則 [理系] 原理原則 [理系] catは順次出力、tacは末尾から先頭へ逆順出力。 gunzipの結果を標準出力にパイプする簡易ラッ gunzip+grepの組合せを内部で実行。複数日分の tacは「新しいログから時系列さかのぼる」時に パ。 logrotate で .gz 化されたローテ後ログを伸 ローテログ(*.gz)を横断検索するのに最適。-r 便利。fileコマンドでテキストかバイナリか先に 長せず読む。.bz2 は bzcat、.xz は xzcat と形式 再帰、-i大小無視、-E拡張正規 等grep相当のオプ 判定するのが安全。 別。 ションを引継ぐ。 $ cat short.log $ tac /var/log/syslog | head Linuxログ取り方30分講義|うさうさ先生監修 $ zcat syslog.2.gz | grep ERROR $ zless syslog.3.gz $ zgrep -E 'ERROR|FATAL' /var/log/syslog*

10.

SECTION 3 / 6 §3 検索・抽出・集計 FILTER & AGGREGATE grep を中核に、awk / sort / uniq を組合せて「欲しい答え」を出す 10 / 22

11.

§3 検索・抽出・集計 11 / 22 grep 完全攻略 ─ ログ調査の主役 正規表現でログから「欲しい行」を抜き出す。これが使えるかで現場での速度が変わる 主要オプション 実例で覚える -E 拡張正規表現(|や+を直接使える) -r ディレクトリを再帰的に検索 -i 大文字小文字を区別しない -v マッチしない行を抽出(反転) -n 行番号も表示 -c 件数のみ表示 -l マッチしたファイル名のみ表示 -A N / -B N / -C N 前後/前/後 N行も併せて表示 --color=auto マッチ部分を強調表示 ERROR行のみ $ grep ERROR /var/log/syslog ERROR の前後5行(文脈確認) $ grep -C5 ERROR /var/log/syslog 複数パターンOR検索 $ grep -E 'ERROR|FATAL|CRITICAL' app.log 複数ファイル再帰検索+行番号 $ grep -rn 'NullPointerException' /var/log/ 除外して集計 $ grep -v INFO app.log | wc -l 圧縮ログ含む横断検索 $ zgrep -E 'timeout' /var/log/nginx/* Linuxログ取り方30分講義|うさうさ先生監修

12.

§3 検索・抽出・集計 12 / 22 パイプで組合せる ─ ランキング集計の鉄板パターン grep|awk|sort|uniq -c|sort -rn ── これが書けると一気に「使える人」 アクセスログから IP別アクセス数 Top10 を出す $ awk '{print $1}' access.log | sort | uniq -c | sort -rn | head -10 パイプを4段階に分解 ① awk '{print $1}' 1列目(IP)だけ抜き出す ② sort 全IPを並べ替え(uniqの前処理) ③ uniq -c 重複を集約しつつ件数カウント ④ sort -rn | head 件数の多い順に並べ、上位だけ表示 ▷ この4段パイプは sed/grep にも応用できる定番。 awk の $N をどう書き換えるかで対象列が変わる Linuxログ取り方30分講義|うさうさ先生監修

13.

SECTION 4 / 6 §4 systemd journal SYSTEMD JOURNAL journalctl 一本で過去ログ全部に当たれる ── 現代 Linuxの主役 13 / 22

14.

§4 systemd journal 14 / 22 journalctl 最初に覚える4つの絞り込み 時間範囲 -u SERVICE -f --since / -until -p severity ユニット指定 フォロー 意味 意味 意味 意味 サービス別にログを絞り込む リアルタイム追従(tail -f相当) 自然言語でも指定可 warn以上だけ/err以上だけ等 原理原則 [理系] 原理原則 [理系] 原理原則 [理系] 原理原則 [理系] systemd ユニット単位で絞る。 journalファイルへの追記を検知し新規 ISO形式(2026-05-12 09:00:00)また 0=emerg, 1=alert, 2=crit, 3=err, journalctl -u nginx.service。.service は エントリを逐次表示。-u と組合せて特 は相対表現("1 hour ago", "yesterday", 4=warning, 5=notice, 6=info, 7=debug。 省略可。複数 -u を AND 結合。サービ 定サービスのリアル監視に。サービス "-3d")。トラブル発生時刻が分かって -p err は err 以上(深刻側)を表示。膨 スのstdout/stderr+sd_journal_print()出 再起動時の挙動確認に必須。 いるなら最初に絞るべき軸。 大なログから「とりあえずヤバいやつ 力を時系列表示。 $ journalctl -u nginx -u phpfpm Linuxログ取り方30分講義|うさうさ先生監修 重大度 」を抽出。 $ journalctl -u sshd -f $ journalctl --since '1 hour ago' $ journalctl --since today -until now $ journalctl -p err -b $ journalctl -p warning -since today

15.

§4 systemd journal 15 / 22 journalctl 応用 ─ 起動回別・容量管理・記録 他から journal に書き込む 応用オプション -b [N] 起動回別表示 -b 0 今回、-b -1 前回、--list-boots で一覧 --disk-usage ディスク使用量 systemd-cat シェルやスクリプトの出力をjournalに記録 journalファイルの合計容量を表示 $ systemd-cat -t mytag echo "deploy ok" --vacuum-size=500M 容量削減 500MB以下まで古い物を削除 --vacuum-time=7d 期間削減 永続化設定 (journald.conf) 7日より古い物を削除 -o json / -o cat 出力形式 再起動でもログを残す(推奨) json は機械処理、cat はメッセージのみ -_PID= / _UID= メタフィルタ プロセスID / ユーザーID で絞込 -k Storage=persistent カーネル カーネルメッセージのみ(dmesg相当) SystemMaxUse=2G journal全体の上限を2GBに MaxRetentionSec=1month 1か月以上古いログを削除 ForwardToSyslog=yes --no-pager lessページャを通さず全部表示 Linuxログ取り方30分講義|うさうさ先生監修 全件出力 rsyslog にも併送(共存運用)

16.

SECTION 5 / 6 §5 syslog・認証・カーネル SYSLOG / AUTH / KERNEL rsyslog の facility・severity の体系と、認証・カーネルログの読み方 16 / 22

17.

§5 syslog・認証・カーネル 17 / 22 rsyslog ─ facility(出所)× severity(重大度) ログを「種類×深刻度」のマトリクスで振り分ける、それがsyslog設計の核 facility(出所)── どこから出たログか severity(重大度)── どれくらいヤバいか 0 kern カーネル 0 emerg システム使用不能 1 user ユーザープロセス 1 alert 即対応必要 2 mail メール(postfix等) 2 crit 重大障害 3 daemon システムデーモン 3 err エラー 4 auth 認証(loginなど) 4 warning 警告 5 syslog syslog 自身 5 notice 通常だが注目 9 cron cron / at 6 info 通常動作 10 authpriv プライベート認証 7 debug デバッグ用 16-23 local0-7 ユーザー定義(アプリ自由割当) /etc/rsyslog.conf 例: Linuxログ取り方30分講義|うさうさ先生監修 auth,authpriv.* /var/log/auth.log ・ *.err /var/log/error.log

18.

§5 syslog・認証・カーネル 18 / 22 カーネルと認証 ─ dmesg / last / lastb / w dmesg last lastb w / who ディーメッセージ ラスト ラストビー ダブリュー・フー 意味 意味 意味 意味 カーネルリングバッファ ログイン履歴 失敗ログイン履歴 現在ログイン中ユーザー 原理原則 [理系] 原理原則 [理系] 原理原則 [理系] 原理原則 [理系] カーネルが起動時/動作中に出力したメ /var/log/wtmp のバイナリレコードを読 /var/log/btmp のバイナリレコードを読 /var/run/utmp を参照。who は単純な一 ッセージを /dev/kmsg から読出し。 出し時系列表示。ログイン/ログアウト/ 出し(要root)。SSHブルートフォース 覧、w は加えて各セッションの実行コ USB挿入・OOM Killer・I/Oエラー・ 再起動の全記録。-n NUMで最新N件、- 攻撃の痕跡確認に必須。送信元IPの分 マンド・アイドル時間・ロードアベレ SATA再接続等の事象を確認。-T可読時 x シャットダウン履歴も。-i は IPで表 布を取ると攻撃源が可視化される。 ージ・JCPU/PCPU を統合表示。 刻、-w追従、-l err でerr以上のみ。 示。 $ dmesg -T | tail $ dmesg -w # 追従 Linuxログ取り方30分講義|うさうさ先生監修 $ last -n 20 $ last -i reboot $ sudo lastb -n 30 $ sudo lastb | awk '{print $3}' | sort | uniq -c $ w $ who -a

19.

SECTION 6 / 6 §6 記録・ローテ・監査 RECORD / ROTATE / AUDIT ログを「残す・整理する・証跡として保つ」── 運用の終端を押さえる 19 / 22

20.

§6 記録・ローテ・監査 20 / 22 記録するテクニック ─ tail -f / script / history tail -f / watch script テイル・ウォッチ スクリプト 意味 意味 意味 リアルタイム監視2点セット ターミナルセッションを録画 コマンド履歴に時刻を付与 原理原則 [理系] 原理原則 [理系] 原理原則 [理系] tail -f は inotify でファイル追記を即時表示。 ptyを介してシェル入出力を全て記録ファイル(既 ~/.bashrc に HISTTIMEFORMAT="%Y-%m-%d watch -n 1 'コマンド' は1秒毎に同じコマンドを 定typescript)に保存。-tで時刻情報も別途記録( %H:%M:%S " を設定すると history 出力に時刻表 再実行し-dで差分強調。リソース定点観測の鉄板 scriptreplay で再生可)。研修・障害対応の証跡 示。トラブル発生時刻と作業時刻の照合に必須 。 に必須。 。HISTSIZE/HISTFILESIZEで保存件数。 $ tail -f /var/log/nginx/error.log $ watch -n 1 -d 'df -h' Linuxログ取り方30分講義|うさうさ先生監修 $ script -t timing.log session.log $ scriptreplay timing.log session.log history + ヒストリー HISTTIMEFORMAT $ export HISTTIMEFORMAT="%F %T " $ history | tail

21.

§6 記録・ローテ・監査 21 / 22 ローテーションと監査 ─ logrotate / auditd ログ膨張を防ぐ自動整理と、「誰が何をしたか」の証跡管理 logrotate auditd ログを定期的に圧縮・退避・削除 「誰が何をしたか」の証跡を残す 原理原則 [理系] 原理原則 [理系] /etc/cron.daily/logrotate からcron実行。/etc/logrotate.conf と Linuxカーネル内の監査サブシステム(kauditd)からのイベントを /etc/logrotate.d/*.conf を読み daily/weekly/monthly + rotate回数 + compress に従 /var/log/audit/audit.log に記録。/etc/audit/rules.d/ にルール定義(特定ファイルへ って古いログを圧縮/削除/退避。postrotateスクリプトでサービスにSIGHUP送信 のアクセス・syscall等を監視)。コンプライアンス要件(PCI-DSS、HIPAA等 し再オープンも可能。 )で実装必須。 主要ディレクティブ 関連コマンド auditctl ── ルール追加・現行確認 rotate 7 ── 7世代保持 ausearch -i ── 監査ログ検索(人間可読化) compress ── 古い物をgzip aureport -au ── 認証関連の集計レポート daily / weekly / monthly delaycompress ── 頻度 ── 1世代遅らせて圧縮 postrotate ...-dendscript ── ローテ後フック# 試走 $ logrotate /etc/logrotate.d/nginx Linuxログ取り方30分講義|うさうさ先生監修 $ ausearch -ts today -i -ui 1000

22.

22 / 22 SUMMARY & TROUBLE 4 STEPS まとめ ──「探す・読む・絞り込む・残す」 30分で押さえた要点と、明日から使えるトラブル調査4ステップ §1 居場所 §2 閲覧 §3 抽出 §4 journal §5 syslog/認証 §6 記録/監査 journald tail / less grep -A -B -C journalctl rsyslog tail -f / script rsyslog head / cat awk / sort -u -f --since dmesg / last logrotate アプリ別 zcat / zgrep uniq -c -p -b fac.severity auditd トラブル調査の4ステップ(明日から使える) 1 dmesg -T | tail ハードウェア起因(ディスク・OOM・USB)を最初に潰す 2 journalctl -p err -b 今回起動以降の重大事象を一覧化 3 journalctl -u SVC --since '1h ago' 問題サービス × 直近1時間に視野を絞る 4 grep -C5 ERROR <ログ> エラー前後のコンテキストで原因を特定 面白きこともなき世を面白く ── 高杉晋作