ログストリーミング: Scalyr
最終更新日 2021-09-01
Fastly のリアルタイムログストリーミング機能によって、Scalyr にログファイルを送信することができます。Scalyr はすべてのサーバーログとメトリクスを一元化された検索可能なシステムにリアルタイムで取り込みます。
注意
Fastly ではサードパーティのサービスに関する直接のサポートは行っておりません。詳細については、Fastly サービスの利用規約をご参照ください。
前提条件
Scalyr のアカウントをお持ちでない場合は、登録してアカウントを作成する必要があります。Scalyr Web サイトの登録手順に従ってアカウントを作成してください。
アカウントを作成したら、Scalyr ダッシュボードの Settings にある API Keys のセクションにアクセスして、Scalyr Write Token をメモしてください。Scalyr は、お客様が送信したデータをお客様のアカウントと関連付けるためにこのトークンを使用します。そのため、Fastly でエンドポイントとしてセットアップする際にこのトークンが必要になります。
コントロールパネルではなく、コマンドラインで Scalyr エンドポイントを追加する場合は、Fastly API トークン と Scalyr へのログストリーミングを有効にする Fastly サービスの サービス ID とバージョン番号も必要です。
Scalyr をログエンドポイントとして追加する
以下の手順で Scalyr をログエンドポイントとして追加します。
- リモートログストリーミングの設定に関するガイドの情報をご参照ください。
- Scalyr の Create endpoint ボタンをクリックします。Create a Scalyr endpoint ページが表示されます。
- 以下の要領で Create a Scalyr endpoint の各フィールドに入力します。
- Name フィールドに分かりやすいエンドポイントの名前を入力します。
- Placement セクションでは、生成される VCL にログコールが配置される場所を選択します。有効な値は Format Version Default、
waf_debug
(waf_debug_log
)、None です。詳細については、ログ配置の変更に関するガイドをご参照ください。 - Log format 欄には、ログフォーマットに使用するための Apache 形式の文字列や VCL 変数を任意で入力します。詳細は形式の例のセクションを参照してください。
- Logfile フィールドには、Scalyr の Overview ページに表示されるログのファイル名を任意で指定します。デフォルトでは
logplex
に設定されています。 - Token フィールドには、Scalyr ダッシュボードで提供された Scalyr Write Token を入力します。
- Regionメニューから、ログの送信先の地域を選択します。
- Create ボタンをクリックすると、新しいログエンドポイントが作成されます。
- Activate ボタンをクリックして設定変更をデプロイします。
の形式例
以下に示すのは、Scalyr にデータを送信する書式の例です。書式の詳細については、こちらをご覧ください。
1{2 "timestamp": "%{strftime(\{"%Y-%m-%dT%H:%M:%S%z"\}, time.start)}V",3 "client_ip": "%{req.http.Fastly-Client-IP}V",4 "geo_country": "%{client.geo.country_name}V",5 "geo_city": "%{client.geo.city}V",6 "host": "%{if(req.http.Fastly-Orig-Host, req.http.Fastly-Orig-Host, req.http.Host)}V",7 "url": "%{json.escape(req.url)}V",8 "request_method": "%{json.escape(req.method)}V",9 "request_protocol": "%{json.escape(req.proto)}V",10 "request_referer": "%{json.escape(req.http.referer)}V",11 "request_user_agent": "%{json.escape(req.http.User-Agent)}V",12 "response_state": "%{json.escape(fastly_info.state)}V",13 "response_status": %{resp.status}V,14 "response_reason": %{if(resp.response, "%22"+json.escape(resp.response)+"%22", "null")}V,15 "response_body_size": %{resp.body_bytes_written}V,16 "fastly_server": "%{json.escape(server.identity)}V",17 "fastly_is_edge": %{if(fastly.ff.visits_this_service == 0, "true", "false")}V18}