Linuxのイベントログとは?種類・場所・確認方法をわかりやすく解説

Linux

Windowsで「イベントログ」というと、イベントビューアでシステムやアプリの動作を一括管理できますよね。

Linuxにも同じようにシステムやアプリケーションの動作履歴を残すログがあり、これを総称して「イベントログ」と呼ぶことがあります。

こんな場面で必要になります

  • サーバーでエラーが発生したとき、原因を調べたい
  • 不正アクセスがないかセキュリティチェックしたい
  • システムの動作状況を定期的に確認したい
  • アプリケーションの動作不良を調査したい
  • サーバー管理者として日常的な運用を行いたい

この記事では、Linuxにおけるイベントログの種類や保存場所、そして基本的な確認方法を初心者にもわかりやすく解説します。

これを読めば、Linuxのログ管理の基本がしっかり身につきますよ!

スポンサーリンク

Linuxのイベントログとは

イベントログの基本概念

Linuxでは、システムで起こるさまざまな出来事(イベント)を自動的にファイルに記録しています。

記録される主な情報

  • システムの起動・停止
  • ユーザーのログイン・ログアウト履歴
  • サービス(デーモン)の開始・停止・エラー
  • セキュリティ関連の出来事(認証成功・失敗)
  • ハードウェアの状態変化
  • アプリケーションからのメッセージ

これらを総称して「イベントログ」「システムログ」と呼びます。

WindowsとLinuxのログの違い

Windows のイベントログ

  • イベントビューアで一括管理
  • バイナリ形式で保存
  • 重要度レベル(情報、警告、エラー)で分類
  • GUI で簡単に閲覧・検索可能

Linux のイベントログ

  • 複数のテキストファイルに分散保存
  • 基本的にプレーンテキスト形式
  • コマンドラインツールで確認
  • より柔軟で詳細な情報を記録

主なログファイルの種類と場所

ほとんどのLinuxディストリビューションでは/var/logディレクトリにログが集まっています。

システム全般のログ

RedHat系(CentOS、RHEL、Fedora)

/var/log/messages     # システム全般の一般的なメッセージ
/var/log/secure       # 認証関連(SSH、sudo等)

Debian系(Ubuntu、Debian、Linux Mint)

/var/log/syslog       # システム全般のログ
/var/log/auth.log     # 認証関連(SSH、sudo等)

詳細なログファイル一覧

ログファイル内容重要度
/var/log/messagesシステム全般の一般的なメッセージ(RedHat系)★★★
/var/log/syslogシステム全般のログ(Debian系)★★★
/var/log/auth.log認証(SSHログイン、sudo等)Debian系★★★
/var/log/secure認証(CentOS/RHEL系)★★★
/var/log/kern.logカーネル関連のログ★★
/var/log/dmesg起動時のハードウェア初期化ログ★★
/var/log/boot.logシステム起動時のメッセージ★★
/var/log/croncron(定期実行)の動作ログ★★
/var/log/mail.logメールサーバーのログ

アプリケーション固有のログ

Webサーバー

/var/log/httpd/         # Apache(RedHat系)
/var/log/apache2/       # Apache(Debian系)
/var/log/nginx/         # Nginx

データベース

/var/log/mysql/         # MySQL
/var/log/postgresql/    # PostgreSQL

その他のサービス

/var/log/vsftpd.log     # FTPサーバー
/var/log/samba/         # Sambaファイルサーバー

イベントログを確認する基本コマンド

tail:ログの末尾を確認

基本的な使い方

# ログの最後の10行を表示
tail /var/log/syslog

# 最後の50行を表示
tail -n 50 /var/log/syslog

# リアルタイムでログを監視
tail -f /var/log/syslog

実用例

# Webサーバーのアクセスログをリアルタイム監視
tail -f /var/log/nginx/access.log

# システムログの最新100行を確認
tail -n 100 /var/log/messages

less:大量のログをページ単位で確認

# ページ単位でスクロール表示
less /var/log/auth.log

lessコマンドの操作方法

  • スペースキー:次のページ
  • b:前のページ
  • /:文字列検索
  • n:次の検索結果
  • q:終了

grep:特定の文字列を検索

基本的な検索

# SSHログイン失敗を検索
grep "Failed password" /var/log/auth.log

# 特定のIPアドレスからのアクセスを検索
grep "192.168.1.100" /var/log/syslog

# エラーメッセージを検索
grep -i "error" /var/log/messages

便利なgrepオプション

  • -i:大文字小文字を区別しない
  • -n:行番号を表示
  • -A 3:マッチした行の後3行も表示
  • -B 3:マッチした行の前3行も表示
  • -C 3:マッチした行の前後3行を表示

head:ログの先頭を確認

# ログの最初の10行を表示
head /var/log/syslog

# 最初の20行を表示
head -n 20 /var/log/messages

journalctl:systemd環境での統合ログ管理

journalctlの基本

最近のLinux(systemd採用のディストリビューション)では、journalctlで統合ログ(バイナリログ)を確認できます。

基本的な使い方

# 全てのログを表示
journalctl

# ログの末尾を表示して詳細情報付き
journalctl -xe

# リアルタイムでログを監視
journalctl -f

オプションの説明

  • -x:詳細な説明を追加
  • -e:ログの末尾にジャンプ
  • -f:リアルタイム監視(tail -f と同様)

サービス単位でのログ確認

