Linuxサーバーでトラブルが起きたとき、まず確認すべきなのがログファイルです。
「サービスが起動しない」「接続できない」「予期せぬエラーが発生した」
こういった問題を調査するとき、ログは原因を特定するための重要な手がかりになります。
この記事では、Linuxで一般的なエラーログファイルの場所と、その中身を確認する基本的な方法をわかりやすく解説します。
Linuxのログシステムの基本

ログの役割と重要性
Linuxのログファイルには以下のような情報が記録されます:
- システムの起動・停止:サービスの開始や終了
- エラーや警告:問題の発生とその詳細
- セキュリティ情報:ログイン試行や権限変更
- パフォーマンス情報:リソース使用状況やレスポンス時間
ログの種類
システムログ
- カーネルメッセージ
- システムサービスの動作
- ハードウェアの状態
アプリケーションログ
- Webサーバー(Apache、Nginx)
- データベース(MySQL、PostgreSQL)
- メールサーバー(Postfix、Sendmail)
セキュリティログ
- 認証試行
- 権限昇格
- ファイアウォール活動
基本的なログディレクトリと場所
メインのログディレクトリ
Linuxではシステムのログファイルは主に**/var/log
**に保存されています。
ls -la /var/log/
この中に多くのログファイルがあり、エラーや警告の記録もここに含まれます。
ディストリビューション別の違い
ディストリビューション | 主要ログファイル | 特徴 |
---|---|---|
CentOS/RHEL/Fedora | /var/log/messages | システム全般のログ |
Ubuntu/Debian | /var/log/syslog | システム全般のログ |
openSUSE | /var/log/messages | SUSEに最適化 |
Arch Linux | journalctl | systemd中心 |
よく使う主要なログファイル

システム全般のログ
/var/log/messages(CentOS系)
多くのディストリビューション(CentOS系など)で、システム全般のログが集まるファイルです。
sudo less /var/log/messages
記録される内容:
- カーネルメッセージ
- サービスやデーモンの一般的な情報
- システムエラーや警告
実際の出力例:
Mar 15 10:30:25 server01 kernel: Out of memory: Kill process 1234 (httpd)
Mar 15 10:31:10 server01 systemd: Started Apache HTTP Server
/var/log/syslog(Ubuntu/Debian系)
Ubuntu や Debian系でよく使われるファイルです。
sudo less /var/log/syslog
システム全体のログがこちらに集約されます。
セキュリティ関連のログ
/var/log/auth.log
認証関連のログ(SSHログイン、suコマンドなど)を記録します。
sudo less /var/log/auth.log
よくある記録内容:
Mar 15 09:15:33 server01 sshd[1234]: Failed password for root from 192.168.1.100
Mar 15 09:16:02 server01 sudo: user01 : TTY=pts/0 ; PWD=/home/user01 ; USER=root ; COMMAND=/bin/ls
不正ログインの調査や権限昇格の監視に重要です。
/var/log/secure(CentOS系)
CentOS系では認証ログが/var/log/secure
に記録されます。
sudo less /var/log/secure
カーネル関連のログ
/var/log/dmesg
起動時のカーネルメッセージやハードウェア関連のログです。
sudo less /var/log/dmesg
# または
dmesg | less
ハードウェア問題の調査:
dmesg | grep -i error
dmesg | grep -i fail
/var/log/kern.log
カーネル専用のログファイル(Ubuntu/Debian系):
sudo less /var/log/kern.log
サービスごとのログファイル
Webサーバーのログ
Apache(httpd)
CentOS/RHEL系:
# エラーログ
sudo less /var/log/httpd/error_log
# アクセスログ
sudo less /var/log/httpd/access_log
Ubuntu/Debian系:
# エラーログ
sudo less /var/log/apache2/error.log
# アクセスログ
sudo less /var/log/apache2/access.log
Nginx
# エラーログ
sudo less /var/log/nginx/error.log
# アクセスログ
sudo less /var/log/nginx/access.log
設定ファイルでの場所確認:
nginx -t # 設定ファイルの確認
grep "error_log" /etc/nginx/nginx.conf
データベースのログ
MySQL/MariaDB
CentOS系:
sudo less /var/log/mysqld.log
Ubuntu系:
sudo less /var/log/mysql/error.log
設定での確認:
mysql -u root -p -e "SHOW VARIABLES LIKE 'log_error';"
PostgreSQL
# デフォルトの場所
sudo less /var/log/postgresql/postgresql-*.log
# 設定での確認
sudo -u postgres psql -c "SHOW log_directory;"
メールサーバーのログ
Postfix
sudo less /var/log/maillog # CentOS系
sudo less /var/log/mail.log # Ubuntu系
Sendmail
sudo less /var/log/maillog
その他の重要なサービス
SSH
# 接続ログの確認
sudo grep "sshd" /var/log/auth.log | tail -20
# 失敗した接続の確認
sudo grep "Failed password" /var/log/auth.log
FTP
sudo less /var/log/vsftpd.log # vsftpd
sudo less /var/log/proftpd/proftpd.log # ProFTPD
DNS(BIND)
sudo less /var/log/named.log # 設定による
journalctl -u named.service # systemd環境
ログファイルの効果的な確認方法

