ログストリーミング: Scalyr
- English
- 日本語
Fastly のリアルタイムログストリーミング機能では、Scalyr (現 DataSet) にログファイルを送信することができます。 Scalyr はすべてのサーバーログとメトリクスを一元化された検索可能なシステムにリアルタイムで取り込みます。
Fastly ではサードパーティのサービスに関する設定等のサポートは行っておりません。詳細は Fastly's Terms of Service をご参照ください。
前提条件
Scalyr のアカウントをお持ちでない場合は、登録してアカウントを作成する必要があります。Scalyr Web サイトの登録手順に従ってアカウントを作成してください。
アカウントを作成したら、Scalyr ダッシュボードの Settings にある API Keys のセクションにアクセスして、Scalyr Write Token をメモしてください。Scalyr は、お客様が送信したデータをお客様のアカウントと関連付けるためにこのトークンを使用します。そのため、Fastly でエンドポイントとしてセットアップする際にこのトークンが必要になります。
コントロールパネルではなく、コマンドラインで Scalyr エンドポイントを追加する場合は、Fastly API トークンと Scalyr へのログストリーミングを有効にする Fastly サービスのサービス ID とバージョン番号も必要です。
Scalyr をログエンドポイントとして追加する
以下の手順で Scalyr をログエンドポイントとして追加します。
- Deliver サービス
- Compute サービス
リモートログストリーミングの設定に関するガイドの情報をご確認ください。
- Scalyr エリアで、Create endpoint をクリックします。
- 以下の要領で Create a Scalyr endpoint の各フィールドに入力します。
Name フィールドに、エンドポイントの分かりやすい名前を入力します。
Placement エリアで、生成された VCL のどこにログコールを配置するかを選択します。有効な値は、形式のバージョンのデフォルトとなしです。詳細については、ログの配置の変更に関するガイドをご覧ください。
Log format フィールドに、オプションでログフォーマットに使用するための Apache 形式の文字列や VCL 変数を入力します。詳細はフォーマットの例のセクションを参照してください。
- (オプション) Logfile フィールドには、Scalyr の Overview ページに表示されるログのファイル名を指定します。デフォルトでは
logplexに設定されています。 - Token フィールドには、Scalyr ダッシュボードで提供された Scalyr Write Token を入力します。
- Region メニューから、ログの送信先の地域を選択します。
Create をクリックして、新しいログ記録エンドポイントを作成します。
Activate メニューから、Activate on Production を選択して、設定の変更をデプロイします。
フォーマットの例
以下に示すのは、Scalyr にデータを送信する書式指定文字列の例です。書式指定文字列の詳細については、こちらをご覧ください。
{ "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}