Docs
Szukaj w dokumentacji...⌘K

Amazon CloudFront

Amazon CloudFront może dostarczać swoje logi dostępu do strumienia Amazon Data Firehose, a Firehose może przekazywać je do Ahrefs przez HTTPS. Tworzysz strumień i włączasz dostarczanie logów na swoim własnym koncie AWS, z poziomu konsoli AWS; Ahrefs nigdy nie potrzebuje do niego dostępu.

Wymagania wstępne

  • Dystrybucja CloudFront obsługująca domenę Twojego projektu Ahrefs.
  • Uprawnienia na tym koncie AWS do utworzenia strumienia Firehose, zasobnika S3 i roli IAM oraz do edycji ustawień rejestrowania dystrybucji.
  • Strumień Firehose musi zostać utworzony w regionie US East (N. Virginia) us-east-1. CloudFront dostarcza logi standardowe do strumieni Firehose wyłącznie w tym regionie, niezależnie od tego, w jakim regionie znajduje się Twoje źródło.

Krok 1 — Pobierz adres URL punktu końcowego i klucz dostępu

  1. W Ahrefs przejdź do Ustawienia projektu → Bot Analytics dla swojego projektu.
  2. Wybierz Amazon CloudFront.
  3. Skopiuj widoczne na stronie adres URL punktu końcowego HTTP oraz klucz dostępu. Klucz dostępu identyfikuje Twój projekt; traktuj go jak hasło.

Adres URL punktu końcowego jest taki sam dla wszystkich:

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

Krok 2 — Utwórz strumień Firehose

W konsoli AWS przełącz się na region US East (N. Virginia), otwórz Amazon Data Firehose i kliknij Utwórz strumień Firehose.

Wybierz źródło i miejsce docelowe

Ustaw Źródło na Bezpośredni PUT, a Miejsce docelowe na Punkt końcowy HTTP, a następnie nadaj strumieniowi nazwę, np. ahrefs-bot-analytics. Po utworzeniu strumienia nie można zmienić źródła ani miejsca docelowego. Pozostaw sekcję Przekształcanie rekordów bez zmian.

Utwórz strumień Firehose: źródło Bezpośredni PUT, miejsce docelowe punkt końcowy HTTP, nazwa strumienia ahrefs-bot-analytics

Ustawienia miejsca docelowego

  • Nazwa punktu końcowego HTTP: Ahrefs Bot Analytics
  • Adres URL punktu końcowego HTTP: adres URL z kroku 1
  • Uwierzytelnianie: Użyj klucza dostępu, a następnie wklej klucz dostępu z kroku 1 w polu Klucz dostępu
  • Kodowanie treści: GZIP
  • Czas ponawiania prób: 300 sekund
  • Parametry: pozostaw puste
  • Wskazówki dotyczące buforowania: pozostaw wartości domyślne
Ustawienia miejsca docelowego Firehose: adres URL punktu końcowego Ahrefs, uwierzytelnianie kluczem dostępu, kodowanie treści GZIP, ponawianie przez 300 sekund

warning

Klucz dostępu to jedyna rzecz, która wiąże strumień z Twoim projektem Ahrefs. Każdy projekt Ahrefs potrzebuje własnego strumienia Firehose z własnym kluczem dostępu; kilka dystrybucji obsługujących ten sam projekt może współdzielić jeden strumień.

Ustawienia kopii zapasowej

W sekcji Kopia zapasowa rekordów źródłowych w Amazon S3 wybierz Tylko nieudane dane, a następnie kliknij Przeglądaj, aby wskazać istniejący zasobnik S3, lub Utwórz, aby utworzyć nowy. Firehose zapisuje tam każdą paczkę danych, której Ahrefs nie mógł przyjąć, wraz z powodem, dlatego ten zasobnik jest pierwszym miejscem, do którego warto zajrzeć podczas rozwiązywania problemów.

Ustawienia kopii zapasowej Firehose: tylko nieudane dane, zasobnik kopii zapasowej S3

Ustawienia zaawansowane

Rozwiń Ustawienia zaawansowane, ustaw Rejestrowanie błędów w Amazon CloudWatch na Włączone, a w sekcji Uprawnienia pozwól konsoli utworzyć nową rolę IAM. Kliknij Utwórz strumień Firehose i poczekaj, aż status strumienia zmieni się na Aktywny.

