Apache Logging Basics (日本語)

Apacheログは、他のコンピュータからのリクエスト、Apacheから送信された応答、Apacheサーバー内部のアクションなど、Apache webサーバーによって処理されたイベントを記録します。 このガイドのこのセクションでは、Apacheによって生成されるログの種類、保存場所、解釈方法など、Apacheロギングの基本について説明します。 までをもカバーの先端などをテーマに設定カスタムログ書式設定モジュールになります。,

Apacheログの種類

Apacheは、アクセスログとエラーログの二種類のログを生成します。

アクセスログ

アクセスログには、webサーバへのリクエストに関する情報が含まれています。 この情報には、ユーザーが表示しているページ、要求の成功ステータス、サーバーが応答するのにかかった時間などが含まれます。 典型的なアクセスログエントリの例を次に示します。

エラーログ

エラーログには、ファイルがないなど、要求を処理するときにwebサーバが遭遇したエラーに関する情報が含まれています。, また、サーバー自体に関する診断情報も含まれています。 エラーログの例を次に示します。

 File does not exist: /var/www/favicon.ico

ログの場所

デフォルトでは、Apacheはアクセスログとエラーログをサーバー上の別々のファイルに格納します。 の正確な位置によって異なります。,

Debian/Ubuntu/Linux Mint
Redhat/Fedora/CentOS Configuration
OpenSUSE

Apacheログの設定

Apacheには、グローバルまたは各仮想ホストのログ動作を調整できる高度に設定可能なログフレームワークがあります。 ある複数の指令が使用できる変更ロギング。 より一般的なディレクティブの中には、ログレベルディレクティブとログ形式ディレクティブがあります。,

ログレベルディレクティブ

LogLevelディレクティブは、特定の宛先に記録されるイベントの最小重大度レベルを決定します。 重大度レベルは、イベントの重要性を表し、”Emerg”から”Trace8″の範囲で、”Emerg”は不安定につながる可能性のあるイベントを表し、”Trace8″はトレースレベルのメッセージを表 たとえば、LogLevel critは、”Crit”、”Alert”、および”Emerg”の重大度を持つログを許可しますが、他のすべてのレベルは無視します。,

ログ形式

LogFormatディレクティブは、ログイベントのレイアウトと書式設定を制御します。 ApacheはデフォルトでCommon Log Format(CLF)を使用しますが、独自の書式文字列を指定して各ログに含まれるフィールドを変更することができます。

CustomLogディレクティブを使用して、ログファイルの場所を変更することもできます。 Linuxでは、Apacheは通常、OSと仮想ホストのオーバーライドに応じて、/var/log/apache2または/var/log/httpdディレクトリにログを書き込みます。, ファイル名の後にLogFormat文字列を定義することもできますが、このファイルには書式文字列のみが適用されます。たとえば、次の構成では、標準の”common”形式を使用してログをlogs/access_logに書き込みます。 Logs/サブディレクトリは、ServerRootディレクティブで指定されたディレクトリからの相対ディレクトリです。

LogFormat "%h %l %u %t \"%r\" %>s %b" commonCustomLog "logs/access_log" common

CustomLog”logs/access_log”common

フィールドの完全なリストは、Apacheログドキュメントで見つけることができます。, サーバーの正常性の監視や問題のトラブルシューティングに重要なフィールドです。

  1. %>s–要求のHTTPステータスコード。 元のステータスについては、%sを使用します。
  2. %U–要求されたURLパスで、クエリ文字列などの追加のURLパラメーターは除きます。
  3. %a–要求を行うクライアントのIPアドレス。, この識別交通量から、特定のソースです。
  4. %T–リクエストを処理するのにかかった時間を秒単位で指定します。 これは、サイトの速度を測定するのに便利です。 同じ測定をマイクロ秒単位で行うには、%Dを使用します。
  5. %{UNIQUE_ID}e–リクエストIDとも呼ばれ、リクエストごとに一意の識別子をログに記録します。 これは、Apacheからwebアプリケーションサーバーへの要求を追跡するのに便利です。,

ニックネームの割り当て

LogFormat文字列にニックネームを割り当てることができます。CustomLogディレクティブを使用して、指定された形式を使用してログを書き込むことができます。 これにより、毎回形式を再定義することなく、複数のログファイルに同じログ形式を使用できます。 このこと自体に問題がある場合は、複数のログファイルに複数のバーチャルホスト

たとえば、サンプル形式を作成し、”vhost_combined”という名前を付けましょう。, 次に、vhost_combined形式を使用してファイルにログを書き込むCustomLogディレクティブを作成します。

