ログストリーミング: Elasticsearch

Fastly のリアルタイムログストリーミング機能によって、ログファイルを Elasticsearch に送信することができます。Elasticsearch は、分散型の RESTful 検索及び分析エンジンです。

注意

Fastly ではサードパーティのサービスに関する直接のサポートは行っておりません。詳細については、Fastly のご利用規約をご覧ください。

前提条件

Fastly サービスのログエンドポイントとして Elasticsearch を追加する前に、Elasticsearch がリモートサーバー上で作動していることを確認してください。ログを送信するポートを含むエンドポイント URL (Fastly からのトラフィックを受信できることを確認してください) と、ログの送信先インデックスの名前が必要になります。Elasticsearch の設定に関する詳細については、Elasticsearch 設定ドキュメントを確認してください。

このログエンドポイントは、サポートが有効な Elasticsearch のすべてのバージョンおよび既に有効期限が終了した一部バージョンと連携しています。また、OpenSearch サーバー統合もサポートしています。Elasticsearch と API 互換のその他の配信も機能するかもしれませんが、明示的にテストされておらず、保証はありません。

必須権限

index アクションを介して Bulk API を使用してデータを送信します。基本認証を使用する場合、index アクションを使用するために必要なインデックス権限をユーザーロールに付与するようにしてください。

また、Elasticsearch サーバーのルートパス API へのアクセスも必要です。API は、サーバーのバージョン番号などのメタデータを返します。これにより、統合が各お客様のサーバーに最適なバルクデータ API を選択できます。API へのアクセスにより、お客様が使用する幅広い Elasticsearch バージョンとその他の Elasticsearch との互換性を持つ配信との適切な連携が可能になります。

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

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

  1. Deliver サービス
  2. Compute サービス
  1. リモートログストリーミングの設定に関するガイドをご確認ください。
  2. Elasticsearch エリアで、Create endpoint をクリックします。
  3. Create an Elasticsearch endpoint に次のように入力します。
    • Name フィールドに分かりやすいエンドポイントの名前を入力します。
    • Placement セクションでは、生成される VCL にログコールが配置される場所を選択します。有効な値は Format Version Defaultwaf_debug (waf_debug_log)None です。詳細については、ログ配置の変更に関するガイドをご覧ください。
    • Log format 欄に、Elasticsearch に送信するデータを入力します。 詳細はフォーマットの例のセクションを参照してください。
    • URLフィールドに、ログの送信先のポートを含む Elasticsearch エンドポイント URL を入力します。URL は、Fastly からの TCP トラフィックを受信できるポートで HTTPS を使用し、送信する必要があります。
    • Index フィールドに、ログの送信先となる Elasticsearch インデックス名を入力します。インデックスは、Elasticsearch インデックス形式のルールに従う必要があります。 Fastly は、ポンド記号から始まる中括弧内の strftime 補間変数をサポートしています。例えば、#{%F}では YYYY-MM-DD 形式で今日の日付が補間されます。
    • (オプション) Pipeline フィールドには、インデックス作成前に事前処理変換を適用する Elasticsearch ingest pipeline ID を入力します (例: my_pipeline_id)。
    • (オプション) Maximum logs フィールドに、ゼロでない場合、バッチに追加するログの最大数を入力します。
    • (オプション) Maximum bytes フィールドには、ログバッチの最大サイズを入力します。
    • (オプション) BasicAuth user フィールドには、Basic 認証ユーザー名を入力します。
    • (オプション) BasicAuth password フィールドには、Basic 認証パスワードを入力します。
    • TLS hostname フィールドに、ログの送信先サーバーの証明書を検証するためのホスト名を任意で入力します。これは、証明書のサブジェクト代替名 (SAN) フィールドの1つと同じである必要があります。コモンネーム (CN) はサポートされていません。
    • (オプション) TLS CA certificate フィールドには、オリジンサーバーの証明書が有効であることを確認するために使用する認証機関 (CA) の証明書をコピー&ペーストしてください。アップロードする証明書は PEM 形式である必要があります。周知の認証機関によって署名されてない場合には、証明書のアップロードを熟慮してください。TLS 証明書が周知の機関によって署名されていれば、必要ありません。
    • (オプション) TLS client certificate フィールドには、オリジンサーバーへの認証に使用する TLS クライアント証明書をコピー&ペーストしてください。アップロードする TLS クライアント証明書は、PEM 形式で、クライアント証明書を添付する必要があります。TLS クライアント証明書により、Fastly が接続を実行していることをサーバーが認証できるようになります。
    • (オプション) TLS client key フィールドには、バックエンドサーバーへの認証に使用する TLS クライアントキーをコピー&ペーストしてください。アップロードする TLS クライアントキーは、PEM 形式で、TLS クライアント証明書を添付する必要があります。TLSクライアントキーを使用すると、Fastlyが接続を実行していることをサーバが認証することができます。
  4. Create をクリックして新規のログエンドポイントを作成します。
  5. Activate をクリックして設定への変更をデプロイします。

フォーマットの例

Elasticsearch に送信されるデータは、JSON オブジェクトとして直列化する必要があります。Elasticsearch にデータを送信するための書式指定文字列の例はこちらです。

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
}

翻訳についての注意事項
このガイドは役に立ちましたか?

このフォームを使用して機密性の高い情報を送信しないでください。サポートが必要な場合は、サポートチームまでご連絡ください。このフォームは reCAPTCHA によって保護されており、Google のプライバシーポリシー利用規約が適用されます。