Krok 3 — Wysyłaj logi CloudFront do strumienia

  1. W konsoli CloudFront otwórz Dystrybucje i wybierz swoją dystrybucję.
  2. Na karcie Rejestrowanie, w sekcji Standardowe miejsca docelowe logów, kliknij Dodaj.
  3. Na stronie Dodaj miejsce docelowe logów dostępu ustaw Dostarczaj do na Amazon Kinesis Data Firehose i wybierz swój strumień w sekcji Strumień docelowy.
  4. Rozwiń Dodatkowe ustawienia:
    • Wybór pól: wybierz pola wymienione w sekcji Pola logów. Pozostawienie zaznaczonych wszystkich 33 pól też zadziała.
    • Format wyjściowy: JSON. Inne formaty nie są akceptowane.
  5. Kliknij Prześlij. CloudFront stosuje zmiany w logowaniu w ciągu kilku minut.
CloudFront: dodawanie miejsca docelowego logów dostępu, dostarczanie do Amazon Kinesis Data Firehose, wybrano strumień, wybór pól i format wyjściowy JSON

Pola logów

Ahrefs potrzebuje znacznika czasu, c-ip, x-host-header, cs-uri-stem oraz cs(User-Agent). Zalecany wybór to:

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 i asn znajdują się w podzbiorze pól w czasie rzeczywistym w selektorze pól. Są opcjonalne: bez timestamp(ms) Ahrefs używa date i time z dokładnością do jednej sekundy.

Krok 4 — Weryfikacja

CloudFront dostarcza standardowe logi partiami, zwykle w ciągu godziny od otrzymania żądań, a z dużą pewnością około czterech godzin po włączeniu logowania. Następnie Firehose przekazuje każdą partię w czasie określonym przez interwał buforowania.

  • W konsoli Firehose na karcie Monitorowanie strumienia pojawia się IncomingRecords, gdy CloudFront zaczyna dostarczać dane, oraz DeliveryToHttpEndpoint.Success, gdy Ahrefs akceptuje partie.
  • W Ahrefs raport Bot Analytics uzupełnia się, gdy boty odwiedzają Twoją witrynę.

Rozwiązywanie problemów

Jeśli dostarczanie się nie powiedzie, Firehose ponawia próby przez czas przeznaczony na ponawianie, a następnie zapisuje partię w Twoim zasobniku kopii zapasowej z prefiksem http-endpoint-failed/, wraz z komunikatem błędu zwróconym przez Ahrefs. Ten sam komunikat pojawia się na karcie Logi błędów miejsca docelowego strumienia.

Komunikat błęduPrzyczyna
missing authentication headerPole klucza dostępu w miejscu docelowym Firehose jest puste.
invalid authenticationKlucz dostępu nie pasuje do projektu Ahrefs. Skopiuj go ponownie z kroku 1.
records are not JSON: configure CloudFront standard logging (v2) with output format JSONFormat wyjściowy dostarczania nie jest ustawiony na JSON albo strumień odbiera logi CloudFront w czasie rzeczywistym. Obsługiwane są tylko standardowe logi w formacie JSON.
Odpowiedź … musi zawierać nagłówek „content-type: application/json” … 404Adres URL punktu końcowego zawiera literówkę. Porównaj go z adresem URL w kroku 1.

Wyłączanie

  1. W konsoli CloudFront na karcie Logowanie dystrybucji wybierz miejsce docelowe Firehose i je usuń. Spowoduje to zatrzymanie dostarczania logów.
  2. Usuń strumień Firehose oraz zasobnik kopii zapasowej, jeśli nie jest Ci już potrzebny.
  3. W Ahrefs wyłącz Amazon CloudFront w sekcji Ustawienia projektu → Bot Analytics.

Usunięcie miejsca docelowego pozostawia źródło dostarczania dla dystrybucji w CloudWatch Logs. To nieszkodliwe i zostanie ponownie użyte, jeśli znów włączysz logowanie.

info

Logi w czasie rzeczywistym usługi CloudFront (dostarczane przez Kinesis Data Streams) nie są obsługiwane. Użyj standardowego logowania (v2) z formatem wyjściowym JSON, zgodnie z opisem powyżej.