オリジンの名前、IP アドレス、ポートのトラッキング
最終更新日 2018-10-30
オリジンに関連する情報をトラッキングできると、エラーのトラブルシューティングやリクエストが期待通りに処理されているか確認するのに役立ちます。Fastly では、オリジンに関する情報の確認とトラッキングを可能にする以下の3つの VCL 変数を利用できます。
これらの変数を使ってオリジンに関する情報を取得する VCL スニペットを作成し、リモートログストリーミングを設定してその情報を保存することができます。
オリジン関連情報の取得
以下の通常の手順で VCL スニペットを作成し、オリジンに関する情報を取得します。
- Fastly コントロールパネルにログインします。
- Home ページから、適切なサービスを選択します。検索ボックスで ID、名称、ドメインでの検索が行えます。
- Edit configuration ボタンをクリックし、アクティブなバージョンをクローンするオプションを選択します。ドメインページが表示されます。
VCL Snippetsのリンクをクリックします。VCL スニペットのページが表示されます。
Create Snippet をクリックします。Create a VCL スニペットページが表示されます。
Name フィールドに適切な名前を入力します (例:
Retrieve-Origin-Information
)。Type のセクションで within subroutine を選択します。Select subroutine メニューが表示されます。
Select subroutine メニューから、fetch (
vcl_fetch
) を選択します。VCL フィールドに以下の VCL ロジックを追加します。
1# save the variables for access in deliver2set beresp.http.Your-Backend-Name = beresp.backend.name;3set beresp.http.Your-Backend-IP-Port = beresp.backend.ip ":" beresp.backend.port;Create をクリックしてスニペットを作成します。
レスポンスヘッダーをリクエストヘッダーに変更する
情報をログに記録する前に、レスポンスヘッダーをリクエストヘッダーに変更する別のレギュラー VCL スニペットを作成します。
VCL Snippetsのリンクをクリックします。VCL スニペットのページが表示されます。
Create Snippet をクリックします。Create a VCL スニペットページが表示されます。
Name フィールドに適切な名前を入力します (例:
Remove-Origin-Information
)。Type のセクションで within subroutine を選択します。Select subroutine メニューが表示されます。
Select subroutine メニューから、deliver (
vcl_deliver
) を選択します。VCL フィールドに以下の VCL ロジックを追加します。
1if (fastly_info.state ~ "(MISS|PASS)") {2 # only on a miss or pass3 # save the responses back to req.request because4 # request headers are not sent back to the client5 set req.http.Your-Backend-Name = resp.http.Your-Backend-Name;6 set req.http.Your-Backend-IP-Port = resp.http.Your-Backend-IP-Port;7 }89# remove the identifying information from the response10unset resp.http.Your-Backend-Name;11unset resp.http.Your-Backend-IP-Port;Create をクリックしてスニペットを作成します。
注意
VCL が処理される際に、beresp.http.Your-Backend-Name
のようなレスポンスヘッダーが vcl_fetch
に存在する場合、それに対応するレスポンスヘッダー resp.http.Your-Backend-Name
が vcl_deliver
に存在し、デフォルトでログに記録されます。これは、レスポンスの出力にレスポンスヘッダーが含まれ、オリジンに関する情報 (IP アドレスやポート番号、オリジンの名前など) が表示されることを意味します。幸い、リクエストヘッダーがクライアントに戻されることはありませんが、その情報は vcl_log
でアクセスすることが可能です。
リモートログストリーミングの設定
スニペットの作成後、トラッキング目的でリモートログストリーミングを設定することができます。リモートログストリーミングのガイドに従って設定したログエンドポイントの Log format フィールドに req.http.Header-Name
を追加することでこれが可能です。上記の例では req.http.Your-Backend-Name
と req.http.Your-Backend-IP-Port
を追加することになります。変更した内容を確認したら、Activate ボタンをクリックしてサービスに設定変更を反映させます。
注意
オリジンに関する情報を取得するためにリモートログストリーミングを設定する場合、VCL がオリジンシールドノードとエッジノードで2回実行されることにご留意ください。つまり (オリジンシールドノードからの) 1つ目のログにはオリジンの情報が、(エッジノードからの) 2つ目のログにはオリジンシールドの情報が記録されることになります。