ログストリーミング: Syslog

Fastlyのリアルタイムログストリーミング機能では、Syslog ベースのログソフトウェアにログファイルを送信することができます。Syslog は、メッセージログに広く使用されている規格です。

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

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

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

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

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

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

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

    • Syslog address フィールドには、ログが送信されるドメイン名や IP アドレスとポートを入力します。このポートが Fastly から受信した TCP トラフィックを受信できることを確認してください。詳細についてはファイアウォールへの考慮事項のセクションを参照してください。
    • (オプション) Token フィールドに、各ログ行の前に送信する文字列プリフィックス (行プリフィックス) を入力します。
      トークンを送信するには、ログ行形式Blank 以外の形式に設定されていることを確認してください。
    • syslog のエンドポイントの暗号化を無効にするには、TLS メニューから No を、有効にするには Yes を選択します。Yes を選択すると、追加の TLS フィールドが表示されます。
    • TLS hostname フィールドに、任意でログ記録先サーバーの証明書を検証するためのホスト名を入力します。これは証明書の Subject Alternative Name (SAN) フィールドの1つである必要があります。一般名 (CN) はサポートされていません。

      このフィールドは、Use TLS メニューから Yes を選択した場合にのみ表示されます。
    • (オプション) TLS CA certificate フィールドには、オリジンサーバーの証明書が有効であることを確認するために使用する認証局 (CA) の証明書をコピー&ペーストしてください。アップロードする証明書は PEM 形式である必要があります。周知の認証局によって署名されてない場合には、証明書をアップロードすることを検討してください。TLS 証明書が周知の認証局によって署名されていれば、必要ありません。このフィールドは、Use TLS メニューから Yes を選択した場合にのみ表示されます。
    • (オプション) TLS client certificate フィールドには、オリジンサーバーへの認証に使用する TLS クライアント証明書をコピー & ペーストしてください。アップロードする TLS クライアント証明書は、PEM 形式で、クライアント証明書を添付する必要があります。TLS クライアント証明書により、Fastly が接続を実行していることをサーバーが認証できるようになります。このフィールドは、Use TLS メニューから Yes を選択した場合にのみ表示されます。
    • (オプション) TLS client key フィールドには、バックエンドサーバーへの認証に使用する TLS クライアントキーをコピー & ペーストしてください。アップロードする TLS クライアントキーは、PEM 形式で、TLS クライアント証明書を添付する必要があります。TLS クライアントキーにより、Fastly が接続を実行していることをサーバーが認証できるようになります。このフィールドは、Use TLS メニューから Yes を選択した場合にのみ表示されます。
  4. (オプション) ログライン形式を変更するには、Advanced options をクリックします。

    Select a log line format」エリアで、ログメッセージのログ行形式を選択します。詳細については、ログ行形式の変更に関するガイドをご覧ください。

    これは、Syslog 設定と互換性がある必要があります。
  5. Create をクリックして、新しいログ記録エンドポイントを作成します。

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

フォーマットの例

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

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

セパレーターや静的文字列の追加

以下の方法で、syslog のエンドポイント形式にセパレーターや任意の文字列を挿入します。

  1. 以下のフィールドを使用して新しいヘッダーを作成します。
    • Type メニューから Request を選択し、Action メニューから Set を選択します。
    • Destination フィールドには、適切なヘッダー名を入力します (例: http.X-Separator)。
    • Source フィールドには、任意の特別な文字列や文字列を入力します (例: "|")。
  2. 特定のプロバイダーのログ形式ボックスで新しいヘッダー変数を参照します (例: req.http.X-Separator)。

Syslog の機能と重要度

Syslog の出力には、以下のような機能と重要度の値が含まれます。

facility: local0
severity: info

ファイアウォールへの考慮事項

Syslog はセキュリティ機能が制限されています。このため、syslog サーバーにファイアウォールを作成・設定したポートでは、Fastly のアドレスブロックからの TCP トラフィックのみを受け入れるようにすることをお勧めします。Fastly の IP アドレスブロックのリストは動的なので、可能な限りプログラムから取得することをお勧めします。