基本的な閲覧コマンド
lessを使った確認
sudo less /var/log/messages
lessの便利なキー:
G
:ファイルの最後に移動g
:ファイルの最初に移動/文字列
:文字列を検索n
:次の検索結果に移動
tailで最新の情報を確認
# 最後の20行を表示
sudo tail -20 /var/log/messages
# 最後の50行を表示
sudo tail -50 /var/log/syslog
エラーの絞り込み
grepでエラーのみ抽出
# エラーを含む行のみ表示
sudo grep -i error /var/log/messages
# 複数のキーワードで検索
sudo grep -E "(error|fail|warning)" /var/log/syslog
# 大文字小文字を区別しない検索
sudo grep -i "connection refused" /var/log/messages
日付で絞り込み
# 今日のログのみ
sudo grep "$(date '+%b %d')" /var/log/messages
# 特定の日付
sudo grep "Mar 15" /var/log/messages
# 時間範囲での絞り込み
sudo grep "Mar 15 1[0-2]:" /var/log/messages # 10-12時
リアルタイム監視
tail -fでリアルタイム表示
# 新しいログをリアルタイムで監視
sudo tail -f /var/log/messages
# 複数ファイルを同時監視
sudo tail -f /var/log/messages /var/log/secure
Ctrl + Cで終了できます。
特定のパターンをリアルタイム監視
# エラーのみをリアルタイム監視
sudo tail -f /var/log/messages | grep -i error
# HTTPエラーをリアルタイム監視
sudo tail -f /var/log/httpd/error_log | grep "HTTP/1.1\" [45]"
systemdのログ(journalctl)
journalctlの基本
現代のLinuxディストリビューションでは、systemdが多くのサービスを管理しています。
全ログの確認
sudo journalctl
特定のサービスのログ
# Apacheのログ
sudo journalctl -u httpd.service
# SSHのログ
sudo journalctl -u sshd.service
# 複数サービス
sudo journalctl -u httpd.service -u mysql.service
journalctlの便利なオプション
時間範囲での絞り込み
# 今日のログ
sudo journalctl --since today
# 1時間前から
sudo journalctl --since "1 hour ago"
# 特定の期間
sudo journalctl --since "2024-03-01" --until "2024-03-15"
リアルタイム監視
sudo journalctl -f
# 特定のサービスをリアルタイム監視
sudo journalctl -f -u httpd.service
優先度での絞り込み
# エラーレベル以上のみ
sudo journalctl -p err
# 警告レベル以上
sudo journalctl -p warning
ログファイルのトラブルシューティング

