コンテンツにスキップ

cURLを使用したLogpushの管理

cURLを使用してコマンドラインからCloudflare Logpushサービスを管理できます。

始める前に、以下のドキュメントを確認してください:

ステップ1 - 所有権チャレンジの取得

Terminal window
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 .

パラメータ

  • destination_conf - 詳細についてはDestinationを参照してください。

レスポンス

チャレンジファイルが宛先に書き込まれ、ファイル名がレスポンスに含まれます(ファイル名は宛先に適したパスとして表現される場合があります)。例えば:

{
"success": true,
"errors": [],
"messages": [],
"result": {
"filename": "burritobot/logs/ownership-challenge.txt",
"valid": true,
"message": ""
}
}

次のステップでジョブを作成する際に、このファイルに含まれるトークンを提供する必要があります。

ステップ2 - ジョブの作成

Terminal window
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", "ClientRequestHost", "ClientRequestMethod", "ClientRequestURI", "EdgeEndTimestamp","EdgeResponseBytes", "EdgeResponseStatus", "EdgeStartTimestamp", "RayID"],
"timestamp_format": "rfc3339"
},
"ownership_challenge":"00000000000000000000"}' | jq .

パラメータ

  • name (オプション) - ジョブ名としてドメイン名を使用することをお勧めします。ジョブが作成された後は名前を変更できません。
  • destination_conf - 詳細についてはDestinationを参照してください。
  • dataset - 受信したいログのカテゴリ。サポートされているデータセットの完全なリストについてはLog fieldsを参照してください。このパラメータはジョブが作成された後は変更できません。
  • output_options (オプション) - Log Output Optionsを参照してください。
    • 通常、必要なフィールドとタイムスタンプ形式が含まれます。
    • タイムスタンプ形式をRFC 3339&timestamps=rfc3339)に設定すると:
  • ownership_challenge - 宛先の所有権を証明するために必要なチャレンジトークン。
  • kind (オプション) - LogpushとEdge Log Deliveryジョブを区別するために使用されます。詳細についてはKindを参照してください。
  • filter (オプション) - 詳細についてはFiltersを参照してください。

レスポンス

レスポンスには新しく作成されたジョブIDが含まれます。例えば:

{
"errors": [],
"messages": [],
"result": {
"id": 146,
"dataset": "http_requests",
"enabled": false,
"name": "<DOMAIN_NAME>",
"output_options": {
"field_names": ["ClientIP", "ClientRequestHost", "ClientRequestMethod", "ClientRequestURI", "EdgeEndTimestamp","EdgeResponseBytes", "EdgeResponseStatus", "EdgeStartTimestamp", "RayID"],
"timestamp_format": "rfc3339"
},
"destination_conf": "s3://<BUCKET_PATH>?region=us-west-2",
"last_complete": null,
"last_error": null,
"error_message": null
},
"success": true
}

ステップ3 - ジョブの有効化(更新)

特定のジョブに関する情報を取得することから始めます。ジョブIDを使用します:

Terminal window
curl --silent --request GET \
"https://api.cloudflare.com/client/v4/zones/{zone_id}/logpush/jobs/146" \
--header "X-Auth-Email: <EMAIL>" \
--header "X-Auth-Key: <API_KEY>" | jq .

レスポンス

{
"errors": [],
"messages": [],
"result": {
"id": 146,
"dataset": "http_requests",
"enabled": false,
"name": "<DOMAIN_NAME>",
"output_options": {
"field_names": ["ClientIP", "ClientRequestHost", "ClientRequestMethod", "ClientRequestURI", "EdgeEndTimestamp","EdgeResponseBytes", "EdgeResponseStatus", "EdgeStartTimestamp", "RayID"],
"timestamp_format": "rfc3339"
},
"destination_conf": "s3://<BUCKET_PATH>?region=us-west-2",
"last_complete": null,
"last_error": null,
"error_message": null
},
"success": true
}

デフォルトでは、ジョブは有効になっていません("enabled": false)。

ジョブIDを忘れた場合は、ゾーンIDを使用して取得できます:

Terminal window
curl --silent --request GET \
"https://api.cloudflare.com/client/v4/zones/{zone_id}/logpush/jobs" \
--header "X-Auth-Email: <EMAIL>" \
--header "X-Auth-Key: <API_KEY>" | jq .

次に、ジョブを有効にするために更新リクエストを送信します:

Terminal window
curl --silent --request PUT \
"https://api.cloudflare.com/client/v4/zones/{zone_id}/logpush/jobs/146" \
--header "X-Auth-Email: <EMAIL>" \
--header "X-Auth-Key: <API_KEY>" \
--header "Content-Type: application/json" \
--data '{"enabled":true}' | jq .

レスポンス

{
"errors": [],
"messages": [],
"result": {
"id": 146,
"dataset": "http_requests",
"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_PATH>?region=us-west-2",
"last_complete": null,
"last_error": null,
"error_message": null
},
"success": true
}

ジョブが有効になると、数分以内にログを受信し始め、その後できるだけ早くバッチで受信します。非常に高いリクエストボリュームのゾーンでは、最初にログを受信するまでに数時間かかる場合があります。

enabledを変更するだけでなく、output_optionsの値も更新できます。destination_confを変更するには、所有権チャレンジをリクエストし、更新リクエストに関連するトークンを提供する必要があります。現在のジョブを削除して新しいジョブを作成することもできます。

ジョブが有効になり、実行を開始すると、last_completeフィールドには最後のバッチのログが宛先に正常に送信された時間が表示されます:

