Docs
Dokumentation durchsuchen...⌘K

Amazon CloudFront

Amazon CloudFront kann seine Zugriffsprotokolle an einen Amazon-Data-Firehose-Stream senden, und Firehose kann sie über HTTPS an Ahrefs weiterleiten. Du erstellst den Stream und aktivierst die Log-Übermittlung in deinem eigenen AWS-Konto über die AWS-Konsole; Ahrefs benötigt niemals Zugriff darauf.

Voraussetzungen

  • Eine CloudFront-Distribution, die die Domain deines Ahrefs-Projekts bedient.
  • Berechtigungen in diesem AWS-Konto, um einen Firehose-Stream, einen S3-Bucket und eine IAM-Rolle zu erstellen sowie die Logging-Einstellungen der Distribution zu bearbeiten.
  • Der Firehose-Stream muss in der Region US East (N. Virginia) us-east-1 erstellt werden. CloudFront liefert Standard-Logs nur an Firehose-Streams in dieser Region – unabhängig davon, in welcher Region sich dein Origin befindet.

Schritt 1 – Endpunkt-URL und Zugriffsschlüssel abrufen

  1. Gehe in Ahrefs für dein Projekt zu Projekteinstellungen → Bot Analytics.
  2. Wähle Amazon CloudFront aus.
  3. Kopiere die auf der Seite angezeigte HTTP-Endpunkt-URL und den Zugriffsschlüssel. Der Zugriffsschlüssel identifiziert dein Projekt; behandle ihn wie ein Passwort.

Die Endpunkt-URL ist für alle gleich:

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

Schritt 2 – Firehose-Stream erstellen

Wechsle in der AWS-Konsole zur Region US East (N. Virginia), öffne Amazon Data Firehose und klicke auf Firehose-Stream erstellen.

Quelle und Ziel auswählen

Setze Quelle auf Direct PUT und Ziel auf HTTP-Endpunkt und gib dem Stream dann einen Namen wie ahrefs-bot-analytics. Quelle und Ziel können nach dem Erstellen des Streams nicht mehr geändert werden. Lasse den Abschnitt Datensätze transformieren unverändert.

Firehose-Stream erstellen: Quelle Direct PUT, Ziel HTTP-Endpunkt, Stream-Name ahrefs-bot-analytics

Zieleinstellungen

  • Name des HTTP-Endpunkts: Ahrefs Bot Analytics
  • HTTP-Endpunkt-URL: die URL aus Schritt 1
  • Authentifizierung: Zugriffsschlüssel verwenden und füge den Zugriffsschlüssel aus Schritt 1 in Zugriffsschlüssel ein
  • Inhaltskodierung: GZIP
  • Dauer der Wiederholungsversuche: 300 Sekunden
  • Parameter: leer lassen
  • Pufferhinweise: Standardwerte beibehalten
Firehose-Zieleinstellungen: Ahrefs-Endpunkt-URL, Authentifizierung per Zugriffsschlüssel, GZIP-Inhaltskodierung, Wiederholungsdauer 300 Sekunden

warning

Der Zugriffsschlüssel ist das Einzige, was den Stream mit deinem Ahrefs-Projekt verknüpft. Jedes Ahrefs-Projekt benötigt seinen eigenen Firehose-Stream mit eigenem Zugriffsschlüssel; mehrere Distributionen, die dasselbe Projekt bedienen, können sich einen Stream teilen.

Backup-Einstellungen

Wähle unter Quelldatensatz-Backup in Amazon S3 Nur fehlerhafte Daten aus und klicke dann auf Durchsuchen, um einen vorhandenen S3-Bucket auszuwählen, oder auf Erstellen, um einen neuen zu erstellen. Firehose schreibt dort jeden Batch, den Ahrefs nicht annehmen konnte, zusammen mit dem Grund. Dieser Bucket ist daher der erste Ort, an dem du bei der Fehlerbehebung nachsehen solltest.

Firehose-Backup-Einstellungen: nur fehlerhafte Daten, S3-Backup-Bucket

Erweiterte Einstellungen

Erweitere Advanced-Einstellungen, setze Amazon-CloudWatch-Fehlerprotokollierung auf Aktiviert und wähle unter Berechtigungen die Option Eine neue IAM-Rolle erstellen. Klicke auf Firehose-Stream erstellen und warte, bis der Status des Streams Aktiv ist.

