ログストリーミング: Cloud Files

Fastly の リアルタイムのログストリーミング 機能は、ログファイルを Cloud Files に送信することができます。Cloud Files は、Rackspace が運営する開発者および IT チーム向けのファイルストレージサービスです。

Fastly ではサードパーティのサービスに関する設定等のサポートは行っておりません。詳細は Fastly's Terms of Service をご参照ください。

前提条件

まだ Rackspace Cloud のアカウントをお持ちでない場合、登録が必要です。Rackspace の Web サイトに記載されている手順に従ってください。

Cloud Files のユーザーとコンテナの作成

まず Rackspace のクラウドコントロールパネルから、制限されたアクセス許可を持つ Cloud Files ユーザーを作成します。

  1. Rackspace のクラウドコントロールパネルにログインします。
  2. User account メニューから User Management を選択します。
  3. Create User をクリックし、適切な詳細をすべて入力します。
  4. Product Access セクションで User RoleCustom に設定します。
  5. Product Access リストを確認します。Product 欄の Files 項目を除くすべての項目に対して、RoleNo Access に設定します。
  6. Files 項目の RoleAdmin に設定します。これにより、ユーザーはログを保存するファイルを作成できますが、他のサービスにアクセスすることができなくなります。

次に、Cloud Files アカウントの API キーを確認します。これは後ほど Cloud Files API を使用した認証に使います。

  1. ユーザーアカウントメニューから Account Settings を選択します。
  2. Login details で API キーを表示し、キーを書き留めておきます。

Cloud Files ユーザーを作成し、API キーの確認ができたところで、Cloud Files コンテナを設定します。

  1. Storage メニューから Files を選択します。
  2. Create Container をクリックします。
  3. コンテナに Fastly logs - my service のような分かりやすい名前を割り当てます。
  4. 地域を選択してファイルを保存し、コンテナがプライベートであることを確認します。
  5. Create Container をクリックします。

Cloud Files のログエンドポイントの追加

Cloud Files のユーザーとコンテナを作成したら、以下の手順に従い Cloud Files をログエンドポイントとして追加します。

  1. Deliver サービス
  2. Compute サービス
  1. リモートログストリーミングの設定に関するガイドの情報をご確認ください。

  2. Rackspace Cloud Files エリアで、Create endpoint をクリックします。
  3. Create a Cloud Files endpoint フィールドに以下のように記入します。
    • Name フィールドに、エンドポイントの分かりやすい名前を入力します。

    • Placement エリアで、生成された VCL のどこにログコールを配置するかを選択します。有効な値は、形式のバージョンのデフォルトなしです。詳細については、ログの配置の変更に関するガイドをご覧ください。

    • Log format フィールドに、オプションでログフォーマットに使用するための Apache 形式の文字列や VCL 変数を入力します。詳細はフォーマットの例のセクションを参照してください。

    • (オプション) タイムスタンプ形式フィールドに、ログファイル用のタイムスタンプ形式を入力します。デフォルトは strftime と互換性のある文字列です。詳細については、ログファイルの書き込み先の変更に関するガイドを参照してください。

    • Bucket name フィールドに、ログを保存する Cloud Files コンテナの名前を入力します。
    • User フィールドに、上記で作成した Cloud Files ユーザーのユーザー名を入力します。
    • Access key フィールドに、Cloud Files アカウントの API キーを入力します。
    • (オプション) Period フィールドに、ログファイルのローテーションの頻度をコントロールするための間隔 (秒単位) を入力します。ローテーションでは、1つのファイルオブジェクトが終了し、新しいファイルオブジェクトが開始されますが、以前に作成されたファイルオブジェクトは削除されません。この値は、デフォルトでは3600秒です。

    • Region メニューから、ログの送信先の地域を選択します。
  4. Advanced options をクリックして、以下のようにフィールドにすべて入力します。
    • (オプション) Path フィールドに、ファイルを保存するバケット内のパスを入力します。パスの末尾はスラッシュとなります。このフィールドを空白のままにすると、ファイルはバケットのルートパスに保存されます。詳細については、ログファイルの書き込み先の変更に関するガイドを参照してください。

    • (オプション) PGP 公開鍵フィールドに、Fastly がディスクに書き込む前にログファイルを暗号化するために使用する PGP 公開鍵を入力してください。コンテンツを読むには、秘密鍵で復号化する必要があります。PGP キーは PEM (プライバシー強化メール) 形式である必要があります。詳細については、ログの暗号化に関するガイドをご覧ください。

    • Select a log line format」エリアで、ログメッセージのログ行形式を選択します。詳細については、ログ行形式の変更に関するガイドをご覧ください。

    • (オプション) [圧縮]フィールドで、ログファイルに適用する圧縮形式を選択してください。ログ圧縮オプションの変更に関するガイドには、さらに詳しい情報があります。

  5. Create をクリックして、新しいログ記録エンドポイントを作成します。

  6. Activate メニューから、Activate on Production を選択して、設定の変更をデプロイします。

フォーマットの例

以下に示すのは、Cloud Files にデータを送信する書式指定文字列の例です。書式指定文字列の詳細については、こちらをご覧ください。

{
"timestamp": "%{strftime(\{"%Y-%m-%dT%H:%M:%S%z"\}, time.start)}V",
"client_ip": "%{req.http.Fastly-Client-IP}V",
"geo_country": "%{client.geo.country_name}V",
"geo_city": "%{client.geo.city}V",
"host": "%{if(req.http.Fastly-Orig-Host, req.http.Fastly-Orig-Host, req.http.Host)}V",
"url": "%{json.escape(req.url)}V",
"request_method": "%{json.escape(req.method)}V",
"request_protocol": "%{json.escape(req.proto)}V",
"request_referer": "%{json.escape(req.http.referer)}V",
"request_user_agent": "%{json.escape(req.http.User-Agent)}V",
"response_state": "%{json.escape(fastly_info.state)}V",
"response_status": %{resp.status}V,
"response_reason": %{if(resp.response, "%22"+json.escape(resp.response)+"%22", "null")}V,
"response_body_size": %{resp.body_bytes_written}V,
"fastly_server": "%{json.escape(server.identity)}V",
"fastly_is_edge": %{if(fastly.ff.visits_this_service == 0, "true", "false")}V
}