Docs
Cari dokumen...⌘K

Fastly

Streaming log real-time Fastly dapat mengirim log permintaan layanan Anda ke Ahrefs melalui HTTPS. Anda menambahkan titik akhir logging ke layanan Fastly Anda dari panel kontrol Fastly; Ahrefs tidak pernah memerlukan akses ke akun Fastly Anda.

Prasyarat

  • Layanan CDN Fastly yang melayani domain proyek Ahrefs Anda. Paket Fastly apa pun bisa digunakan, termasuk tingkat gratis.
  • Izin untuk mengedit konfigurasi layanan tersebut dan mengaktifkan versi baru.

Langkah 1 — Dapatkan kunci akses Anda

  1. Di Ahrefs, buka Pengaturan Proyek → Bot Analytics untuk proyek Anda.
  2. Pilih Fastly.
  3. Salin URL, nama header kustom, dan nilai header kustom. Nilai header adalah kunci akses Anda: nilai ini mengidentifikasi proyek Anda, jadi perlakukan seperti kata sandi.

Semua hal lain yang Anda butuhkan ada di halaman ini.

Langkah 2 — Tambahkan titik akhir logging

Di panel kontrol Fastly, buka layanan Anda, klik Edit konfigurasi, lalu gandakan versi aktif. Di menu sebelah kiri, pilih Pencatatan log, lalu HTTPS dan Buat titik akhir.

Kolom titik akhir

BidangNilai
NamaAhrefs Bot Analytics
PenempatanDefault versi format
Format logFormat log di bawah ini, menggantikan format default
URLhttps://analytics.ahrefs.com/api/fastly/logs
Log maksimum, Byte maksimumBiarkan kosong
Jenis kontenapplication/json
Nama header kustomX-Ahrefs-Web-Analytics-Property
Nilai header kustomKunci akses dari Langkah 1
MetodePOST
Format entri log JSONDipisahkan dengan baris baru. Array JSON juga bisa digunakan.
KompresiGzip (disarankan) atau tanpa kompresi. Zstd dan Snappy tidak diterima.
Kolom TLSBiarkan kosong

Di bagian Opsi Advanced, atur Pilih format baris log ke Kosong. Klik Buat, lalu Aktifkan versi baru. Fastly langsung mulai streaming.

warning

Format baris log harus Kosong. Pengaturan default, Klasik, menambahkan header syslog di awal setiap baris, dan Ahrefs menolak batch tersebut.

info

Saat Anda menyimpan titik akhir, Fastly memastikan host tujuan menerima log dari layanan Fastly. Ahrefs menanggapi pemeriksaan itu untuk semua orang, jadi tidak ada yang perlu dikonfigurasi di sisi Anda.

Format log

Fastly mengisi placeholder %{...}V untuk setiap permintaan. Anda yang menentukan apa yang akan dibagikan: format minimal sudah cukup agar Bot Analytics berfungsi, sedangkan format yang direkomendasikan memberikan hasil yang lebih baik. Kunci yang tidak dikenali akan diabaikan, jadi Anda bisa mempertahankan kolom tambahan yang sudah Anda catat dalam log.

Minimal. Kunjungan bot dengan waktu, halaman, dan nama bot:

{
  "timestamp": %{time.start.msec}V,
  "host": "%{if(req.http.Fastly-Orig-Host, req.http.Fastly-Orig-Host, req.http.Host)}V",
  "url": "%{json.escape(req.url)}V",
  "request_user_agent": "%{json.escape(req.http.User-Agent)}V"
}

Direkomendasikan. Menambahkan IP pengunjung untuk data lokasi, status dan detail respons yang ditampilkan pada setiap kunjungan, verifikasi Web Bot Auth, serta penanda edge yang menghapus duplikasi saat layanan Anda menggunakan shielding:

{
  "timestamp": %{time.start.msec}V,
  "client_ip": "%{req.http.Fastly-Client-IP}V",
  "host": "%{if(req.http.Fastly-Orig-Host, req.http.Fastly-Orig-Host, req.http.Host)}V",
  "scheme": "%{req.protocol}V",
  "url": "%{json.escape(req.url)}V",
  "request_method": "%{json.escape(req.method)}V",
  "request_referer": "%{json.escape(req.http.Referer)}V",
  "request_user_agent": "%{json.escape(req.http.User-Agent)}V",
  "response_state": "%{json.escape(fastly_info.state)}V",
  "response_status": %{resp.status}V,
  "response_body_size": %{resp.body_bytes_written}V,
  "response_content_type": "%{json.escape(resp.http.Content-Type)}V",
  "fastly_server": "%{json.escape(server.identity)}V",
  "fastly_is_edge": %{if(fastly.ff.visits_this_service == 0, "true", "false")}V,
  "request_id": "%{json.escape(req.xid)}V",
  "signature": "%{json.escape(req.http.Signature)}V",
  "signature_input": "%{json.escape(req.http.Signature-Input)}V",
  "signature_agent": "%{json.escape(req.http.Signature-Agent)}V"
}

Campurkan keduanya sesuai kebutuhan: empat kunci minimal wajib ada, semua kunci lainnya boleh dihilangkan, dikosongkan, atau berisi (null). Pertahankan fastly_is_edge setiap kali layanan Anda memiliki shield; kalau tidak, setiap miss akan dihitung dua kali. Kunci tanpa tanda kutip (timestamp, response_status, response_body_size, fastly_is_edge) harus selalu memiliki nilai; jika tidak, baris tersebut bukan JSON yang valid.

info

Layanan Fastly Compute menulis JSON yang sama dari kode, satu objek per baris, dengan pengaturan titik akhir dari Langkah 2.

Langkah 3 — Verifikasi

Fastly mengirimkan log dalam batch kecil, biasanya dalam waktu satu menit setelah permintaan. Kunjungan bot kemudian muncul di laporan Bot Analytics beberapa menit kemudian. Permintaan dari browser juga dikirim; Ahrefs membuang semua yang bukan bot.

Pemecahan masalah

Fastly tidak menampilkan kesalahan pengiriman untuk titik akhir HTTPS di panel kontrol, jadi periksa pengaturan terhadap tabel di atas jika tidak ada yang masuk. Ahrefs membalas setiap batch dengan salah satu dari berikut ini:

ResponsPenyebab
401 missing authentication headerNama header kustom salah eja atau kosong.
403 invalid authenticationNilai header kustom tidak cocok dengan proyek Ahrefs. Salin lagi dari Langkah 1.
400 record 0: …Format baris log adalah Klasik, bukan Kosong, kompresinya bukan Gzip atau tidak ada, atau format log bukan JSON yang valid.
400 record N: Missing record field …Dipisahkan dengan baris baru: format log tidak memiliki salah satu kunci yang wajib.
400 invalid body: not a JSON array of log records: …Array JSON: format baris log adalah Klasik, bukan Kosong, format log tidak memiliki kunci yang wajib, atau format tersebut bukan JSON yang valid.
400 body is not valid gzipKompresi di Fastly adalah Gzip, tetapi isi tidak dapat didekompresi.