よくある問題と対処法
ログファイルが見つからない
問題:期待する場所にログファイルがない
対処法:
# 設定ファイルでログの場所を確認
sudo find /etc -name "*.conf" -exec grep -l "log" {} \;
# プロセスが開いているファイルを確認
sudo lsof | grep log
# サービスの設定確認
systemctl status サービス名
ログファイルが大きすぎる
問題:ログファイルが巨大で開けない
対処法:
# ファイルサイズの確認
du -h /var/log/messages
# 最新の部分だけ確認
sudo tail -1000 /var/log/messages | less
# 古い部分を削除(注意して実行)
sudo truncate -s 100M /var/log/messages
権限でアクセスできない
問題:「Permission denied」エラー
対処法:
# sudoを使用
sudo less /var/log/messages
# 一時的に権限を確認
ls -la /var/log/messages
# ユーザーをadm グループに追加(Ubuntu)
sudo usermod -a -G adm ユーザー名
ログの設定確認
rsyslogの設定
# rsyslogの設定ファイル
sudo less /etc/rsyslog.conf
sudo less /etc/rsyslog.d/*.conf
# 設定の再読み込み
sudo systemctl reload rsyslog
logrotateの設定
# ログローテーションの設定
sudo less /etc/logrotate.conf
sudo less /etc/logrotate.d/
# 手動でローテーション実行
sudo logrotate -f /etc/logrotate.conf
効率的なログ分析のコツ
複数ファイルを一括検索
# /var/log以下のすべてのファイルから検索
sudo find /var/log -type f -exec grep -l "error" {} \;
# 最近のファイルのみを対象
sudo find /var/log -name "*.log" -mtime -1 -exec grep "error" {} \;
ログの統計情報
# エラーの出現回数
sudo grep -c "error" /var/log/messages
# 最も頻繁なエラー
sudo grep "error" /var/log/messages | sort | uniq -c | sort -nr | head -10
# IPアドレス別のアクセス統計
sudo awk '{print $1}' /var/log/apache2/access.log | sort | uniq -c | sort -nr | head -10
スクリプトでの自動化
#!/bin/bash
# ログ分析スクリプトの例
LOG_FILE="/var/log/messages"
YESTERDAY=$(date -d "yesterday" '+%b %d')
echo "=== 昨日のエラー統計 ==="
sudo grep "$YESTERDAY" "$LOG_FILE" | grep -i error | wc -l
echo "=== 最も多いエラー ==="
sudo grep "$YESTERDAY" "$LOG_FILE" | grep -i error | awk '{print $5}' | sort | uniq -c | sort -nr | head -5
echo "=== 新しいサービス起動 ==="
sudo grep "$YESTERDAY" "$LOG_FILE" | grep -i "started"
まとめ
Linuxでエラーログを確認するときの基本的な場所と方法をまとめます:
システムログの基本場所
- CentOS/RHEL系:
/var/log/messages
- Ubuntu/Debian系:
/var/log/syslog
- 認証関係:
/var/log/auth.log
(Ubuntu)、/var/log/secure
(CentOS) - カーネル:
/var/log/dmesg
、dmesg
コマンド
サービス別ログ
- Apache:
/var/log/httpd/error_log
または/var/log/apache2/error.log
- Nginx:
/var/log/nginx/error.log
- MySQL:
/var/log/mysqld.log
または/var/log/mysql/error.log
効果的な確認方法
- 基本確認:
sudo less ログファイル
- エラー抽出:
sudo grep -i error ログファイル
- リアルタイム監視:
sudo tail -f ログファイル
- systemdサービス:
sudo journalctl -u サービス名
トラブルシューティングのコツ
- 複数のログファイルを組み合わせて調査
- 時間帯や日付での絞り込み
- 設定ファイルでのログ場所確認
- 権限や容量の問題に注意
これらのログを見れば、多くのトラブルの原因がわかります。ぜひトラブルシューティングの際に活用してください。
コメント