LogFormat "%v:%p %h %l %u %t "%r" %>s %O "%{Referer}i" "%{User-Agent}i"" vhost_combinedCustomLog /var/log/apache2/vhost.log vhost_combined

JSONとしてのフォーマット

ログをプレーンテキストとして保存すると、ログファイルを読み取る必要がある場合に簡単にスキャンできます。 ただし、これらのツールはログの書式設定を知っている必要があるため、ログ管理ソリューションなどのツールを使用してログを読み取ることは困難で 最ログ管理ソリューション支援、デフォルトのApacheのログフォーマットでない場合は、使用を考慮して構造形式のようなJSON.,

JSON(JavaScript Object Notationの略)は、構造化データを格納するための柔軟な形式です。 JSONは、ネスティブな名前と値のペアのコレクションを格納し、ほぼすべてのデータ型と構造を格納できます。 JSONは、キーの名前がそれに含まれるデータを記述するため、効果的に自己文書化しています。 JSONは、文字列、数値、ブール値、配列、およびnull値を含む多くの基本的なデータ型をサポートしています。,

JSON形式でログを格納するLogFormatの例を次に示します。

LogFormat "{ \"time\":\"%t\", \"remoteIP\":\"%a\", \"host\":\"%V\", \"request\":\"%U\", \"query\":\"%q\", \"method\":\"%m\", \"status\":\"%>s\", \"userAgent\":\"%{User-agent}i\", \"referer\":\"%{Referer}i\" }"

デフォルトの仮想ホストのオーバーライド

バーチャルホスト(vhosts)は、単一のApacheサーバー上で複数のwebサイトを実行するために使用されます。 グローバルなログ設定よりも優先される各vhostに対して個別のログ設定を定義できます。 ことができますログの各サイトの個別のディレクトリです。 くこれらのパラメータウンのデフォルトのロギングの設定をします。

たとえば、次の設定はexampleのvhost用です。,com。 ログは、access.logおよびerror.logディレクトリ内の/var/www/example.com/logsファイルを分離するために書き込まれます。

以下のセクションでは、異なるLinuxディストリビューションで使用されるデフォルトの設定ファイルの場所とディレクティブを示します。

Debian/Ubuntu/Linux Mint

Debianベースのディストリビューションでは、暗号化されていないサイト(ポート80)のデフォルトのvhost設定は/etc/apache2/sites-available/000-default.confにあります。 SSL/TLS(ポート443)で暗号化されたサイトのデフォルトのvhost構成は、/etc/apache2/sites-available/default-ssl.confにあります。,

デフォルトのディレクティブのテーブル

*条件付き環境変数。 支援のための複数のApacheサーバのインスタンス.

**環境変数。 初期ログパスを動的に設定するために使用されます。

Red Hat/Fedora/CentOS

Red Hatベースのディストリビューションでは、メイン設定ファイルは/etc/httpd/conf/httpd.confにあります。 追加のvhost設定ファイルを/etc/httpd/conf.dディレクトリに配置することができます。

デフォルトのディレクティブのテーブル

*ロードされたlog_config_moduleに条件付けられます。,

**ロードされたlogio_moduleに条件付けされます。

OpenSUSE

OpenSUSEでは、暗号化されていないサイト(ポート80)のデフォルトのvhost設定は/etc/apache2/default-vhost.confにあり、SSL/TLSで暗号化されたサイトのデフォルト設定は/etc/apache2/default-vhost-ssl.confにあります。

デフォルトのディレクティブのテーブル

*ロードされたlog_config_moduleに条件付けられます。

**ロードされたlogio_moduleに条件付けされます。

***ロードされたmod_sslに条件付けされます。,

ログ関連モジュール

Apache webサーバーは、Apacheの動作方法を変更するか、またはその機能を拡張するいくつかのモジュールを提供しています。 次のモジュールは、便利な方法でロギングの動作を追加または変更します。

mod_log_config

これはApacheが使用するベースのロギングモジュールであり、このガイドのこのセクションで説明したモジュールです。

mod_log_debug

このモジュールは、デバッグメッセージを記録するための追加オプションを提供します。, たとえば、特定のURLパスへのイベントのログ、処理後の要求のログ、タイムアウトになった場合の特定のクライアントからのメッセージのログなどを これは実験的なモジュールできない場合も含まれていまApache配布する

たとえば、次の設定では、クライアントが特定のパスを要求するたびにクライアントのIPアドレスをログに記録します。

