エッジVault(生ログ保存オプション)

エッジVaultを利用すると、CDN(エッジサーバー)で処理したアクセスログのダウンロードが可能となります。

仕様

ログファイル形式

LTSV(GZIP圧縮)

ログファイル生成時間

5分単位(※1)

ログファイルアップロード先

弊社クラウドストレージ

アクセス方法

WINSCPまたはS3互換のツール

注釈

※1: ログファイルは5分単位で生成されますが、アップロードには最大15分程度かかる場合があります。またメンテナンス等の理由でログファイルの生成タイミングが変更される場合があります。

ご注意事項

  • メンテナンス等の影響で、アクセスログが一部欠損・保存の遅延が発生する恐れがあります。必ずしも完全性を保証するものでは御座いません。

  • アクセスログの保存期間は、最大で1ヶ月となります。

  • ログファイルはエッジ毎に配信されるため、複数ファイルに分かれて格納されます。

注釈

クラウドストレージのアクセス情報は、別途ご連絡致します。

ログフォーマットと保存先

クラウドストレージへの保存パスは以下の通りとなります。 /YYYY/MM/DD/YYYYMMDDHHMMSS_userlog.cid.ご契約ID_ランダムな文字列.gz

エッジVaultで保存されるログファイルは以下のフォーマットで保存されます。

アクセスログフォーマット例

host:www.redbox.ne.jp client_ip:192.168.0.1 time:2024-12-31-23:53:04 method:GET request:/ protocol:HTTP/1.1 status:200 size:436 referer:- ua:Chrome hit_miss:miss

項目

説明

host

ホストヘッダーの値

client_ip

接続元IPアドレス

time

アクセス時刻(JST)

method

HTTPメソッド

request

リクエストパス

protocol

プロトコル(現時点ではHTTP2/3のアクセスであってもhttp/1.1と表示されます

status

ステータスコード

size

応答サイズ(Byte)

ua

ユーザーエージェント

hit_miss

キャッシュステータス(HIT MISS PASS)

アクセスログのダウンロード

エッジVaultで保存されたアクセスログは、クラウドストレージに保存されています。クラウドストレージへのアクセス情報を利用してS3互換のツールでダウンロードして下さい。

以下はWINSCPを例にした設定を記載します。

  1. WINSCPを起動し、新しい接続を作成します。

  2. 転送プロトコルをAmazon S3に設定します。

  3. ホスト名にクラウドストレージのホスト名を入力します。(弊社サポートからご連絡します)

  4. アクセスキーIDとシークレットを入力します。(弊社サポートからご連絡します)

  5. 設定をクリックし高度なサイトの設定画面を開きます

  6. 環境→ディレクトリタブ内にある、「リモートディレクトリ」に弊社所定の文字列を入力し保存します。

アクセスログの変換

アクセスログはLTSV形式で保存されています。LTSV形式のログを別のフォーマットに変換する場合は以下の様なコードで変換可能です。

Apache combined形式に変換する例

#!/bin/bash

# 入力ファイル
INPUT_FILE="input.ltsv"
# 出力ファイル
OUTPUT_FILE="output.log"

# 出力ファイルを初期化
> "$OUTPUT_FILE"

# LTSVをApache Combined形式に変換
while IFS=$'\t' read -r line; do
   # 各フィールドを辞書として解析
   declare -A fields
   for field in $line; do
      key="${field%%:*}"
      value="${field#*:}"
      fields[$key]="$value"
   done

   # 時刻フォーマットを修正
   timestamp="${fields[time]}"
   # 日付部分と時刻部分を分離
   date_part="${timestamp:0:10}" # 最初の10文字(例: 2024-12-31)
   time_part="${timestamp:11}"   # 11文字目以降(例: 23:53:04)
   # 日付部分を "31/Dec/2024" に変換
   year="${date_part:0:4}"
   month="${date_part:5:2}"
   day="${date_part:8:2}"
   case "$month" in
      1)  month="Jan" ;;
      2)  month="Feb" ;;
      3)  month="Mar" ;;
      4)  month="Apr" ;;
      5)  month="May" ;;
      6)  month="Jun" ;;
      7)  month="Jul" ;;
      8)  month="Aug" ;;
      9)  month="Sep" ;;
      10) month="Oct" ;;
      11) month="Nov" ;;
      12) month="Dec" ;;
   esac
   formatted_time="$day/$month/$year:$time_part"

   # Apache Combined形式に整形
   printf "%s - - [%s] \"%s %s %s\" %s %s \"%s\" \"%s\"\n" \
      "${fields[client_ip]}" \
      "$formatted_time" \
      "${fields[method]}" \
      "${fields[request]}" \
      "${fields[protocol]}" \
      "${fields[status]}" \
      "${fields[size]}" \
      "${fields[referer]}" \
      "${fields[ua]}" >> "$OUTPUT_FILE"
done < "$INPUT_FILE"

echo "変換完了: $OUTPUT_FILE に保存されました"