ジョブIDを取得してlast_complete情報を確認するリクエスト

Terminal window
curl --silent --request GET \
"https://api.cloudflare.com/client/v4/zones/{zone_id}/logpush/jobs/146" \
--header "X-Auth-Email: <EMAIL>" \
--header "X-Auth-Key: <API_KEY>" | jq .

レスポンス

{
"errors": [],
"messages": [],
"result": {
"id": 146,
"dataset": "http_requests",
"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_PATH>?region=us-west-2",
"last_complete": "2018-08-09T21:26:00Z",
"last_error": null,
"error_message": null
},
"success": true
}

オプション - ジョブの削除

Terminal window
curl --silent --request DELETE \
"https://api.cloudflare.com/client/v4/zones/{zone_id}/logpush/jobs/146" \
--header "X-Auth-Email: <EMAIL>" \
--header "X-Auth-Key: <API_KEY>" | jq .

ジョブを削除する際は、この操作は元に戻せないため注意してください。

レスポンス

{
"errors": [],
"messages": [],
"result": {},
"success": true
}

オプション - ジョブの取得

ジョブIDを使用して特定のジョブを取得します:

Terminal window
curl --silent --request GET \
"https://api.cloudflare.com/client/v4/zones/{zone_id}/logpush/jobs/146" \
--header "X-Auth-Email: <EMAIL>" \
--header "X-Auth-Key: <API_KEY>" | jq .

レスポンス

{
"errors": [],
"messages": [],
"result": [
{
"id": 146,
"dataset": "http_requests",
"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_PATH>?region=us-west-2",
"last_complete": null,
"last_error": null,
"error_message": null
}
],
"success": true
}

すべてのデータセットのすべてのジョブを取得します:

Terminal window
curl --silent --request GET \
"https://api.cloudflare.com/client/v4/zones/{zone_id}/logpush/jobs" \
--header "X-Auth-Email: <EMAIL>" \
--header "X-Auth-Key: <API_KEY>" | jq .

レスポンス

{
"errors": [],
"messages": [],
"result": [
{
"id": 8029,
"dataset": "spectrum_events",
"enabled": true,
"name": "<DOMAIN_NAME>",
"output_options": {
"field_names": ["Application", "ClientAsn", "ClientIP", "ColoCode", "Event", "OriginIP", "Status"],
},
"destination_conf": "s3://<BUCKET_PATH>?region=us-west-2",
"last_complete": "2019-10-01T00:25:00Z",
"last_error": null,
"error_message": null
},
{
"id": 146,
"dataset": "http_requests",
"enabled": false,
"name": "<DOMAIN_NAME>",
"output_options": {
"field_names": ["ClientIP", "ClientRequestHost", "ClientRequestMethod", "ClientRequestURI", "EdgeEndTimestamp","EdgeResponseBytes", "EdgeResponseStatus", "EdgeStartTimestamp", "RayID"],
"timestamp_format": "rfc3339"
},
"destination_conf": "s3://<BUCKET_PATH>?region=us-west-2",
"last_complete": "2019-09-24T21:15:00Z",
"last_error": null,
"error_message": null
}
]
}

オプション - output_optionsの更新

フィールドを追加(または削除)したり、タイムスタンプ形式を変更したり、Log4j - CVE-2021-44228脆弱性に対する保護を有効にしたりする場合は、まずゾーンの現在のoutput_optionsを取得します。

Terminal window
curl --silent --request GET \
"https://api.cloudflare.com/client/v4/zones/{zone_id}/logpush/jobs/{job_id}" \
--header "X-Auth-Key: <API_KEY>" \
--header "X-Auth-Email: <EMAIL>" | jq .

レスポンス

{
"errors": [],
"messages": [],
"result": {
"id": 146,
"dataset": "http_requests",
"logstream": true,
"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_PATH>?region=us-west-2",
"last_complete": "2021-12-14T19:56:49Z",
"last_error": null,
"error_message": null
},
"success": true
}

次に、必要に応じてoutput_optionsを編集し、PUTリクエストを作成します。以下の例では、CVE-2021-44228の赤actionオプションを有効にします。

Terminal window
curl --silent --request PUT \
"https://api.cloudflare.com/client/v4/zones/{zone_id}/logpush/jobs/{job_id}" \
--header "X-Auth-Key: <API_KEY>" \
--header "X-Auth-Email: <EMAIL>" \
--header "Content-Type: application/json" \
--data '{
"output_options": {
"field_names": ["ClientIP", "ClientRequestHost", "ClientRequestMethod", "ClientRequestURI", "EdgeEndTimestamp","EdgeResponseBytes", "EdgeResponseStatus", "EdgeStartTimestamp", "RayID"],
"timestamp_format": "rfc3339"
}
}

現在のところ、CVE-2021-44228オプションはUIを通じて利用できず、UIを通じてLogpushジョブを更新するとこのオプションが削除されます。

レスポンス

{
"errors": [],
"messages": [],
"result": {
"id": 146,
"dataset": "http_requests",
"logstream": true,
"kind": "",
"enabled": true,
"name": null,
"output_options": {
"field_names": ["ClientIP", "ClientRequestHost", "ClientRequestMethod", "ClientRequestURI", "EdgeEndTimestamp","EdgeResponseBytes", "EdgeResponseStatus", "EdgeStartTimestamp", "RayID"],
"timestamp_format": "rfc3339"
},
"destination_conf": "s3://<BUCKET_PATH>?region=us-west-2",
"last_complete": "2021-12-14T20:02:19Z",
"last_error": null,
"error_message": null
},
"success": true
}