ログストリーミング:Kafka

Fastly の リアルタイムログストリーミング 機能は、Apache Kafka にログファイルを送信することができます。Kafka は、リアルタイムデータフィードを処理するための、高スループットで低レイテンシのオープンソースプラットフォームです。

前提条件

Fastly サービスのログエンドポイントとして Apache Kafka を追加する前に、Kafka がリモートサーバー上で作動していることを確認してください。1 つ以上のサーバー (Broker) のホスト名や IP アドレス、およびメッセージが保存されるカテゴリーやフィード名 (Topic) が必要になります。Kafka の設定に関する詳細情報は、Apache Kafka クイックスタートガイドをご参照ください。

ログエンドポイントとして Kafka を追加

次の手順に従って、ログエンドポイントとして Kafka を追加してください。

  1. リモートログストリーミングの設定に関するガイドの情報をご参照ください。
  2. Apache Kafka Create endpoint ボタンをクリックします。Create an Apache Kafka endpoint ページが表示されます。
  3. Create an Apache Kafka endpoint フィールドに次のように入力します。
    • Name フィールドに分かりやすいエンドポイントの名前を入力します。
    • Placement セクションでは、生成される VCL にログコールが配置される場所を選択します。有効な値は Format Version Defaultwaf_debug (waf_debug_log)None です。詳細については、ログ配置の変更に関するガイドをご参照ください。
    • Log format 欄には、ログフォーマットに使用するための Apache 形式の文字列や VCL 変数を任意で入力します。詳細は形式の例のセクションを参照してください。
    • Brokers フィールドには、1つ以上のサーバー (Kafka ブローカー) のホスト名または IP アドレスを入力します。デフォルトでは、ポート 9902 を使用します。デフォルトのポートと異なる場合、ホスト名にフォーマット :[port](例: :443) を使用してポートを追加してください。複数のサーバーをコンマ区切りの文字列を使用して指定することができます。
    • Topic フィールドには、ログを送信するトピック名を入力します。
    • Maximum bytes フィールドには、 ログバッチの最大サイズをオプションで入力します。
    • Parse key-values から、ログ形式内のキーと値ペアを解析するかどうかを任意で選択します。
    • Write acknowledgement エリアでは、書き込みが成功する前に、リーダーが受信する書き込み確認を任意で選択します。
    • Compression codec エリアには、ログの圧縮に使用する適切なコーデックを任意で選択します。
    • Use SASL 制御から、SASL 認証を有効にするかどうかを任意で選択します。SASL 認証は、TLS の暗号化と同時に有効にすることができます。Yes を選択すると、追加の SASL 認証フィールドが表示されます。
    • SASL authentication mechanism メニューから、SASL クライアント認証のユーザー名とパスワードの認証に使用する適切なチャレンジレスポンスを選択します。
    • User フィールドに、SASL クライアント認証ユーザー名を入力します。
    • Password フィールドに、SASL クライアント認証パスワードを入力します。
    • Use TLS 制御から、Kafka エンドポイントで TLS 暗号化を有効にするかどうかを任意で選択します。TLS 暗号化は、SASL 認証と同時に有効にすることができます。Yes を選択すると、追加の TLS フィールドが表示されます。
    • TLS hostname フィールドに、ログの送信先サーバーの証明書を検証するためのホスト名を任意で入力します。これは、証明書のサブジェクト代替名(SAN)フィールドの1つと同じである必要があります。コモンネーム(CN)はサポートされていません。 ホスト名が指定されていない場合、Brokers フィールドに最初のブローカーのホスト名が使用されます。このフィールドは、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. Create ボタンをクリックすると、新しいログエンドポイントが作成されます。
  5. Activate ボタンをクリックして設定変更をデプロイします。

の形式例

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{
  "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
}
Back to Top