API 設定
以下の表は、Logpush と Edge Log Delivery ジョブの両方で利用可能なジョブ操作をまとめたものです。アカウントスコープのデータセットは /accounts/{account_id} を使用し、ゾーンスコープのデータセットは /zone/{zone_id} を使用してください。詳細については、ログフィールド ページを参照してください。
{zone_id} 引数はゾーン ID(16進数文字列)です。{account_id} 引数は組織 ID(16進数文字列)です。これらの引数は、API のゾーンエンドポイントを使用して見つけることができます。
{job_id} 引数は数値のジョブ ID です。{dataset_id} 引数はログカテゴリを示します(例: http_requests, spectrum_events, firewall_events, nel_reports, または dns_logs)。
| 操作 | 説明 | API |
|---|---|---|
POST | ジョブを作成 | ゾーンスコープのジョブ / アカウントスコープのジョブ |
GET | ジョブを取得 | ゾーンスコープのジョブ / アカウントスコープのジョブ |
GET | すべてのデータセットのすべてのジョブを取得 | ゾーンスコープのジョブ / アカウントスコープのジョブ |
GET | データセットのすべてのジョブを取得 | ゾーンスコープのジョブ / アカウントスコープのジョブ |
GET | データセットのすべての利用可能なフィールドを取得 | ゾーンスコープのフィールド / アカウントスコープのフィールド |
PUT | ジョブを更新 | ゾーンスコープのジョブ / アカウントスコープのジョブ |
DELETE | ジョブを削除 | ゾーンスコープのジョブ / アカウントスコープのジョブ |
POST | 宛先が存在するか確認 | ゾーンスコープのジョブ / アカウントスコープのジョブ |
POST | 所有権チャレンジを取得 | ゾーンスコープのジョブ / アカウントスコープのジョブ |
POST | 所有権チャレンジを検証 | ゾーンスコープのジョブ / アカウントスコープのジョブ |
POST | ログオプションを検証 | ゾーンスコープのジョブ / アカウントスコープのジョブ |
具体的な例については、Logpush の例のチュートリアルを参照してください。
Logpush API は、他の Cloudflare API と同様に認証情報を必要とします。
curl --silent "https://api.cloudflare.com/client/v4/zones/{zone_id}/logpush/jobs" \--header "X-Auth-Email: <EMAIL>" \--header "X-Auth-Key: <API_KEY>"新しいジョブを作成する前に、宛先の所有権を証明する必要があります。
宛先に所有権チャレンジトークンを発行するには:
curl --silent --request POST \"https://api.cloudflare.com/client/v4/zones/{zone_id}/logpush/ownership" \--header "X-Auth-Email: <EMAIL>" \--header "X-Auth-Key: <API_KEY>" \--header "Content-Type: application/json" \--data '{"destination_conf":"s3://<BUCKET_PATH>?region=us-west-2"}' | jq .チャレンジファイルが宛先に書き込まれ、ファイル名はレスポンスに含まれます(ファイル名は、宛先に適した場合はパスとして表現されることがあります):
{ "errors": [], "messages": [], "result": { "valid": true, "message": "", "filename": "<path-to-challenge-file>.txt" }, "success": true}ジョブを作成する際には、ファイルに含まれるトークンを提供する必要があります。
必要な destination_conf パラメータを介して、クラウドサービスプロバイダーの宛先を指定できます。
- Cloudflare R2: バケットパス + アカウント ID + R2 アクセスキー ID + R2 シークレットアクセスキー; 例:
r2://<BUCKET_PATH>?account-id=<ACCOUNT_ID>&access-key-id=<R2_ACCESS_KEY_ID>&secret-access-key=<R2_SECRET_ACCESS_KEY> - AWS S3: バケット + オプションのディレクトリ + リージョン + ポリシーで必要な場合のオプションの暗号化パラメータ; 例:
s3://bucket/[dir]?region=<REGION>[&sse=AES256] - Datadog: Datadog エンドポイント URL + Datadog API キー + オプションのパラメータ; 例:
datadog://<DATADOG_ENDPOINT_URL>?header_DD-API-KEY=<DATADOG_API_KEY>&ddsource=cloudflare&service=<SERVICE>&host=<HOST>&ddtags=<TAGS> - Google Cloud Storage: バケット + オプションのディレクトリ; 例:
gs://bucket/[dir] - Microsoft Azure: サービスレベルの SAS URL で
httpsをazureに置き換え、クエリ文字列の前にオプションのディレクトリを追加; 例:azure://<BlobContainerPath>/[dir]?<QueryString> - New Relic: US 用の
https://log-api.newrelic.com/log/v1または EU 用のhttps://log-api.eu.newrelic.com/log/v1の New Relic エンドポイント URL + ライセンスキー + フォーマット; 例: US の場合"https://log-api.newrelic.com/log/v1?Api-Key=<NR_LICENSE_KEY>&format=cloudflare"、EU の場合"https://log-api.eu.newrelic.com/log/v1?Api-Key=<NR_LICENSE_KEY>&format=cloudflare" - Splunk: Splunk エンドポイント URL + Splunk チャンネル ID + insecure-skip-verify フラグ + Splunk sourcetype + Splunk 認証トークン; 例:
splunk://<SPLUNK_ENDPOINT_URL>?channel=<SPLUNK_CHANNEL_ID>&insecure-skip-verify=<INSECURE_SKIP_VERIFY>&sourcetype=<SOURCE_TYPE>&header_Authorization=<SPLUNK_AUTH_TOKEN> - Sumo Logic:
httpsをsumoに置き換えた HTTP ソースアドレス URL; 例:sumo://<SumoEndpoint>/receiver/v1/http/<UniqueHTTPCollectorCode>
R2、S3、Google Cloud Storage、および Azure では、特別な文字列 {DATE} を URL パスに使用することで、ログを日別のサブディレクトリに分けることができます; 例: s3://mybucket/logs/{DATE}?region=us-east-1&sse=AES256 または azure://myblobcontainer/logs/{DATE}?[QueryString]。これは YYYYMMDD 形式の日付に置き換えられます(例: 20180523)。
クラウドストレージプロバイダーの値に関する詳細は、以下の規約を参照してください:
- AWS S3 CLI ↗ (S3Uri パス引数タイプ)
- Google Cloud Storage CLI ↗ (リソースへのアクセス構文)
- Microsoft Azure Shared Access Signature ↗
- Sumo Logic HTTP Source ↗
宛先がすでに使用中かどうかを確認するには:
curl --silent --request POST \"https://api.cloudflare.com/client/v4/zones/{zone_id}/logpush/validate/destination/exists" \--header "X-Auth-Email: <EMAIL>" \--header "X-Auth-Key: <API_KEY>" \--header "Content-Type: application/json" \--data '{"destination_conf":"s3://foo"}' | jq .レスポンス
{ "errors": [], "messages": [], "result": { "exists": false }, "success": true}kind パラメータ(オプション)は、Logpush ジョブと Edge Log Delivery ジョブを区別するために使用されます。Logpush ジョブの場合、このパラメータは空のままにするか、省略できます。Edge Log Delivery ジョブの場合は、"kind": "edge" を設定します。現在、Edge Log Delivery は http_requests データセットのみサポートされています。
curl --silent --request POST \"https://api.cloudflare.com/client/v4/zones/{zone_id}/logpush/jobs" \--header "X-Auth-Email: <EMAIL>" \--header "X-Auth-Key: <API_KEY>" \--header "Content-Type: application/json" \--data '{ "name": "<DOMAIN_NAME>", "destination_conf": "s3://<BUCKET_PATH>?region=us-west-2", "dataset": "http_requests", "output_options": { "field_names": ["ClientIP", "ClientRequesrHost", "ClientRequestMethod", " ClientRequestURI", "EdgeEndTimestamp", "EdgeResponseBytes", "EdgeResponseStatus", "EdgeStartTimestamp","RayID"], "timestamp_format": "rfc3339" }, "kind": "edge"}' | jq .Logpull_options は、カスタムログフォーマット output_options に置き換えられました。これらのオプションを構成し、既存のジョブをこれらのオプションを使用するように更新する方法については、ログ出力オプション ドキュメントを参照してください。
まだ logpull_options を使用している場合、カスタマイズできるオプションは次のとおりです:
- フィールド(オプション):現在利用可能なフィールドについては、ログフィールドを参照してください。フィールドのリストは、API からも直接アクセスできます:
https://api.cloudflare.com/client/v4/zones/{zone_id}/logpush/datasets/{dataset_id}/fields。デフォルトフィールド:https://api.cloudflare.com/client/v4/zones/{zone_id}/logpush/datasets/{dataset_id}/fields/default。 - タイムスタンプ形式(オプション):タイムスタンプフィールドが返される形式。値のオプション:
unixnano(デフォルト)、unix、rfc3339。 - CVE-2021-44228 のためのレダクション(オプション):このオプションは、
${のすべての出現をx{に置き換えます。これを有効にするには、CVE-2021-44228=trueを設定します。
選択した logpull_options が有効かどうかを確認するには:
curl --silent --request POST \"https://api.cloudflare.com/client/v4/zones/{zone_id}/logpush/validate/origin" \--header "X-Auth-Email: <EMAIL>" \--header "X-Auth-Key: <API_KEY>" \--header "Content-Type: application/json" \--data '{ "logpull_options": "fields=RayID,ClientIP,EdgeStartTimestamp×tamps=rfc3339&CVE-2021-44228=true", "dataset": "http_requests"}' | jq .レスポンス
{ "errors": [], "messages": [], "result": { "valid": true, "message": "", }, "success": true}フィルターを使用して、ログに含めるイベントや除外するイベントを選択します。詳細については、フィルターを参照してください。
値は 0.0(排他的)から 1.0(包括的)までの範囲です。sample=0.1 は すべてのレコードの 10%(10 件中 1 件)を返す ことを意味します。デフォルト値は 1 で、ログはサンプリングされません。
これらのパラメータは、宛先に特定の要件がある場合にバッチサイズを制御するために使用できます。ファイルは、最初にヒットしたパラメータに基づいて送信されます。これらのオプションが設定されていない場合、システムは内部のデフォルト(30 秒、100,000 レコード、または宛先で定義されたグローバル制限)を使用します。
- max_upload_bytes (オプション): ログのバッチの最大未圧縮ファイルサイズ。この設定値は5MBから1GBの間でなければなりません。最小ファイルサイズを設定することはできません; これは、ログファイルがこのバッチサイズよりもはるかに小さい可能性があることを意味します。
- max_upload_records (オプション): バッチごとの最大ログ行数。この設定は1000行から1,000,000行の間でなければなりません。バッチごとの最小ログ行数を指定することはできません; これは、ログファイルがこの数よりもはるかに少ない行を含む可能性があることを意味します。
- max_upload_interval_seconds (オプション): ログバッチの最大間隔(秒)。この設定は30秒から300秒の間でなければなりません。ログバッチの最小間隔を指定することはできません; これは、ログファイルがこの間隔よりも短い間隔で送信される可能性があることを意味します。
HTTPリクエストログエントリにカスタムフィールドをHTTPリクエストヘッダー、HTTPレスポンスヘッダー、およびクッキーの形式で追加できます。カスタムフィールドの設定は、HTTPリクエストデータセットを使用するゾーン内のすべてのLogpushジョブに適用されます。詳細については、カスタムフィールドを参照してください。
以下のLogpushアクションはCloudflare監査ログに記録されます: ジョブの作成、更新、および削除。