Docs
Pesquisar na documentação...⌘K

Fastly

O streaming de logs em tempo real da Fastly pode enviar os logs de solicitações do seu serviço para a Ahrefs via HTTPS. Você adiciona um endpoint de logs ao seu serviço da Fastly no painel de controle da Fastly; a Ahrefs nunca precisa acessar sua conta da Fastly.

Pré-requisitos

  • Um serviço de CDN da Fastly que atende ao domínio do seu projeto da Ahrefs. Qualquer plano da Fastly funciona, inclusive o nível gratuito.
  • Permissão para editar a configuração desse serviço e ativar uma nova versão.

Etapa 1 — Obtenha sua chave de acesso

  1. Na Ahrefs, acesse Configurações do projeto → Bot Analytics do seu projeto.
  2. Selecione Fastly.
  3. Copie a URL, o nome do cabeçalho personalizado e o valor do cabeçalho personalizado. O valor do cabeçalho é a sua chave de acesso: ela identifica o seu projeto, então trate-a como uma senha.

Todo o resto de que você precisa está nesta página.

Etapa 2 — Adicione o endpoint de logs

No painel de controle da Fastly, abra seu serviço, clique em Editar configuração e clone a versão ativa. No menu à esquerda, escolha Logs, depois HTTPS e Criar endpoint.

Campos do endpoint

CampoValor
NomeAhrefs Bot Analytics
PosicionamentoPadrão da versão do formato
Formato do logO formato do log abaixo, substituindo o padrão
URLhttps://analytics.ahrefs.com/api/fastly/logs
Máximo de logs, Máximo de bytesDeixe em branco
Tipo de conteúdoapplication/json
Nome do cabeçalho personalizadoX-Ahrefs-Web-Analytics-Property
Valor do cabeçalho personalizadoA chave de acesso da Etapa 1
MétodoPOST
Formato da entrada de log em JSONDelimitado por nova linha. Array de JSON também funciona.
CompressãoGzip (recomendado) ou nenhuma. Zstd e Snappy não são aceitos.
Campos de TLSDeixe em branco

Em Opções avançadas, defina Selecionar um formato de linha de log como Em branco. Clique em Criar e depois Ativar a nova versão. A Fastly começa a transmitir imediatamente.

warning

O formato da linha de log deve ser Em branco. O padrão, Clássico, adiciona um cabeçalho syslog ao início de cada linha, e a Ahrefs rejeita esses lotes.

info

Quando você salva o endpoint, a Fastly verifica se o host de destino aceita logs de serviços da Fastly. A Ahrefs responde a essa verificação para todos, então não há nada para configurar do seu lado.

Formato do log

A Fastly preenche os placeholders %{...}V em todas as solicitações. Você decide o que compartilhar: o formato mínimo é suficiente para o Bot Analytics funcionar; o formato recomendado oferece resultados melhores. Chaves desconhecidas são ignoradas, então você pode manter campos extras que já registra em log.

Mínimo. Visitas de bots com horário, página e nome do bot:

{
  "timestamp": %{time.start.msec}V,
  "host": "%{if(req.http.Fastly-Orig-Host, req.http.Fastly-Orig-Host, req.http.Host)}V",
  "url": "%{json.escape(req.url)}V",
  "request_user_agent": "%{json.escape(req.http.User-Agent)}V"
}

Recomendado. Adiciona o IP do visitante para dados de localização, o status e os detalhes de resposta exibidos em cada visita, a verificação do Web Bot Auth e o marcador de edge que remove duplicatas quando seu serviço usa shielding:

{
  "timestamp": %{time.start.msec}V,
  "client_ip": "%{req.http.Fastly-Client-IP}V",
  "host": "%{if(req.http.Fastly-Orig-Host, req.http.Fastly-Orig-Host, req.http.Host)}V",
  "scheme": "%{req.protocol}V",
  "url": "%{json.escape(req.url)}V",
  "request_method": "%{json.escape(req.method)}V",
  "request_referer": "%{json.escape(req.http.Referer)}V",
  "request_user_agent": "%{json.escape(req.http.User-Agent)}V",
  "response_state": "%{json.escape(fastly_info.state)}V",
  "response_status": %{resp.status}V,
  "response_body_size": %{resp.body_bytes_written}V,
  "response_content_type": "%{json.escape(resp.http.Content-Type)}V",
  "fastly_server": "%{json.escape(server.identity)}V",
  "fastly_is_edge": %{if(fastly.ff.visits_this_service == 0, "true", "false")}V,
  "request_id": "%{json.escape(req.xid)}V",
  "signature": "%{json.escape(req.http.Signature)}V",
  "signature_input": "%{json.escape(req.http.Signature-Input)}V",
  "signature_agent": "%{json.escape(req.http.Signature-Agent)}V"
}

Misture os dois como quiser: as quatro chaves mínimas são obrigatórias; qualquer outra chave pode ser omitida, deixada vazia ou definida como (null). Mantenha fastly_is_edge sempre que seu serviço tiver um shield; caso contrário, cada miss será contado duas vezes. As chaves sem aspas (timestamp, response_status, response_body_size, fastly_is_edge) devem sempre ter um valor, ou a linha não é um JSON válido.

info

Os serviços Fastly Compute gravam o mesmo JSON a partir do código, um objeto por linha, com as configurações de endpoint da Etapa 2.

Etapa 3 — Verificar

A Fastly entrega logs em pequenos lotes, geralmente em até um minuto após as solicitações. As visitas de bots aparecem então no relatório do Bot Analytics alguns minutos depois. As solicitações de navegadores também são enviadas; a Ahrefs descarta tudo o que não é bot.

Solução de problemas

A Fastly não mostra erros de entrega para endpoints HTTPS no painel de controle; portanto, verifique as configurações com base na tabela acima quando nada chegar. A Ahrefs responde a cada lote com um destes:

RespostaCausa
401 missing authentication headerO nome do cabeçalho personalizado está escrito incorretamente ou está vazio.
403 invalid authenticationO valor do cabeçalho personalizado não corresponde a um projeto da Ahrefs. Copie-a novamente da Etapa 1.
400 record 0: …O formato da linha de log é Clássico em vez de Em branco, a compactação não está definida como Gzip nem está desativada, ou o formato de log não é JSON válido.
400 record N: Missing record field …Delimitado por quebras de linha: o formato de log não tem uma das chaves obrigatórias.
400 invalid body: not a JSON array of log records: …Array de JSON: o formato da linha de log é Clássico em vez de Em branco, o formato de log não tem uma chave obrigatória ou não é JSON válido.
400 body is not valid gzipA compactação está como Gzip na Fastly, mas não foi possível descompactar o corpo.