4.2.2 ログの採取方法
アクセスログ,エラーログ,プロセスIDのログおよびリクエストログの採取方法について説明します。
(1) アクセスログ
(a) デフォルトフォーマットのアクセスログ
TransferLogディレクティブを指定して,ログを採取します。
デフォルトフォーマットのアクセスログの形式を次に示します。
クライアントホスト名△クライアントの識別情報△クライアントユーザ名△アクセス時刻△"リクエストライン"△ステータスコード△送信バイト数
- (凡例)
-
△:空白
- (出力例)
172.17.40.30 - - [25/Dec/2000:16:23:59 +0900] "GET / HTTP/1.0" 200 3546
(b) カスタムフォーマットのアクセスログ
CustomLogディレクティブを指定して,ログを採取します。フォーマットの指定方法には,二つあります。
-
直接CustomLogディレクティブにフォーマットを指定する
- (例)
-
CustomLog logs/access.log "%h %l %u %t \"%r\" %>s %b"
-
LogFormatディレクティブでフォーマットに対するラベル名を定義して,そのラベル名をCustomLogディレクティブに指定する
- (例)
-
LogFormat "%h %l %u %t \"%r\" %>s %b" common
CustomLog logs/access.log common
(2) エラーログ
(a) エラーメッセージログ
ErrorLogディレクティブを指定して,ログを採取します。LogLevelディレクティブで採取するエラーのレベルを指定します。
(b) CGIスクリプトのエラーログ
ScriptLogディレクティブを指定して,CGIスクリプトのエラーログを採取します。
(4) リクエストログ
HWSRequestLogディレクティブとHWSRequestLogTypeディレクティブを指定して,リクエストログを採取します。リクエストログとは,モジュールトレース,リクエストトレースおよびI/Oフィルタトレースの総称です。
モジュールトレースの詳細については「4.2.6 モジュールトレースの採取」,リクエストトレースの詳細については「4.2.7 リクエストトレースの採取」,I/Oフィルタトレースの詳細については「4.2.8 I/Oフィルタトレースの採取」を参照してください。
(5) WebSocketログ
(a) 指定方法
HWSWebSocketLogディレクティブを指定して,WebSocket通信でのログを採取します。
rotatelogs2で512MBでファイルを分割する例を次に示します。
HWSWebSocketLog "|インストールパス/httpsd/sbin/rotatelogs2 ログ出力先/hws_websocket_log 524288 2"
HWSWebSocketLogディレクティブを指定するには,mod_proxy_wstunnelモジュールの組み込みが必要です。mod_proxy_wstunnelモジュールの組み込み方法については「4.15.1 mod_proxy_wstunnelモジュール」を参照してください。mod_proxy_wstunnelモジュールを組み込んでいない場合は,起動エラーとなります。
(b) 出力フォーマット
各WebSocket通信で出力するログには,ルートAP情報を含みます。ただし,ルートAP情報が取得できない場合は,ルートAP情報部分が"-"となります。出力するフォーマットを次に示します。
-
クライアントからのデータをバックエンドに送信成功
[時刻]△(ID)△クライアントIP:ポート△-->△WebサーバIP:ポート△-->△WebサーバIP:ポート△-->△バックIP:ポート△(ルートAP情報)
-
バックエンドからのデータをクライアントに送信成功(初回)
[時刻]△(ID)△クライアントIP:ポート△<--△WebサーバIP:ポート△<--△WebサーバIP:ポート△<--△バックIP:ポート△(ルートAP情報)(ステータスコード)
ただし,ステータスコードを取得できない場合は,ステータスコード部分が"-1"となります。
-
バックエンドからのデータをクライアントに送信成功(2回目以降)
[時刻]△(ID)△クライアントIP:ポート△<--△WebサーバIP:ポート△<--△WebサーバIP:ポート△<--△バックIP:ポート△(ルートAP情報)
-
クライアントからのデータ受信でエラー
[時刻]△(ID)△クライアントIP:ポート△-X-△WebサーバIP:ポート△-->△WebサーバIP:ポート△---△バックIP:ポート△(ルートAP情報)
-
バックエンドへのデータ送信でエラー
[時刻]△(ID)△クライアントIP:ポート△-->△WebサーバIP:ポート△---△WebサーバIP:ポート△-X-△バックIP:ポート△(ルートAP情報)
-
バックエンドからのデータ受信でエラー
[時刻]△(ID)△クライアントIP:ポート△---△WebサーバIP:ポート△<--△WebサーバIP:ポート△-X-△バックIP:ポート△(ルートAP情報)
-
クライアントへのデータ送信でエラー
[時刻]△(ID)△クライアントIP:ポート△-X-△WebサーバIP:ポート△<--△WebサーバIP:ポート△<--△バックIP:ポート△(ルートAP情報)
-
バックエンドとのコネクション切断を検知
[時刻]△(ID)△クライアントIP:ポート△---△WebサーバIP:ポート△---△WebサーバIP:ポート△-X-△バックIP:ポート△(ルートAP情報)
-
クライアントとのコネクション切断を検知
[時刻]△(ID)△クライアントIP:ポート△-X-△WebサーバIP:ポート△---△WebサーバIP:ポート△---△バックIP:ポート△(ルートAP情報)
- (凡例)
-
△:空白
-->:クライアントからバックエンドサーバ方向へのデータの流れ
<--:バックエンドサーバからクライアント方向へのデータの流れ
-X-:データの送受信でエラー,またはコネクション切断
---:事象なし
(出力例)
[Mon Dec 09 21:13:09.008 2019] (9796) 192.168.10.10:61682 --> 192.168.10.20:80 --> 192.168.10.20:61683 --> 192.168.10.30:8008 (192.168.10.20/14756/0x0000000000000087) [Mon Dec 09 21:13:09.019 2019] (9796) 192.168.10.10:61682 <-- 192.168.10.20:80 <-- 192.168.10.20:61683 <-- 192.168.10.30:8008 (192.168.10.20/14756/0x0000000000000087)(101) [Mon Dec 09 21:13:09.029 2019] (9796) 192.168.10.10:61682 <-- 192.168.10.20:80 <-- 192.168.10.20:61683 <-- 192.168.10.30:8008 (192.168.10.20/14756/0x0000000000000087) [Mon Dec 09 21:13:10.715 2019] (9796) 192.168.10.10:61682 --> 192.168.10.20:80 --> 192.168.10.20:61683 --> 192.168.10.30:8008 (192.168.10.20/14756/0x0000000000000087) [Mon Dec 09 21:13:10.727 2019] (9796) 192.168.10.10:61682 <-- 192.168.10.20:80 <-- 192.168.10.20:61683 <-- 192.168.10.30:8008 (192.168.10.20/14756/0x0000000000000087) [Mon Dec 09 21:13:12.227 2019] (9796) 192.168.10.10:61682 --> 192.168.10.20:80 --> 192.168.10.20:61683 --> 192.168.10.30:8008 (192.168.10.20/14756/0x0000000000000087) [Mon Dec 09 21:13:12.234 2019] (9796) 192.168.10.10:61682 <-- 192.168.10.20:80 <-- 192.168.10.20:61683 <-- 192.168.10.30:8008 (192.168.10.20/14756/0x0000000000000087) [Mon Dec 09 21:13:12.236 2019] (9796) 192.168.10.10:61682 --- 192.168.10.20:80 --- 192.168.10.20:61683 -X- 192.168.10.30:8008 (192.168.10.20/14756/0x0000000000000087)
(6) 各トレースの出力先
(a) モジュールトレースの出力先
モジュールトレースの出力先は,エラーログまたはリクエストログのどちらか一方になります。どちらに出力されるかは,ディレクティブの指定によって決まります。モジュールトレースの出力先と出力条件を次に示します。
モジュールトレースの詳細については「4.2.6 モジュールトレースの採取」を参照してください。
(b) リクエストトレースおよびI/Oフィルタトレースの出力先
リクエストトレースおよびI/Oフィルタトレースの出力先はリクエストログになります。
HWSRequestLogディレクティブの指定があり,かつ,HWSRequestLogTypeディレクティブが出力条件を満たしている場合にリクエストログに出力されます。HWSRequestLogTypeディレクティブの出力条件については,「4.2.7 リクエストトレースの採取」および「4.2.8 I/Oフィルタトレースの採取」を参照してください。