Schritt 3 – CloudFront-Logs an den Stream senden

  1. Öffne in der CloudFront-Konsole Distributionen und wähle deine Distribution aus.
  2. Klicke im Tab Protokollierung unter Standardprotokoll-Ziele auf Hinzufügen.
  3. Setze auf der Seite Ziel für Zugriffsprotokoll hinzufügen Bereitstellen an auf Amazon Kinesis Data Firehose und wähle deinen Stream unter Zielstream aus.
  4. Erweitere Zusätzliche Einstellungen:
    • Feldauswahl: Wähle die unter Log-Felder aufgeführten Felder aus. Es funktioniert auch, wenn alle 33 Felder ausgewählt bleiben.
    • Ausgabeformat: JSON. Andere Formate werden nicht akzeptiert.
  5. Klicke auf Senden. CloudFront übernimmt Änderungen am Logging innerhalb weniger Minuten.
CloudFront: Ziel für Zugriffslogs hinzufügen, an Amazon Kinesis Data Firehose liefern, Stream ausgewählt, Feldauswahl und JSON-Ausgabeformat

Log-Felder

Ahrefs benötigt einen Zeitstempel, c-ip, x-host-header, cs-uri-stem und cs(User-Agent). Die empfohlene Auswahl ist:

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 und asn befinden sich in der Echtzeit-Teilmenge der Feldauswahl. Sie sind optional: Ohne timestamp(ms) verwendet Ahrefs date und time mit einer Genauigkeit von einer Sekunde.

Schritt 4 — Überprüfen

CloudFront liefert Standard-Logs stapelweise, normalerweise innerhalb einer Stunde nach den Anfragen und zuverlässig etwa vier Stunden, nachdem du das Logging aktiviert hast. Firehose leitet dann jeden Batch innerhalb seines Pufferintervalls weiter.

  • In der Firehose-Konsole zeigt der Tab Überwachung des Streams IncomingRecords, sobald CloudFront mit der Auslieferung beginnt, und DeliveryToHttpEndpoint.Success, sobald Ahrefs die Batches akzeptiert.
  • In Ahrefs füllt sich der Bot-Analytics-Report, wenn Bots deine Website besuchen.

Fehlerbehebung

Wenn Zustellungen fehlschlagen, versucht Firehose es für die Dauer der Wiederholungsversuche erneut und schreibt den Batch anschließend unter dem Präfix http-endpoint-failed/ in deinen Backup-Bucket – zusammen mit der von Ahrefs zurückgegebenen Fehlermeldung. Dieselbe Meldung erscheint im Tab Ziel-Fehlerprotokolle des Streams.

FehlermeldungUrsache
missing authentication headerDas Feld für den Zugriffsschlüssel im Firehose-Ziel ist leer.
invalid authenticationDer Zugriffsschlüssel stimmt mit keinem Ahrefs-Projekt überein. Kopiere ihn erneut aus Schritt 1.
records are not JSON: configure CloudFront standard logging (v2) with output format JSONDas Ausgabeformat der Zustellung ist nicht JSON oder der Stream empfängt CloudFront-Echtzeit-Logs. Unterstützt werden nur Standard-Logs in JSON.
Antwort … muss einen „content-type: application/json“-Header enthalten … 404Die Endpunkt-URL ist falsch geschrieben. Vergleiche sie mit der URL aus Schritt 1.

Deaktivieren

  1. Wähle in der CloudFront-Konsole im Tab Protokollierung der Distribution das Firehose-Ziel aus und lösche es. Dadurch wird die Log-Zustellung gestoppt.
  2. Lösche den Firehose-Stream sowie den Backup-Bucket, falls du ihn nicht mehr benötigst.
  3. Deaktiviere in Ahrefs Amazon CloudFront unter Projekteinstellungen → Bot Analytics.

Das Löschen des Ziels belässt die Zustellquelle der Distribution in CloudWatch Logs. Das ist unproblematisch; sie wird wiederverwendet, wenn du das Logging erneut aktivierst.

info

CloudFront-Echtzeit-Logs (über Kinesis Data Streams ausgeliefert) werden nicht unterstützt. Verwende Standard-Logging (v2) mit JSON-Ausgabe, wie oben beschrieben.