ログストリーミング: Loggly

Fastly のリアルタイムログストリーミング機能によって、ログファイルを Loggly に送信することができます。Loggly はエージェントレス型のログ収集および管理ツールです。

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

前提条件

Loggly のアカウントをお持ちでない場合は、登録してアカウントを作成する必要があります。Loggly Web サイトの登録手順に従ってアカウントを作成してください。

以下の手順で Loggly のカスタマートークンを見つけます。

  1. Loggly ダッシュボードで Source Setup を選択し、Customer Tokens にアクセスします。

    loggly ダッシュボードの Source Setup にある Customer Tokens セクション

  2. Loggly のカスタマートークンをメモしてください。Loggly は、お客様が送信したデータをお客様のアカウントと関連付けるためにこのトークンを使用します。

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

Loggly アカウントを作成し、カスタマートークンを取得した後、以下の手順で Fastly サービスのログエンドポイントとして Loggly を追加します。

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

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

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

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

    • Token フィールドに Loggly のカスタマートークンを入力します。
  4. Create をクリックして、新しいログ記録エンドポイントを作成します。

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

フォーマットの例

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

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