Cloudflare Logpush は、設定可能な HTTP エンドポイントへのログ送信に対応しています。
HTTP エンドポイントへ Logpush する場合、プッシュされたログの認証はお客様側で行う必要があります。たとえば、Logpush 送信先の URL や HTTP ヘッダーにシークレットトークンを指定できます。
-
Cloudflare ダッシュボードで、アカウントまたはドメイン(ゾーンとも呼ばれます)の Logpush ページを開きます。
アカウントの場合: Logpush を開く ↗
ドメイン(ゾーン)の場合: Logpush を開く ↗
-
選んだ範囲に応じて、それぞれ アカウントスコープのデータセット と ゾーンスコープのデータセット を利用できます。
-
Create a Logpush job を選択します。
-
Select a destination で HTTP destination を選びます。
-
ログの送信先となる HTTP endpoint を入力し、Continue を選択します。 - リクエストヘッダーを設定するには
"header_*"URL パラメーターを使えます。たとえば、HTTP エンドポイントへ認証トークンを渡す場合です。 -
ストレージサービスへプッシュするデータセットを選択します。
-
次の手順で、Logpush ジョブを設定します。
- Job name を入力します。
- If logs match では、ログに含めるイベントや除外するイベントを選べます。詳細は フィルター を参照してください。このオプションがないデータセットもあります。
- Send the following fields では、すべてのログをストレージ送信先へプッシュするか、プッシュするログを選ぶかを選べます。
-
Advanced Options では、次の設定ができます。
- ログ内のタイムスタンプフィールドの形式(
RFC3339(デフォルト)、Unix、またはUnixNano)を選びます。 - ログの サンプリングレート を選ぶか、ランダムにサンプリングした割合のログをプッシュします。
CVE-2021-44228のリダクションを有効にします。このオプションは${の出現をすべてx{に置き換えます。
- ログ内のタイムスタンプフィールドの形式(
-
Logpush ジョブの設定が終わったら Submit を選択します。
Logpush ジョブを作成するには、適切なパラメーターを付けて Logpush ジョブ作成エンドポイント URL に POST リクエストを送ります。
対応パラメーターは次のとおりです。
- 他の送信先と同じフィールド:
- dataset(必須): 例:
http_requests。 - name(任意): ジョブ名にはドメイン名を使うことを推奨します。
- output_options(任意): フィールド、サンプルレート、タイムスタンプ形式の設定は ログ出力オプション を参照してください。
- dataset(必須): 例:
- 固有のフィールド:
- destination_conf: ログの送信先です。エンドポイント URL と使用する HTTP ヘッダーで構成します。
"header_*"URL パラメーターは、リクエストヘッダーの設定に使われます。- HTTPS エンドポイントには、設定した
"header_*"URL パラメーターと衝突するカスタム URL パラメーターを付けられません。 - これらのパラメーターは正しく URL エンコードしてください(空白は
"%20"を使います)。そうしないと、一部の特殊文字が誤ってデコードされることがあります。
- HTTPS エンドポイントには、設定した
destination_confには、特別な"header_*"パラメーターに加えて、ほかの URL パラメーターを付けられます。- URL エンコードされていない特殊文字は、アップロード時にエンコードされます。
- 例:
https://logs.example.com?header_Authorization=Basic%20REDACTED&tags=host:theburritobot.com,dataset:http_requests
- max_upload_bytes(任意): ログバッチの非圧縮時の最大ファイルサイズです。値は 5 MB 以上 1 GB 以下である必要があります。最小ファイルサイズは設定できません。そのため、ログファイルはこのバッチサイズよりかなり小さいことがあります。
- max_upload_records(任意): バッチあたりの最大ログ行数です。1,000 行以上 1,000,000 行以下である必要があります。バッチあたりの最小行数は指定できません。そのため、ログファイルはこの値よりかなり少ない行数になることがあります。
- destination_conf: ログの送信先です。エンドポイント URL と使用する HTTP ヘッダーで構成します。
cURL を使ったリクエスト例です。
Required API token permissions
At least one of the following token permissions is required:Logs Write
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/logpush/jobs" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"name": "<DOMAIN_NAME>",
"destination_conf": "https://logs.example.com?header_Authorization=Basic%20REDACTED&tags=host:theburritobot.com,dataset:http_requests",
"output_options": {
"field_names": [
"ClientIP",
"ClientRequestHost",
"ClientRequestMethod",
"ClientRequestURI",
"EdgeEndTimestamp",
"EdgeResponseBytes",
"EdgeResponseStatus",
"EdgeStartTimestamp",
"RayID"
],
"timestamp_format": "rfc3339"
},
"max_upload_bytes": 5000000,
"max_upload_records": 1000,
"dataset": "http_requests",
"enabled": true
}'レスポンス:
{
"errors": [],
"messages": [],
"result": {
"id": <JOB_ID>,
"dataset": "http_requests",
"kind": "",
"max_upload_bytes": 5000000,
"max_upload_records": 1000,
"enabled": true,
"name": "<DOMAIN_NAME>",
"output_options": {
"field_names": ["ClientIP", "ClientRequestHost", "ClientRequestMethod", "ClientRequestURI", "EdgeEndTimestamp", "EdgeResponseBytes", "EdgeResponseStatus" ,"EdgeStartTimestamp", "RayID"],
"timestamp_format": "rfc3339"
},
"destination_conf": "https://logs.example.com?header_Authorization=Basic%20REDACTED&tags=host:theburritobot.com,dataset:http_requests",
"last_complete": null,
"last_error": null,
"error_message": null
},
"success": true
}ジョブの更新(有効化と無効化を含む)は、cURL で Logpush を管理する を参照してください。