Docs
Dokümanlarda ara...⌘K

Amazon CloudFront

Amazon CloudFront, erişim günlüklerini bir Amazon Data Firehose akışına teslim edebilir ve Firehose bunları HTTPS üzerinden Ahrefs’e iletebilir. Akışı oluşturur ve günlük teslimini kendi AWS hesabınızda, AWS konsolundan etkinleştirirsiniz; Ahrefs’in buna asla erişmesi gerekmez.

Ön koşullar

  • Ahrefs projenizin alan adını sunan bir CloudFront dağıtımı.
  • Söz konusu AWS hesabında bir Firehose akışı, bir S3 bucket’ı ve bir IAM rolü oluşturmak ve dağıtımın günlükleme ayarlarını düzenlemek için gereken izinler.
  • Firehose akışı US East (N. Virginia) us-east-1 bölgesinde oluşturulmalıdır. CloudFront, origin’iniz hangi bölgede olursa olsun, standart günlükleri yalnızca o bölgedeki Firehose akışlarına teslim eder.

Adım 1 — Uç nokta URL’nizi ve erişim anahtarınızı alın

  1. Ahrefs’te projeniz için Proje Ayarları → Bot Analytics bölümüne gidin.
  2. Amazon CloudFront’u seçin.
  3. Sayfada gösterilen HTTP uç nokta URL’sini ve erişim anahtarını kopyalayın. Erişim anahtarı projenizi tanımlar; onu bir parola gibi değerlendirin.

Uç nokta URL’si herkes için aynıdır:

https://analytics.ahrefs.com/api/aws_firehose/logs

Adım 2 — Firehose akışını oluşturun

AWS konsolunda US East (N. Virginia) bölgesine geçin, Amazon Data Firehose’u açın ve Firehose akışı oluştur düğmesine tıklayın.

Kaynak ve hedefi seçin

Kaynak alanını Doğrudan PUT olarak, Hedef alanını ise HTTP uç noktası olarak ayarlayın; ardından akışa ahrefs-bot-analytics gibi bir ad verin. Akış oluşturulduktan sonra kaynak ve hedef değiştirilemez. Kayıtları dönüştür bölümünü olduğu gibi bırakın.

Firehose akışı oluşturma: kaynak Doğrudan PUT, hedef HTTP uç noktası, akış adı ahrefs-bot-analytics

Hedef ayarları

  • HTTP uç nokta adı: Ahrefs Bot Analytics
  • HTTP uç nokta URL’si: 1. adımdaki URL
  • Kimlik doğrulama: Erişim anahtarını kullan; ardından 1. adımdaki erişim anahtarını Erişim anahtarı alanına yapıştırın
  • İçerik kodlaması: GZIP
  • Yeniden deneme süresi: 300 saniye
  • Parametreler: boş bırakın
  • Arabellek ipuçları: varsayılanları koruyun
Firehose hedef ayarları: Ahrefs uç nokta URL’si, erişim anahtarıyla kimlik doğrulama, GZIP içerik kodlaması, 300 saniyelik yeniden deneme

warning

Erişim anahtarı, akışı Ahrefs projenize bağlayan tek şeydir. Her Ahrefs projesi, kendi erişim anahtarına sahip kendi Firehose akışına ihtiyaç duyar; aynı projeye hizmet veren birden fazla dağıtım tek bir akışı paylaşabilir.

Yedekleme ayarları

Amazon S3’te kaynak kayıt yedekleme altında Yalnızca başarısız veriler seçeneğini belirleyin; ardından mevcut bir S3 bucket’ı seçmek için Gözat düğmesini veya yeni bir tane oluşturmak için Oluştur düğmesini kullanın. Firehose, Ahrefs’in kabul edemediği her batch’i, sebebiyle birlikte buraya yazar; bu nedenle sorun giderirken bakılacak ilk yer bu bucket’tır.

Firehose yedekleme ayarları: yalnızca başarısız veriler, S3 yedek bucket’ı

Gelişmiş ayarlar

Advanced ayarları bölümünü genişletin, Amazon CloudWatch hata günlükleme seçeneğini Etkin olarak ayarlayın ve İzinler altında konsolun yeni bir IAM rolü oluşturmasına izin verin. Firehose akışı oluştur düğmesine tıklayın ve akışın durumu Etkin olana kadar bekleyin.

