Amazon CloudFront
O Amazon CloudFront pode entregar seus logs de acesso a um stream do Amazon Data Firehose, e o Firehose pode encaminhá-los para a Ahrefs via HTTPS. Você cria o stream e ativa a entrega de logs na sua própria conta da AWS, pelo console da AWS; a Ahrefs nunca precisa ter acesso a ela.
Pré-requisitos
- Uma distribuição do CloudFront que atende o domínio do seu projeto da Ahrefs.
- Permissões nessa conta da AWS para criar um stream do Firehose, um bucket do S3 e uma função do IAM, e para editar as configurações de logs da distribuição.
- O stream do Firehose deve ser criado na região Leste dos EUA (N. Virgínia)
us-east-1. O CloudFront só entrega logs Standard para streams do Firehose nessa região, independentemente de em qual região sua origem esteja.
Etapa 1 — Obtenha o URL do endpoint e a chave de acesso
- Na Ahrefs, acesse Configurações do projeto → Bot Analytics do seu projeto.
- Selecione Amazon CloudFront.
- Copie o URL do endpoint HTTP e a chave de acesso mostrados na página. A chave de acesso identifica seu projeto; trate-a como uma senha.
O URL do endpoint é o mesmo para todos:
https://analytics.ahrefs.com/api/aws_firehose/logs
Etapa 2 — Crie o stream do Firehose
No console da AWS, mude para a região Leste dos EUA (N. Virgínia), abra o Amazon Data Firehose e clique em Criar stream do Firehose.
Escolha a origem e o destino
Defina Origem como PUT direto e Destino como Endpoint HTTP e, em seguida, dê um nome ao stream, como ahrefs-bot-analytics. A origem e o destino não podem ser alterados depois que o stream é criado. Deixe a seção Transformar registros como está.
Configurações de destino
- Nome do endpoint HTTP:
Ahrefs Bot Analytics - URL do endpoint HTTP: o URL da Etapa 1
- Autenticação: Usar chave de acesso e cole a chave de acesso da Etapa 1 em Chave de acesso
- Codificação do conteúdo: GZIP
- Duração da nova tentativa:
300segundos - Parâmetros: deixe em branco
- Dicas de buffer: mantenha os padrões
warning
A chave de acesso é a única coisa que vincula o stream ao seu projeto da Ahrefs. Cada projeto da Ahrefs precisa do próprio stream do Firehose com a própria chave de acesso; várias distribuições que atendem o mesmo projeto podem compartilhar um stream.
Configurações de backup
Em Backup do registro de origem no Amazon S3, escolha Apenas dados com falha e, em seguida, clique em Procurar para selecionar um bucket do S3 existente ou em Criar para criar um novo. O Firehose grava ali qualquer lote que a Ahrefs não conseguiu aceitar, junto com o motivo; portanto, esse bucket é o primeiro lugar para verificar ao solucionar problemas.
Configurações avançadas
Expanda Configurações Advanced, defina Registro de erros do Amazon CloudWatch como Ativado e, em Permissões, deixe o console criar uma nova função do IAM. Clique em Criar stream do Firehose e aguarde até que o status do stream seja Ativo.
Etapa 3 — Envie os logs do CloudFront para o stream
- No console do CloudFront, abra Distribuições e selecione sua distribuição.
- Na aba Registro em log, em Destinos de logs Standard, clique em Adicionar.
- Na página Adicionar destino de logs de acesso, defina Entregar para como Amazon Kinesis Data Firehose e selecione seu stream em Stream de destino.
- Expanda Configurações adicionais:
- Seleção de campos: selecione os campos listados em Campos de log. Manter todos os 33 campos selecionados também funciona.
- Formato de saída: JSON. Outros formatos não são aceitos.
- Clique em Enviar. O CloudFront aplica as alterações no registro em log em poucos minutos.
Campos de log
O Ahrefs precisa de um timestamp, c-ip, x-host-header, cs-uri-stem e cs(User-Agent). A seleção recomendada é:
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 estão no subconjunto em tempo real do seletor de campos. Eles são opcionais: sem timestamp(ms), o Ahrefs usa date e time, com precisão de um segundo.
Etapa 4 — Verificar
O CloudFront entrega logs standard em lotes, geralmente em até uma hora após as solicitações e, de forma confiável, cerca de quatro horas depois que você ativa o registro em log. Em seguida, o Firehose encaminha cada lote dentro do intervalo do buffer.
- No console do Firehose, a aba Monitoramento do stream mostra
IncomingRecordsassim que o CloudFront começa a entregar eDeliveryToHttpEndpoint.Successassim que o Ahrefs aceita os lotes. - No Ahrefs, o relatório Bot Analytics vai sendo preenchido conforme os bots visitam seu site.
Solução de problemas
Se as entregas falharem, o Firehose tenta novamente durante o período de novas tentativas e, em seguida, grava o lote no seu bucket de backup com o prefixo http-endpoint-failed/, junto com a mensagem de erro retornada pelo Ahrefs. A mesma mensagem aparece na aba Logs de erro do destino do stream.
| Mensagem de erro | Causa |
|---|---|
cabeçalho de autenticação ausente | O campo de chave de acesso no destino do Firehose está vazio. |
autenticação inválida | A chave de acesso não corresponde a um projeto do Ahrefs. Copie-a novamente da Etapa 1. |
os registros não estão em JSON: configure o registro em log standard (v2) do CloudFront com formato de saída JSON | O formato de saída da entrega não é JSON, ou o stream recebe logs em tempo real do CloudFront. Apenas logs standard em JSON são compatíveis. |
Resposta … deve conter um cabeçalho “content-type: application/json” … 404 | A URL do endpoint está escrita incorretamente. Compare-a com a URL na Etapa 1. |
Desativação
- No console do CloudFront, na aba Registro em log da distribuição, selecione o destino do Firehose e exclua-o. Isso interrompe a entrega de logs.
- Exclua o stream do Firehose e o bucket de backup, se você não precisar mais dele.
- No Ahrefs, desative o Amazon CloudFront em Configurações do Projeto → Bot Analytics.
Excluir o destino mantém a origem de entrega da distribuição no CloudWatch Logs. Isso é inofensivo, e a origem será reutilizada se você ativar o registro em log novamente.
info
Os logs em tempo real do CloudFront (entregues via Kinesis Data Streams) não são compatíveis. Use o registro em log standard (v2) com saída em JSON conforme descrito acima.