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-1bö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
- Ahrefs’te projeniz için Proje Ayarları → Bot Analytics bölümüne gidin.
- Amazon CloudFront’u seçin.
- 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.
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:
300saniye - Parametreler: boş bırakın
- Arabellek ipuçları: varsayılanları koruyun
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.
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
- CloudFront konsolunda Dağıtımlar’ı açın ve dağıtımınızı seçin.
- Günlükleme sekmesinde, Standart günlük hedefleri altında Ekle’ye tıklayın.
- 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.
- 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.
- Gönder’e tıklayın. CloudFront, günlükleme değişikliklerini birkaç dakika içinde uygular.
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
IncomingRecordsdeğerini, Ahrefs paketleri kabul ettiğinde iseDeliveryToHttpEndpoint.Successdeğ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 header | Firehose hedefindeki erişim anahtarı alanı boştur. |
invalid authentication | Eriş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 JSON | Teslimatı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 … 404 | Uç nokta URL’si yanlış yazılmış. 1. adımdaki URL ile karşılaştırın. |
Devre dışı bırakma
- CloudFront konsolunda dağıtımın Günlükleme sekmesinde Firehose hedefini seçin ve silin. Bu, günlük teslimatını durdurur.
- Firehose akışını ve artık ihtiyacınız yoksa yedek bucket’ı silin.
- 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.