Linux管理・運用の基本
システム管理者のための実践ガイド
システム管理者のための実践ガイド
Linuxシステムを運用していると、システムの異常やアプリケーションのエラーなど、さまざまな問題に遭遇します。そんな時、問題解決の糸口となるのがログファイルです。ログファイルには、システムやアプリケーションの動作状況が記録されており、適切に参照することで状況を正確に把握できます。
「何か問題があった時にログを見る」のはもちろんですが、普段からログをチェックする習慣をつけることで、潜在的な問題やセキュリティ上の異常を早期に発見し、大きな事故に繋がる前に対処できるようになります。
この記事では、Linuxにおけるログファイルの主な保存場所と、特に重要なログファイルの見方について解説します。
/var/log
Linuxにおけるログファイルのほとんどは、/var/logディレクトリ以下に保存されています。このディレクトリには、システム全体に関わるログから、特定のアプリケーションのログまで、様々な種類のログが格納されています。
まずは、このディレクトリの中身を見てみましょう。
ls -l /var/log
このコマンドを実行すると、/var/log
ディレクトリ内のファイルやディレクトリの一覧が表示されます。
多くのログファイルは、日付や数字(例: auth.log.1
, auth.log.2.gz
)がファイル名の後ろについていることがあります。これはログローテーションと呼ばれる仕組みによるものです。ログローテーションとは、ログファイルが肥大化するのを防ぐために、定期的に古いログを圧縮(.gz
)したり、別名で保存したりする機能のことです。これにより、ディスク容量の圧迫を防ぎ、必要なログだけを効率的に管理できます。この仕組みは通常、logrotate
コマンドによって管理されています。
/var/log
ディレクトリの構成イメージ
/var/log/
├── messages # システム全体の一般的なメッセージ (RHEL/CentOS系)
├── syslog # システム全体の一般的なメッセージ (Debian/Ubuntu系)
├── auth.log # 認証関連のログ (Debian/Ubuntu系)
├── secure # 認証関連のログ (RHEL/CentOS系)
├── kern.log # カーネルからのメッセージ
├── apt/ # APTパッケージマネージャのログ
│ └── history.log
├── yum.log # YUMパッケージマネージャのログ
├── boot.log # システム起動時のログ
├── dmesg # カーネルリングバッファのログ
├── httpd/ # Apache HTTPサーバーのログ
│ ├── access_log
│ └── error_log
├── nginx/ # Nginxのログ
│ ├── access.log
│ └── error.log
├── mysql/ # MySQLデータベースのログ
│ └── error.log
└── ... # その他のアプリケーションやサービスのログ
システムの状態やトラブルの原因を探る際によく参照するログファイルをいくつかご紹介します。
ログファイル/ディレクトリ | 内容 | 確認コマンド例 |
---|---|---|
/var/log/messages |
システム全体に関する一般的なメッセージ、起動・停止メッセージ、カーネルからの情報、システムエラーなどが記録されます。(RHEL/CentOS系) | sudo less /var/log/messages |
/var/log/syslog |
システムに関する一般的なメッセージ、起動・停止メッセージ、カーネルからの情報、システムエラーなどが記録されます。(Debian/Ubuntu系) | sudo less /var/log/syslog |
/var/log/auth.log |
認証に関するログ。ユーザーのログイン・ログアウト、sudoコマンドの実行、SSH接続の成功・失敗などが記録されます。(Debian/Ubuntu系) | sudo less /var/log/auth.log |
/var/log/secure |
認証に関するログ。ユーザーのログイン・ログアウト、sudoコマンドの実行、SSH接続の成功・失敗などが記録されます。(RHEL/CentOS系) | sudo less /var/log/secure |
/var/log/kern.log |
カーネルからのメッセージが記録されます。ハードウェアのエラーやドライバーの問題などを調査する際に役立ちます。 | sudo less /var/log/kern.log |
/var/log/apt/history.log |
APTパッケージマネージャによるパッケージのインストール、アップデート、削除の履歴が記録されます。(Debian/Ubuntu系) | sudo less /var/log/apt/history.log |
/var/log/yum.log |
YUMパッケージマネージャによるパッケージのインストール、アップデート、削除の履歴が記録されます。(RHEL/CentOS系) | sudo less /var/log/yum.log |
/var/log/boot.log |
システム起動時のメッセージが記録されます。起動プロセスでエラーが発生した場合に参照します。 | sudo less /var/log/boot.log |
/var/log/dmesg |
カーネルが起動時に出力するメッセージ(カーネルリングバッファ)です。ハードウェアの認識状況などを確認できます。再起動するとリセットされます。 | dmesg または `dmesg |
/var/log/httpd/ |
Apache HTTPサーバーのアクセスログ(access_log )やエラーログ(error_log )が保存されます。 |
sudo less /var/log/httpd/access_log sudo less /var/log/httpd/error_log |
/var/log/nginx/ |
Nginxのアクセスログ(access.log )やエラーログ(error.log )が保存されます。 |
sudo less /var/log/nginx/access.log sudo less /var/log/nginx/error.log |
/var/log/mysql/ |
MySQLデータベースのログ(エラーログ、スロークエリログなど)が保存されます。設定によって場所が変わることがあります。 | sudo less /var/log/mysql/error.log |
ログファイルの閲覧コマンドの例:
tail -f <ログファイル名>
: リアルタイムでログの追加を監視します。トラブル発生時に状況を追いかけるのに非常に便利です。less <ログファイル名>
: ログファイルの内容をページ単位で表示します。検索機能などもあり、大きなログファイルを見る際に便利です。q
で終了します。cat <ログファイル名>
: ファイルの内容をすべて表示します。ファイルが大きい場合は注意が必要です。grepコマンドで特定の情報を抽出する例:
例えば、SSHへの不正アクセス試行を調べたい場合、以下のようにgrep
コマンドを使って「Failed password」というキーワードを含む行を抽出できます。
grep "Failed password" /var/log/secure # または /var/log/auth.log
ログメッセージの例:
実際のログファイルには、以下のようなタイムスタンプ、ホスト名、プロセス名、メッセージなどが記録されています。
Jul 16 21:05:01 hostname sshd[1234]: Failed password for root from 192.168.0.10 port 12345 ssh2
これは、「7月16日21時05分01秒に、hostname
というサーバーのsshd
プロセス(プロセスID 1234)から、IPアドレス192.168.0.10
のポート12345
から来たrootユーザーへのSSH接続でパスワード認証に失敗した」ことを示しています。このように、ログメッセージを読むことで何が起こったのかを具体的に把握できます。
認証に関するログを確認しましょう。Debian/Ubuntu系なら/var/log/auth.log
、RHEL/CentOS系なら/var/log/secure
をtail -f
で監視しながらログインを試みると、失敗原因がリアルタイムで表示されることがあります。
sudo tail -f /var/log/auth.log # または /var/log/secure
Webサーバーのログを確認しましょう。Apacheを使っているなら/var/log/httpd/error_log
、Nginxなら/var/log/nginx/error.log
にエラーメッセージが出力されていないか確認します。
sudo less /var/log/httpd/error_log # または /var/log/nginx/error.log
まずは/var/log/syslog
(Debian/Ubuntu系)や/var/log/messages
(RHEL/CentOS系)を確認し、何か異常を示すメッセージが出ていないか確認します。特に起動直後に問題がある場合は、/var/log/boot.log
やdmesg
も有効です。
Linuxにおけるログファイルは、システムの状態を把握し、問題が発生した際にその原因を特定するための重要な情報源です。ほとんどのログは/var/log
以下に集約されており、目的に応じて適切なログファイルを調べることが、効率的なトラブルシューティングにつながります。
豆知識: ログファイルを一時的に監視したい時はless +F <ログファイル名>
も便利です。tail -f
のように追従しつつ、Ctrl+C
で通常表示に戻り、ログ内を自由に移動・検索できます。
今日のポイント:ログは怖くない、見る習慣がトラブル早期発見のカギ!
この記事がLinuxのログ管理について理解を深める一助となれば幸いです。さらに詳しく知りたい場合は、man logrotate
や man syslog
コマンドで詳細を調べてみましょう!
ご覧いただきありがとうございました。
次回は、サーバーを守る上で欠かせないファイアウォールの設定について解説します。