Docs
ドキュメントを検索...⌘K

Cloudflare Logpush

Cloudflare Logpush は HTTP リクエストログを Ahrefs に自動送信します。 高トラフィックのサイトには推奨されますが、Cloudflare エンタープライズ プランが必要です。

前提条件

  • 監視したいゾーンに Cloudflare エンタープライズ プランが適用されていること。
  • 次の権限を持つ Cloudflare API トークン:
    • ゾーン → ゾーン → 読み取り
    • Zone → Logs → Edit
  • 手動セットアップの場合のみ:セットアップコマンドがCloudflareの設定を読み取り・更新するために使用する、ローカルにインストールされたjq

Cloudflare APIトークンの取得

正しいアカウントでCloudflareダッシュボードにログインしていることを確認してください。 次に https://dash.cloudflare.com/profile/api-tokens ページに移動し、右上にある Create Token ボタンを見つけてクリックしてください:

トークンを作成

続いて、カスタムトークンの作成フローに進みます:

カスタムトークンを作成

以下の情報を入力してください:

  • APIトークン名:ahrefs-bot-analytics
  • 以下の権限を付与してください:
    • Ahrefs Bot Analytics にログをプッシュする Logpush ジョブを設定できるように、Zone / Logs / Edit を有効にします
    • 設定対象のゾーンを特定できるように、Zone / Zone / Read を付与します
  • Zone Resources は Include / All Zones に設定できます。もしくは、ウェブサイトのドメインに対応するゾーンを選択してください。
トークンの設定

次に Continue to summary ボタンをクリックします。サマリーは次のようになります:

トークンのサマリー

Create Token ボタンをクリックし、生成されたトークンをクリップボードにコピーして、次の手順で使用してください。

詳しくは、Cloudflare のドキュメント「API トークンの作成方法」をご覧ください。

自動セットアップ

  1. Ahrefs で プロジェクト設定 → Bot Analytics に移動します。
  2. 方法として Cloudflare Logpush を選択します。
  3. Cloudflare API トークンを貼り付け、接続 をクリックします。

Ahrefs はトークンを使用して次を行います:

  1. プロジェクトのドメインに一致するゾーンを特定します。
  2. 既存の Logpush ジョブをチェック.
  3. Ahrefs にログを送信する新しいジョブを作成します。
  4. ボット検証ヘッダー(signaturesignature-inputsignature-agent)がログに含まれるよう、ゾーンにカスタムログフィールドルールを追加します。 ゾーン上の既存ルールは保持されます。

info

お客様のトークンは一度使用され、保存されません。

手動セットアップ

API トークンを提供したくない場合は、Cloudflare API を使って Logpush ジョブを手動で設定できます。

ステップ 1 — APIトークンを取得する

  1. Cloudflare ダッシュボード に移動し、ウェブサイトのドメインを選択してください。

  2. 「API トークンを取得」をクリックし、以下の権限で新しいトークンを作成してください。

    • ゾーン → ゾーン → 読み取り
    • Zone → Logs → Edit

    詳しい手順は、API トークンの取得 を参照してください。

info

Zone ID を調べる必要はありません。 これらのコマンドは、ゾーン → ゾーン → 読み取り 権限を使って、ドメインからゾーンを特定します。

ステップ 2 — Logpush ジョブを作成

API トークンを最初のブロックに入力し、その後、以下の各ブロックをターミナルで1つずつ実行して、いずれもエラーなく完了することを確認してください。 これらを組み合わせると、ゾーンを特定し、Logpush ジョブを作成し、自動設定で説明されているカスタムログフィールドルールを追加できます。 プロジェクトの詳細が事前入力された正確なコマンドは、プロジェクト設定 → ボット分析 → 手動で設定で確認できます。

export CF_TOKEN="<your Cloudflare API token>"
BASE="https://api.cloudflare.com/client/v4"

Find the Cloudflare zone for yourwebsite.com

