Cloudflare Logpush は、Cloudflare ダッシュボードまたは API から、次を含む S3 互換の保存先へログをプッシュできます。
- Alibaba Cloud OSS ↗
- Backblaze B2 ↗
- DigitalOcean Spaces ↗
- IBM Cloud Object Storage ↗
- JD Cloud Object Storage Service ↗
- Linode Object Storage ↗
- Oracle Cloud Object Storage ↗
- オンプレミスの Ceph Object Gateway ↗
Logpush と現行の本番 API の詳細は、Cloudflare Logpush のドキュメントを参照してください。
-
Cloudflare ダッシュボードで、アカウントまたはドメイン(ゾーンとも呼ばれます)の Logpush ページを開きます。
アカウントの場合: Logpush を開く ↗
ドメイン(ゾーン)の場合: Logpush を開く ↗
-
選んだ範囲に応じて、それぞれ アカウントスコープのデータセット と ゾーンスコープのデータセット を利用できます。
-
Create a Logpush job を選択します。
-
Select a destination で S3-Compatible を選びます。
-
次の保存先情報を入力または選択します。
- Bucket - S3 互換バケット名
- Path - ストレージコンテナ内のバケット位置
- Organize logs into daily subfolders(推奨)
- Endpoint URL - バケット名やパスを含まない URL。例:
sfo2.digitaloceanspaces.com。 - Bucket region
- Access Key ID
- Secret Access Key
保存先の詳細を入力したら、Continue を選択します。
-
ストレージサービスへプッシュするデータセットを選択します。
-
次のステップで Logpush ジョブを設定します。
- Job name を入力します。
- If logs match では、ログに含めるイベントや除外するイベントを選べます。詳細は フィルター を参照してください。このオプションがないデータセットもあります。
- Send the following fields では、すべてのログをストレージ保存先へプッシュするか、プッシュするログを選ぶかを選べます。
-
Advanced Options では、次の設定ができます。
- ログ内のタイムスタンプフィールドの形式(
RFC3339(デフォルト)、Unix、またはUnixNano)を選びます。 - ログの サンプリングレート を選ぶか、ランダムにサンプリングした割合のログをプッシュします。
CVE-2021-44228のリダクションを有効にします。このオプションは${の出現をすべてx{に置き換えます。
- ログ内のタイムスタンプフィールドの形式(
-
Logpush ジョブの設定が終わったら Submit を選択します。
S3 互換エンドポイントを設定する手順は次のとおりです。
- 適切なエンドポイント URL と認証パラメーターでジョブを作成します。
- ジョブを有効にして、ログのプッシュを開始します。
Logpush ジョブの読み取りや設定の前に、Log Share の権限が有効になっていることを確認してください。詳細は Roles のセクション を参照してください。
ジョブを作成するには、Logpush ジョブのエンドポイントへ、次のフィールドを指定して POST リクエストを送ります。
- name(任意) - ジョブ名にはドメイン名を使います。
- destination_conf - エンドポイント名、バケット名、バケットパス、リージョン、access-key-id、secret-access-key からなるログ保存先です。次の文字列形式を使います。
"s3://<BUCKET_NAME>/<BUCKET_PATH>?region=<REGION>&access-key-id=<ACCESS_KEY_ID>&secret-access-key=<SECRET_ACCESS_KEY>&endpoint=<ENDPOINT_URL>"- dataset - 受け取りたいログのカテゴリです。対応データセットの一覧は データセット を参照してください。
- output_options(任意) - フィールド、サンプルレート、タイムスタンプ形式の設定は ログ出力オプション を参照してください。
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": "s3://<BUCKET_NAME>/<BUCKET_PATH>?region=<REGION>&access-key-id=<ACCESS_KEY_ID>&secret-access-key=<SECRET_ACCESS_KEY>&endpoint=<ENDPOINT_URL>",
"output_options": {
"field_names": [
"ClientIP",
"ClientRequestHost",
"ClientRequestMethod",
"ClientRequestURI",
"EdgeEndTimestamp",
"EdgeResponseBytes",
"EdgeResponseStatus",
"EdgeStartTimestamp",
"RayID"
],
"timestamp_format": "rfc3339"
},
"dataset": "http_requests",
"enabled": true
}'レスポンス:
{
"errors": [],
"messages": [],
"result": {
"id": <JOB_ID>,
"dataset": "http_requests",
"kind": "",
"enabled": true,
"name": "<DOMAIN_NAME>",
"output_options": {
"field_names": ["ClientIP", "ClientRequestHost", "ClientRequestMethod", "ClientRequestURI", "EdgeEndTimestamp","EdgeResponseBytes", "EdgeResponseStatus", "EdgeStartTimestamp", "RayID"],
"timestamp_format": "rfc3339"
},
"destination_conf": "s3://<BUCKET_NAME>/<BUCKET_PATH>?region=<REGION>&access-key-id=<ACCESS_KEY_ID>&secret-access-key=<SECRET_ACCESS_KEY>&endpoint=<ENDPOINT_URL>",
"last_complete": null,
"last_error": null,
"error_message": null
},
"success": true
}ジョブの更新(有効化と無効化を含む)は、cURL で Logpush を管理する を参照してください。