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
- W Ahrefs przejdź do Ustawienia projektu → Bot Analytics dla swojego projektu.
- Wybierz Amazon CloudFront.
- 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.
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:
300sekund - Parametry: pozostaw puste
- Wskazówki dotyczące buforowania: pozostaw wartości domyślne
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 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
- W konsoli CloudFront otwórz Dystrybucje i wybierz swoją dystrybucję.
- Na karcie Rejestrowanie, w sekcji Standardowe miejsca docelowe logów, kliknij Dodaj.
- 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.
- 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.
- Kliknij Prześlij. CloudFront stosuje zmiany w logowaniu w ciągu kilku minut.
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, orazDeliveryToHttpEndpoint.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łędu | Przyczyna |
|---|---|
missing authentication header | Pole klucza dostępu w miejscu docelowym Firehose jest puste. |
invalid authentication | Klucz 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 JSON | Format 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” … 404 | Adres URL punktu końcowego zawiera literówkę. Porównaj go z adresem URL w kroku 1. |
Wyłączanie
- W konsoli CloudFront na karcie Logowanie dystrybucji wybierz miejsce docelowe Firehose i je usuń. Spowoduje to zatrzymanie dostarczania logów.
- Usuń strumień Firehose oraz zasobnik kopii zapasowej, jeśli nie jest Ci już potrzebny.
- 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.