cURLを使用したLogpushの管理
cURLを使用してコマンドラインからCloudflare Logpushサービスを管理できます。
始める前に、以下のドキュメントを確認してください:
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": "" }}次のステップでジョブを作成する際に、このファイルに含まれるトークンを提供する必要があります。
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(×tamps=rfc3339)に設定すると:- Google BigQueryの使用。
- Sumo Logic内での自動タイムスタンプ解析;詳細についてはSumo Logicのタイムスタンプ ↗を参照してください。
- 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}特定のジョブに関する情報を取得することから始めます。ジョブIDを使用します:
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を使用して取得できます:
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 .次に、ジョブを有効にするために更新リクエストを送信します:
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フィールドには最後のバッチのログが宛先に正常に送信された時間が表示されます:
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}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を使用して特定のジョブを取得します:
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}すべてのデータセットのすべてのジョブを取得します:
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 } ]}フィールドを追加(または削除)したり、タイムスタンプ形式を変更したり、Log4j - CVE-2021-44228脆弱性に対する保護を有効にしたりする場合は、まずゾーンの現在のoutput_optionsを取得します。
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オプションを有効にします。
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}