はじめる人のびぎねっと。

プライバシーポリシー

読み物

Linux基礎

ログとは?

ログとは,Linuxの動作状況をログファイルとして記憶しておく仕組みです。システム上の不具合や,セキュリティの脅威に対処するために必要な情報として利用されます。ログはsyslogデーモンによって記録される場合と,ソフトウェア自身が記録をする場合の2つがあります。

ソフトウェア自身が記録を持つものとして,WebサーバのApacheなどがあります。Apacheは,記録形式などをユーザーが設定することも可能です。その場合には,ログ記録を行うプログラムをソフトウェア自身が持たなくてはなりません。

ログをみる

Linuxでは,システムの基本動作に関するログを/var/logディレクトリの中に種類別にいくつかのファイルに分けて記録されています。これらのファイルを参照すればシステムの状態やさまざまなエラーなどの警告を見ることができます。

ログの最新情報を見る場合,tailコマンドを使うと便利です。ログは,既存のファイルの末尾に情報を追加していくので,ファイルのあとほど最新のログが記述されています。tailコマンドを用いると,末尾数行(デフォルトでは10行)のログだけを見ることができます。

●ログの最新部分を表示する

$ tail /var/log/messages

/var/log/messagesファイルの中に一般的なログが保存されています

●ログをリアルタイムに表示する

$ tail -f /var/log/messages

tailコマンドに-fオプションをつけて実行すると,末尾数行のログとともにリアルタイムで発生したログも確認することができます。

syslogのカスタマイズ

ログは,出力先ファイルファイルなどをユーザー自身がカスタマイズすることもできます。/etc/syslog.confファイルに各サービスごとに出力先ファイルや出力するログのレベルを設定することができます。syslogサービスは,各種ソフトウェアからのログ情報をまとめて出力するサービスです。

sysylogはファシリティとプライオリティという2つの指標でログの情報を分類しています。ファシリティはログの種類を示します。プライオリティはログの重要度・緊急性を示します。

代表的なファシリティ

authpriv 認証やセキュリティに関するログ
cron cronサービスに関するログ
daemon 各種デーモンに関するログ
kern カーネルから出力されるログ
lpr 印刷サービスから出力されるログ
mail メールサービスから出力されるログ
syslog syslog自体が内部的に出力するログ

代表的なプライオリティ

emerg(panic) カーネルパニックなどシステム全体が機能不全に陥るようなエラー
alert ファイルシステムが破壊されるなど早急に修復すべきエラー
crit ハードウェアトラブルなどの致命的なエラー
err(error) 一般的なエラー
warn(warning) 軽度の問題に関する通知
notice エラーではない状態に関する通知
info 一般的な情報
debug アプリケーションのデバックメッセージ
none 出力なし

ログの出力の設定は上記のファシリティ,プライオリティごとに行うことが可能です。

●/etc/syslog.confに出力方法を指定する

$ vi /etc/syslog.conf
# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.* /dev/console

mail.warn               /var/log/mail_error.log
   ↑                     ↑
<ファシリティ>.<プライオリティ> <ファシリティ>.<プライオリティ>   出力ファイル
Apacheのログ

Apacheのログは,webサイトの不具合や不審なアクセスをみつけたりすることができます。Apacheが残すログにはいくつかの種類があります。その中で,Apacheのログとして代表的なアクセスログとエラーログについて解説します。

アクセスログは,Cookieの値や時間といったさまざまな情報について,どのように記録するか設定できます。ログの書式は「LogFormat」ディレクトリで設定します。書式を記録するログファイルは「CustomLog」ディレクトリで設定します。

●LogFormatの設定例

LogFormat "%t" time

とすれば,書式の名前が「time」で,記録するのはアクセスの時刻「%t」となります。

●CustomLogの設定例

CustomLog /usr/local/apache/logs/time_log time

とすれば,書式名「time」のログを「time_log」というファイル名で記録すると設定したことになります。

アクセスログを使うと,自分の使いやすい書式でログを記録することができます。

エラーログは,リクエストの結果がエラーになったものだけが記録されています。アクセスログと違い,エラーログは記録するエラーだけを設定します。

エラーログの設定で必要になるディレクティブは,「ErrorLog」と「LogLevel」の2つです。ErrorLogディレクティブはログファイルの位置と名称を指定します。LogLevelディレクティブは記録するログのレベルを指定します。エラーログのレベルの設定は,ログのプライオリティを同じです。

●LogLevelの設定例

LogLevel notice

notice以上のエラー(emerg?notice)を記録します。一般的に,運用状態にあるサーバでは「notice」か「warn」を指定します。テスト状態であれば,「info」や「debug」を指定することが多いようです。

●ErrorLogの設定例

エラーは,/usr/local/apache/logsに表示されます。

ErrorLog /usr/local/apache/logs/error_log

※エラーのあったリクエストを記録するエラーログファイルのパスを設定

このページのTOPへ