ログストリーミング: Log Shuttle

Fastly のリアルタイムログストリーミング機能によって、ログファイルを Log Shuttle に送信することができます。Log Shuttle は、暗号化および認証されたログの送信をよりシンプルに行うために設計されたオープンソースのアプリケーションです。

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

Log Shuttle をログエンドポイントとして追加する

以下の手順で Log Shuttle をログエンドポイントとして追加します。

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

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

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

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

    • Token フィールドにデータ認証トークンを入力します。これは、Heroku の Log Integration などの一部のエンドポイントで必要です。
    • URL フィールドに、ログデータの送信先となる URL を入力します (例: https://logs.example.com/)。
  4. Create をクリックして、新しいログ記録エンドポイントを作成します。

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

フォーマットの例

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

{
"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
}