ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
Linux ログ確認の全体像
Linux でトラブルシューティングする上で「ログを見る力」は基礎中の基礎です。OS 全体のログ (syslog/journal)、認証 (auth)、カーネル (dmesg)、各アプリ (nginx/mysql/php-fpm)、Docker など、ログの所在と確認コマンドを知っておくと、原因特定の速度が桁違いになります。
主要ログファイルの場所
| パス | 内容 | OS |
|---|---|---|
/var/log/syslog | システム全般 | Debian / Ubuntu |
/var/log/messages | システム全般 | RHEL / CentOS / AlmaLinux |
/var/log/auth.log | 認証 (SSH/sudo) | Debian / Ubuntu |
/var/log/secure | 認証 | RHEL系 |
/var/log/kern.log | カーネル | Debian / Ubuntu |
/var/log/dmesg | 起動メッセージ | 全般 |
/var/log/nginx/access.log | nginx アクセス | 全般 |
/var/log/nginx/error.log | nginx エラー | 全般 |
/var/log/mysql/error.log | MySQL エラー | 全般 |
/var/log/cron / cron.log | cron 実行記録 | 全般 |
tail: リアルタイム監視の定番
# 末尾 10 行
tail /var/log/syslog
# 末尾 100 行
tail -n 100 /var/log/syslog
# リアルタイム監視 (新しい行が来るたび追記表示)
tail -f /var/log/syslog
# 複数ファイル同時監視
tail -f /var/log/nginx/access.log /var/log/nginx/error.log
# ファイルが消えて作り直されても追跡 (logrotate 対応)
tail -F /var/log/syslog
# パイプで grep
tail -F /var/log/app.log | grep --line-buffered ERROR
less: 検索と巻き戻しが効く
# less でログを開く
less /var/log/syslog
# 操作キー
# /word 前方検索
# ?word 後方検索
# n 次の一致
# N 前の一致
# G 末尾へ
# g 先頭へ
# F tail -f 風 (Ctrl-C で停止)
# q 終了
# 末尾から開いて tail -f 風に
less +F /var/log/syslog
# Ctrl-C → 通常の less 操作 → F で再び tail モード
grep: 検索の基本
# 単純検索
grep ERROR /var/log/app.log
# 大文字小文字無視
grep -i error /var/log/app.log
# 行番号表示
grep -n ERROR /var/log/app.log
# 前後行も表示
grep -A 3 -B 1 ERROR /var/log/app.log # 後 3 行 + 前 1 行
grep -C 2 ERROR /var/log/app.log # 前後 2 行
# 複数パターン (拡張正規表現)
grep -E "ERROR|FATAL|CRITICAL" /var/log/app.log
# 除外
grep -v "DEBUG" /var/log/app.log
# 再帰的に
grep -r ERROR /var/log/
# 件数だけ
grep -c ERROR /var/log/app.log
# マッチしたファイル名だけ
grep -l ERROR /var/log/*.log
# 単語境界 (warn は含めず warning だけ)
grep -w warning /var/log/app.log
journalctl: systemd のログ
# 全ジャーナル
journalctl
# 末尾から表示 (-e は less の最終行へ)
journalctl -e
# サービス単位
journalctl -u nginx
journalctl -u nginx -u mysql # 複数
# リアルタイム監視
journalctl -u nginx -f
# 期間指定
journalctl --since '1 hour ago'
journalctl --since '2026-05-17 10:00' --until '2026-05-17 12:00'
journalctl --since today
journalctl --since yesterday
# 起動以降
journalctl -b # 今回起動
journalctl -b -1 # 前回起動
# 優先度
journalctl -p err # err 以上 (emerg/alert/crit/err)
journalctl -p warning..err # warning から err まで
# プロセス / ユーザ
journalctl _PID=1234
journalctl _UID=1000
# カーネルメッセージのみ
journalctl -k
圧縮ログの確認
logrotate で .1.gz / .2.gz などに圧縮されたログは z 系コマンドで展開せず読めます:
# 圧縮ログ閲覧
zcat /var/log/syslog.1.gz | less
# 圧縮ログを less で
zless /var/log/syslog.1.gz
# 圧縮ログを grep
zgrep ERROR /var/log/syslog.*.gz
# 末尾だけ
ztail -100 /var/log/syslog.1.gz # 一部ディストリのみ
# 代替: zcat ... | tail -n 100
dmesg: カーネルメッセージ
# 起動時のメッセージ + USB 接続等
dmesg
# タイムスタンプを人間可読に
dmesg -T
# リアルタイム
dmesg -w
dmesg -wH # human-readable
# レベル指定
dmesg --level=err,warn
# Out Of Memory (OOM Killer) の発動履歴
dmesg | grep -i "out of memory"
dmesg | grep -i killed
nginx / apache のログ
# アクセスログ末尾を監視
tail -f /var/log/nginx/access.log
# ステータスコード 5xx だけ
awk '$9 ~ /^5/' /var/log/nginx/access.log | tail
# URL 別のアクセス数 TOP 10
awk '{print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head
# IP 別アクセス数 TOP 10
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head
# 5xx エラーの URL 一覧
grep ' 5[0-9][0-9] ' /var/log/nginx/access.log | awk '{print $7}' | sort | uniq -c
Docker のログ
# コンテナ起動以降のログ全て
docker logs CONTAINER
# 末尾 100 行
docker logs --tail 100 CONTAINER
# リアルタイム監視
docker logs -f CONTAINER
# タイムスタンプ + 期間
docker logs --since 1h --timestamps CONTAINER
# docker compose 全サービス
docker compose logs -f
docker compose logs -f nginx app
logrotate
ログが無限に肥大化しないよう、Linux では logrotate が日次でローテーションします:
# 設定確認
cat /etc/logrotate.conf
ls /etc/logrotate.d/
# /etc/logrotate.d/nginx 例
# /var/log/nginx/*.log {
# daily
# missingok
# rotate 14
# compress
# delaycompress
# notifempty
# create 0640 www-data adm
# sharedscripts
# postrotate
# [ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`
# endscript
# }
# 手動でテスト実行 (反映せず)
sudo logrotate -d /etc/logrotate.d/nginx
# 強制実行
sudo logrotate -f /etc/logrotate.d/nginx
systemd-journald の設定
# /etc/systemd/journald.conf を編集
sudo vi /etc/systemd/journald.conf
# [Journal]
# Storage=persistent # 永続化
# SystemMaxUse=1G # 最大 1GB
# SystemMaxFileSize=100M
# MaxRetentionSec=2week # 2 週間で削除
# 反映
sudo systemctl restart systemd-journald
# ディスク使用量確認
journalctl --disk-usage
# 古いログを削除
sudo journalctl --vacuum-time=7d # 7 日より古い
sudo journalctl --vacuum-size=500M # 500MB を超える分
FAQ
Q: tail -f と journalctl -f どちらを使う?
A: systemd 管理のサービスは journalctl -u SERVICE -f 推奨 (構造化ログ、フィルタが豊富)。アプリが自前のファイルに書き出すなら tail -f。
Q: ログが英語で読めない
A: ERROR/WARN/INFO/DEBUG レベルと、Stack Trace / Exception / Connection refused 等のキーワードを覚えるだけで 8 割解読できる。
Q: 大量のログから「いつから起きているか」を見たい
A: grep ERROR app.log | head で最初のエラー、grep ERROR app.log | tail で最新。期間指定なら journalctl --since。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Laravel キャッシュクリア完全ガイド(cache:clear / config:clear / 2026-05-18 07:42:07
- プロジェクトの作成と削除 2026-05-18 07:42:07
- インストール直後にNetbeansが反応しない 2026-05-18 07:42:07
- 動画やチャンネルの検索 2026-05-18 07:42:07
- APIキー取得方法 2026-05-18 07:42:07
- チャンネル情報の取得 2026-05-18 07:42:07
- API 入門 — Web API(REST / GraphQL / gRPC / 2026-05-18 07:42:07
- インストール(eclipseプラグイン) 2026-05-18 07:42:07
- Laravel「Dotenv values containing spaces must be surrounded 2026-05-18 07:42:07
- エラー一覧 2026-05-18 07:42:07
- curl: (51) SSL: certificate subject name '~' does not match 2026-05-18 07:42:07
- インストール方法(Windows版) 2026-05-18 07:42:07
- JSONから配列に変換 2026-05-18 07:42:07
- 処理を一定時間待つ 2026-05-18 07:42:07
- A non well formed numeric value encountered 2026-05-18 07:42:07
コメントを削除してもよろしいでしょうか?