特定のサービスのログを確認

# SSHサービスのログ
journalctl -u sshd

# Apacheのログ
journalctl -u apache2

# systemdのログ
journalctl -u systemd

時間範囲を指定したログ確認

今日のログのみ

journalctl --since today

過去1時間のログ

journalctl --since "1 hour ago"

特定の期間のログ

journalctl --since "2023-12-01" --until "2023-12-31"

優先度による絞り込み

エラーレベル以上のみ表示

journalctl -p err

優先度レベル

  • emerg:緊急(0)
  • alert:警告(1)
  • crit:重要(2)
  • err:エラー(3)
  • warning:警告(4)
  • notice:通知(5)
  • info:情報(6)
  • debug:デバッグ(7)

実用的なログ分析例

セキュリティ関連の確認

SSH不正アクセスの調査

# ログイン失敗の確認
grep "Failed password" /var/log/auth.log

# 成功したログインの確認
grep "Accepted password" /var/log/auth.log

# IPアドレス別の失敗回数をカウント
grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr

sudo使用履歴の確認

grep "sudo" /var/log/auth.log

システム状態の確認

システム起動・停止の履歴

# 起動ログの確認
journalctl -b

# 前回の起動ログ
journalctl -b -1

# 再起動の履歴
grep "reboot" /var/log/syslog

サービスの状態確認

# Webサーバーの起動状況
journalctl -u apache2 | grep "Started\|Stopped"

# エラーのみ抽出
journalctl -u apache2 -p err

ディスク容量関連の確認

ディスク容量警告の確認

grep -i "disk\|space" /var/log/syslog

ファイルシステムエラーの確認

grep -i "filesystem\|fsck" /var/log/messages

ログファイルのローテーション

logrotateの基本

Linuxではlogrotateというツールで古いログファイルを自動的に管理します。

設定ファイルの場所

/etc/logrotate.conf          # メイン設定
/etc/logrotate.d/            # 個別サービスの設定

ローテーションの確認

# 現在のローテーション状況
ls -la /var/log/

ローテーションされたログの確認

圧縮されたログの確認

# 圧縮ログの中身を確認
zcat /var/log/syslog.2.gz | head

# 圧縮ログから検索
zgrep "error" /var/log/syslog.*.gz

ログ監視のベストプラクティス

定期的な確認項目

毎日確認すべきログ

  • 認証ログ(不正アクセスの有無)
  • システムエラーログ
  • ディスク容量関連の警告

週次で確認すべきログ

  • サービスの再起動履歴
  • パフォーマンス関連の警告
  • セキュリティアップデートのログ

自動監視の設定

簡単な監視スクリプト例

#!/bin/bash
# 毎日実行する簡単なログチェック

echo "=== SSH失敗ログイン確認 ==="
grep "Failed password" /var/log/auth.log | tail -10

echo "=== システムエラー確認 ==="
grep -i "error" /var/log/syslog | tail -10

echo "=== ディスク容量警告確認 ==="
grep -i "disk.*full\|no space" /var/log/syslog | tail -5

トラブルシューティング

よくある問題と対処法

Q:ログファイルが見つからない

A:ディストリビューションによってファイル名が異なります

# ログディレクトリの内容を確認
ls -la /var/log/

# systemdログを確認
journalctl --list-boots

Q:ログが大きすぎて確認できない

A:期間や条件を絞り込んで確認してください

# 今日のログのみ
journalctl --since today

# 特定のサービスのみ
journalctl -u サービス名

# エラーレベルのみ
journalctl -p err

Q:ログの時刻がおかしい

A:システムの時刻設定を確認してください

# 現在の時刻設定を確認
timedatectl

# NTPでの時刻同期を有効化
sudo timedatectl set-ntp true

Q:ログにアクセスできない(Permission denied)

A:適切な権限でアクセスしてください

# sudo権限で確認
sudo tail /var/log/secure

# ログファイルの権限を確認
ls -la /var/log/

よくある質問

Q:Windowsのイベントビューアのような GUI ツールはありますか?

A:はい、いくつかあります

  • GNOME Logs(gnome-logs):GNOME環境
  • KSystemLog:KDE環境
  • LogAnalyzer:Web ベースのログ分析ツール

Q:ログを他のサーバーに転送できますか?

A:rsyslogやsyslog-ngを使って中央集約できます

# rsyslogの設定例
# /etc/rsyslog.conf に追加
*.* @@log-server:514

Q:古いログを永続的に保存したい場合は?

A:logrotateの設定を変更するか、別途アーカイブしてください

# アーカイブ例
tar czf logs_$(date +%Y%m).tar.gz /var/log/*.log

まとめ:Linuxログ管理の基本をマスターしよう

この記事のポイント

確認したいことおすすめコマンド用途
システム全般のログtail -f /var/log/syslog日常監視
認証関連のログgrep "Failed" /var/log/auth.logセキュリティチェック
systemd環境の統合ログjournalctl -xe詳細調査
特定サービスのログjournalctl -u サービス名トラブルシューティング
リアルタイム監視tail -f ログファイル問題発生時の追跡

重要なポイント

  • ディストリビューションによってログファイル名が異なる
  • systemd環境では journalctl が便利
  • 定期的なログ確認でシステムの健康状態を把握
  • セキュリティログは特に注意深く監視
  • ログローテーションでディスク容量を管理

コメント

タイトルとURLをコピーしました