mod_log_forensic

このモジュールは、要求が処理される前と後のロギングを有効にします。 各エントリには一意のIDが割り当てられ、forensicログと通常ログの間のイベントをトレースするために使用できます。, ただし、forensic loggerはカスタム形式をサポートしていません。 このモジュールはmod_unique_idモジュールよりも優先されます。

モジュールを有効にすると、forensicキーワードを使用して、どのログファイルがforensicログであるかを指定できます。 また、%{forensic-id}パターンを他のLogFormat文字列で使用して、通常のログにフォレンジックデータを追加することもできます。 ここでは、/var/www/example.com/logs/forensic.log:

forensicログの各行は”+”または”-“文字で始まります。, “+”はこの特定の要求のエントリログ行を示し、”-“は同じ要求の後続のエントリを示します。

たとえば、デフォルトのログ形式を使用してhttp://localhostを呼び出すことによって、次のエントリログが生成されました。

同じ要求の終了ログエントリは次のように表示されます。

-3264:55958cb4:0

終了エントリがログに表示されない場合、要求は完了しませんでした。

mod_logio

このモジュールは、リクエストごとに送受信されたバイト数をログに記録する機能を追加します。, このバイト数受信、送信、譲渡の組み合わせを受けた送). このモジュールは、SSLおよびTLS暗号化によるサイズの変化も正確に考慮しています。 このモジュールにはmod_log_configが必要で、通常はデフォルトでApacheに含まれています。

このモジュールは、LogIOTrackTTFB On|Offディレクティブを追加し、最初のバイト(TTFB)までの時間を追跡する機能を切り替えます。 TTFBは、要求が受信されてから応答が最初にクライアントに送信されるまでの時間です。, 次に、%^FBを使用して、TTFB測定をLogFormat文字列に含めることができます。

mod_filter

このモジュールは、任意の数のフィルタプロバイダを登録することにより、出力チェーンに状況依存フィルタを提供します。 mod_filterではない特有のログインすることができ抽出のための特定要求に基づくフィルタプロバイダです。 この容器などメインのapache configのバーチャルホストconfigディレクトリ内のタグです。htaccessファイル。,

このモジュールを使用すると、特定のインジェクション基準やそのIPアドレスなどの項目を含む要求をフィルタリングできます。

このモジュ ロギングのために、FilterTraceディレクティブは情報をエラーログに投稿します。,li>FilterDeclare–スマートフィルタを宣言します

  • FilterProtocol–mod_filterが応答ヘッダを正しく処理します
  • FilterProvider–フィルタプロバイダを登録します
  • FilterTrace–エラーに対するデバッグ/診断情報プロバイダ処理の前のログ
  • 次の例では、vhostコンテキストコンテナでフィルタリングを条件付きでフィルタリングし、モジュールを含めます。

    mod_unique_id:

    このモジュールは、各リクエストに対して環境変数と一意の識別子を構築します。, ものによく含まれているパッケージの配布が可能に. この一意の識別子は、アクセスログに書き込まれます。

    このモジュールはフォレンジック目的でmod_log_forensicに置き換えられましたが、他のモジュールでもサポートされています。

    forensic識別子とは異なり、一意の識別子は環境変数UNIQUE_IDを介してアプリケーションハンドラに渡されます。 このアプリケーションの開発者の追跡要求を通じて、webサーバにapplication server. これは、要求をデバッグするのに役立ちます。,

    Apacheはリクエストを処理するために子プロセスをスピンオフし、子インスタンスは一度に複数のリクエストを処理します。 その結果、というよりは、ものを使用するのが望ましくユニークな識別子を単一の要求を複数のサーバーのインスタンスと子プロセス。

    有効にすると、モジュールはデフォルトでアプリケーションハンドラに識別子を提供します。,

    例:

    UNIQUE_ID: Vaf3en8AAQEAAAtoQlAAAAAA

    識別子は、32ビットIPアドレス、32ビットプロセスID、32ビットタイムスタンプから構成され、16ビットカウンタに結合され、単一秒の32ビットスレッドインデックスよりも厳しい解像度で構成されます。 Timestampコンポーネントは、夏時間の調整に関する問題を防ぐためにUTCです。 の応用ハンドラは、識別子として不透明なトークンのみな解剖入すものである。p>

    それを参照してください。 それを分析しなさい。 それを検査します。 それを解決する

    重要なものを参照してください。

    無料トライアルを開始

    コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

    ツールバーへスキップ