Adım 3 — CloudFront günlüklerini akışa gönderin

  1. CloudFront konsolunda Dağıtımlar’ı açın ve dağıtımınızı seçin.
  2. Günlükleme sekmesinde, Standart günlük hedefleri altında Ekle’ye tıklayın.
  3. Erişim günlüğü hedefi ekle sayfasında Teslim yeri değerini Amazon Kinesis Data Firehose olarak ayarlayın ve Hedef akış altında akışınızı seçin.
  4. Ek ayarlar’ı genişletin:
    • Alan seçimi: Günlük alanları altında listelenen alanları seçin. Tüm 33 alanın seçili kalması da işe yarar.
    • Çıktı biçimi: JSON. Diğer biçimler kabul edilmez.
  5. Gönder’e tıklayın. CloudFront, günlükleme değişikliklerini birkaç dakika içinde uygular.
CloudFront: erişim günlüğü hedefi ekleme, Amazon Kinesis Data Firehose’a teslim etme, akış seçildi, alan seçimi ve JSON çıktı biçimi

Günlük alanları

Ahrefs’in bir zaman damgasına, c-ip, x-host-header, cs-uri-stem ve cs(User-Agent) alanlarına ihtiyacı vardır. Önerilen seçim şudur:

timestamp(ms) date time c-ip x-forwarded-for cs-method x-host-header cs-protocol
cs-protocol-version cs-uri-stem cs-uri-query cs(User-Agent) cs(Referer) sc-status sc-bytes
sc-content-type time-to-first-byte time-taken x-edge-result-type x-edge-request-id
x-edge-location c-country asn

timestamp(ms), c-country ve asn, alan seçicinin gerçek zamanlı alt kümesindedir. Bunlar isteğe bağlıdır: timestamp(ms) olmadan Ahrefs, bir saniyelik hassasiyetle date ve time kullanır.

Adım 4 — Doğrulayın

CloudFront, standart günlükleri toplu hâlde iletir; bu teslimat genellikle isteklerden sonraki bir saat içinde, günlüklemeyi etkinleştirmenizin ardından ise güvenilir biçimde yaklaşık dört saat sonra gerçekleşir. Firehose ardından her bir paketi arabellek aralığı içinde iletir.

  • Firehose konsolunda, akışın İzleme sekmesi CloudFront teslim etmeye başladığında IncomingRecords değerini, Ahrefs paketleri kabul ettiğinde ise DeliveryToHttpEndpoint.Success değerini gösterir.
  • Ahrefs’te Bot Analytics raporu, botlar sitenizi ziyaret ettikçe dolmaya başlar.

Sorun giderme

Teslimatlar başarısız olursa Firehose, yeniden deneme süresi boyunca tekrar dener ve ardından paketi, Ahrefs’in döndürdüğü hata mesajıyla birlikte http-endpoint-failed/ öneki altında yedek bucket’ınıza yazar. Aynı mesaj, akışın Hedef hata günlükleri sekmesinde de görünür.

Hata mesajıNeden
missing authentication headerFirehose hedefindeki erişim anahtarı alanı boştur.
invalid authenticationErişim anahtarı bir Ahrefs projesiyle eşleşmiyor. 1. adımdan tekrar kopyalayın.
records are not JSON: configure CloudFront standard logging (v2) with output format JSONTeslimatın çıktı biçimi JSON değil ya da akış CloudFront gerçek zamanlı günlüklerini alıyor. Yalnızca JSON biçimindeki standart günlükler desteklenir.
Response … must contain a 'content-type: application/json' header … 404Uç nokta URL’si yanlış yazılmış. 1. adımdaki URL ile karşılaştırın.

Devre dışı bırakma

  1. CloudFront konsolunda dağıtımın Günlükleme sekmesinde Firehose hedefini seçin ve silin. Bu, günlük teslimatını durdurur.
  2. Firehose akışını ve artık ihtiyacınız yoksa yedek bucket’ı silin.
  3. Ahrefs’te, Proje Ayarları → Bot Analytics bölümünde Amazon CloudFront’u devre dışı bırakın.

Hedefi silmek, dağıtımın teslimat kaynağını CloudWatch Logs’ta tutar. Bu zararsızdır ve günlüklemeyi yeniden etkinleştirirseniz tekrar kullanılır.

info

CloudFront gerçek zamanlı günlükleri (Kinesis Data Streams üzerinden teslim edilir) desteklenmez. Yukarıda açıklandığı gibi JSON çıktılı standart günlükleme (v2) kullanın.