ZONE_ID=$(curl -s --fail-with-body "$BASE/zones?name=yourwebsite.com&status=active&match=all" \
  -H "Authorization: Bearer $CF_TOKEN" | jq -r '.result[0].id // error("no active Cloudflare zone found for yourwebsite.com")')

echo "ZONE_ID=$ZONE_ID"

Remove the existing Logpush job if present

OLD_JOB_ID=$(curl -s --fail-with-body "$BASE/zones/$ZONE_ID/logpush/jobs" \
  -H "Authorization: Bearer $CF_TOKEN" | jq -r '([(.result // [])[] | select(.name == "ahrefs-web-analytics-http-requests")])[0].id // ""')

echo "OLD_JOB_ID=$OLD_JOB_ID"
if [ -n "$OLD_JOB_ID" ]; then
  curl -s --fail-with-body "$BASE/zones/$ZONE_ID/logpush/jobs/$OLD_JOB_ID" -X DELETE \
    -H "Authorization: Bearer $CF_TOKEN"
fi

Create the Logpush job

curl -s --fail-with-body "$BASE/zones/$ZONE_ID/logpush/jobs" -X POST \
  -H "Authorization: Bearer $CF_TOKEN" \
  -H "Content-Type: application/json" \
  --data-binary '{"name":"ahrefs-web-analytics-http-requests","destination_conf":"https://analytics.ahrefs.com/api/cf_logpush/http_requests?header_x-ahrefs-web-analytics-property=YOUR_PROPERTY_KEY","dataset":"http_requests","frequency":"high","filter":"{\"where\":{\"or\":[{\"key\":\"ClientRequestHost\",\"operator\":\"eq\",\"value\":\"yourwebsite.com\"},{\"key\":\"ClientRequestHost\",\"operator\":\"endsWith\",\"value\":\".yourwebsite.com\"}]}}","output_options":{"field_names":["ClientIP","ClientRequestMethod","ClientRequestHost","ClientRequestProtocol","ClientRequestScheme","ClientRequestURI","ClientRequestPath","ClientRequestUserAgent","ClientRequestReferer","EdgeStartTimestamp","EdgeEndTimestamp","EdgeResponseStatus","EdgeResponseBytes","EdgeResponseContentType","EdgeTimeToFirstByteMs","ClientCountry","ClientCity","ClientASN","ClientDeviceType","ClientRegionCode","BotScore","BotScoreSrc","BotTags","VerifiedBotCategory","RayID","RequestHeaders"],"timestamp_format":"unixnano"},"enabled":true}'

Add the custom log fields rule

RULES=$(curl -s --fail-with-body "$BASE/zones/$ZONE_ID/rulesets/phases/http_log_custom_fields/entrypoint" \
  -H "Authorization: Bearer $CF_TOKEN" | jq -c '.result.rules // []')

echo "RULES=$RULES"
BODY=$(jq -nc --argjson rules "$RULES" \
  '{rules: ([$rules[] | select(.description != "ahrefs-web-analytics-web-bot-auth-signature")] + [{"action":"log_custom_field","expression":"true","description":"ahrefs-web-analytics-web-bot-auth-signature","action_parameters":{"request_fields":[{"name":"signature"},{"name":"signature-input"},{"name":"signature-agent"}]}}])}')

curl -s --fail-with-body "$BASE/zones/$ZONE_ID/rulesets/phases/http_log_custom_fields/entrypoint" -X PUT \
  -H "Authorization: Bearer $CF_TOKEN" \
  -H "Content-Type: application/json" \
  --data-binary "$BODY"

warning

destination_conf の URL とプロパティキーは、プロジェクトごとに固有です。 正しい値を確実に使用するために、プロジェクト設定 → ボット分析ページから正確なコマンドをコピーしてください。

ステップ 3 — 接続を確認

ジョブを作成したら、Ahrefs の プロジェクト設定 → Bot Analytics に戻り、ステータスを確認 をクリックして、データが受信されていることを確認します。