Amazon CloudFront
Amazon CloudFront può inviare i suoi log di accesso a uno stream di Amazon Data Firehose e Firehose può inoltrarli ad Ahrefs tramite HTTPS. Crei lo stream e abiliti l’invio dei log nel tuo account AWS, dalla console AWS; Ahrefs non deve mai accedervi.
Prerequisiti
- Una distribuzione CloudFront che serve il dominio del tuo progetto Ahrefs.
- Autorizzazioni in quell’account AWS per creare uno stream Firehose, un bucket S3 e un ruolo IAM, e per modificare le impostazioni di logging della distribuzione.
- Lo stream Firehose deve essere creato nella regione US East (N. Virginia)
us-east-1. CloudFront invia i log Standard agli stream Firehose solo in quella regione, indipendentemente dalla regione dell’origine.
Passaggio 1 — Ottieni l’URL dell’endpoint e la chiave di accesso
- In Ahrefs, vai su Impostazioni progetto → Bot Analytics per il tuo progetto.
- Seleziona Amazon CloudFront.
- Copia l’URL dell’endpoint HTTP e la chiave di accesso mostrati nella pagina. La chiave di accesso identifica il tuo progetto; trattala come una password.
L’URL dell’endpoint è lo stesso per tutti:
https://analytics.ahrefs.com/api/aws_firehose/logs
Passaggio 2 — Crea lo stream Firehose
Nella console AWS, passa alla regione US East (N. Virginia), apri Amazon Data Firehose e fai clic su Crea stream Firehose.
Scegli origine e destinazione
Imposta Origine su PUT diretto e Destinazione su Endpoint HTTP, quindi assegna allo stream un nome come ahrefs-bot-analytics. Origine e destinazione non possono essere modificate dopo la creazione dello stream. Lascia la sezione Trasforma record così com’è.
Impostazioni della destinazione
- Nome dell’endpoint HTTP:
Ahrefs Bot Analytics - URL dell’endpoint HTTP: l’URL del passaggio 1
- Autenticazione: Usa chiave di accesso e incolla la chiave di accesso del passaggio 1 in Chiave di accesso
- Codifica del contenuto: GZIP
- Durata dei ritentativi:
300secondi - Parametri: lascia vuoto
- Suggerimenti per il buffer: mantieni i valori predefiniti
warning
La chiave di accesso è l’unico elemento che collega lo stream al tuo progetto Ahrefs. Ogni progetto Ahrefs necessita del proprio stream Firehose con la propria chiave di accesso; più distribuzioni che servono lo stesso progetto possono condividere uno stream.
Impostazioni di backup
In Backup dei record di origine in Amazon S3 scegli Solo dati non riusciti, quindi Sfoglia per selezionare un bucket S3 esistente oppure Crea per crearne uno nuovo. Firehose scrive lì qualsiasi batch che Ahrefs non ha potuto accettare, insieme al motivo; quindi questo bucket è il primo posto in cui guardare durante la risoluzione dei problemi.
Impostazioni avanzate
Espandi Impostazioni Advanced, imposta Logging degli errori di Amazon CloudWatch su Abilitato e, in Autorizzazioni, lascia che la console crei un nuovo ruolo IAM. Fai clic su Crea stream Firehose e attendi che lo stato dello stream sia Attivo.
Passaggio 3 — Invia i log di CloudFront allo stream
- Nella console CloudFront, apri Distribuzioni e seleziona la tua distribuzione.
- Nella scheda Registrazione, in Destinazioni dei log Standard, fai clic su Aggiungi.
- Nella pagina Aggiungi destinazione dei log di accesso, imposta Invia a su Amazon Kinesis Data Firehose e seleziona il tuo stream in Stream di destinazione.
- Espandi Impostazioni aggiuntive:
- Selezione dei campi: seleziona i campi elencati in Campi di log. Va bene anche lasciare selezionati tutti i 33 campi.
- Formato di output: JSON. Gli altri formati non sono accettati.
- Fai clic su Invia. CloudFront applica le modifiche alla registrazione dei log nel giro di pochi minuti.
Campi di log
Ahrefs richiede un timestamp, c-ip, x-host-header, cs-uri-stem e cs(User-Agent). La selezione consigliata è:
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 e asn si trovano nel sottoinsieme in tempo reale del selettore di campi. Sono facoltativi: senza timestamp(ms) Ahrefs utilizza date e time, con precisione di un secondo.
Passaggio 4 — Verifica
CloudFront invia i log standard in batch, di solito entro un’ora dalle richieste e in modo affidabile circa quattro ore dopo l’attivazione della registrazione dei log. Firehose poi inoltra ogni batch entro il proprio intervallo di buffer.
- Nella console di Firehose, la scheda Monitoraggio dello stream mostra
IncomingRecordsquando CloudFront inizia a inviare i dati eDeliveryToHttpEndpoint.Successquando Ahrefs accetta i batch. - In Ahrefs, il report Bot Analytics si popola man mano che i bot visitano il tuo sito.
Risoluzione dei problemi
Se le consegne non vanno a buon fine, Firehose riprova per la durata dei tentativi e poi scrive il batch nel bucket di backup con il prefisso http-endpoint-failed/, insieme al messaggio di errore restituito da Ahrefs. Lo stesso messaggio appare nella scheda Log degli errori di destinazione dello stream.
| Messaggio di errore | Causa |
|---|---|
missing authentication header | Il campo della chiave di accesso nella destinazione Firehose è vuoto. |
invalid authentication | La chiave di accesso non corrisponde a un progetto Ahrefs. Copiala di nuovo dal passaggio 1. |
records are not JSON: configure CloudFront standard logging (v2) with output format JSON | Il formato di output della consegna non è JSON oppure lo stream riceve log in tempo reale di CloudFront. Sono supportati solo i log standard in JSON. |
Response … must contain a 'content-type: application/json' header … 404 | L’URL dell’endpoint contiene un errore di digitazione. Confrontalo con l’URL nel passaggio 1. |
Disattivazione
- Nella console di CloudFront, nella scheda Registrazione della distribuzione, seleziona la destinazione Firehose ed eliminala. In questo modo l’invio dei log viene interrotto.
- Elimina lo stream Firehose e, se non ti serve più, anche il bucket di backup.
- In Ahrefs, disattiva Amazon CloudFront in Impostazioni del progetto → Bot Analytics.
Eliminando la destinazione, l’origine di consegna della distribuzione rimane in CloudWatch Logs. È innocuo e viene riutilizzato se attivi di nuovo la registrazione dei log.
info
I log in tempo reale di CloudFront (inviati tramite Kinesis Data Streams) non sono supportati. Utilizza la registrazione standard (v2) con output JSON come descritto sopra.