Registros e métricas para armazenamento em cache

Cada solicitação do Cloud CDN é registrada no Cloud Logging. Para informações sobre a ativação e a desativação da geração de registros, consulte a Visão geral do balanceador de carga de aplicativo externo e a visão geral de geração de registros e monitoramento do Cloud CDN.

Os registros do Cloud CDN estão associados ao balanceador de carga de aplicativo externo ao qual os back-ends do Cloud CDN estão anexados. Os registros do Cloud CDN são indexados primeiro pela regra de encaminhamento e, depois, pelo mapa de URL.

Para visualizar os registros do Cloud CDN, siga estas etapas.

Console

  1. No console do Google Cloud , acesse a página Análise de registros.

    Acesse Análise de registros

  2. No menu Recurso, selecione Balanceador de carga de HTTP do Cloud.
  3. Para visualizar os registros, faça o seguinte:
    • Para visualizar todos os registros: selecione o menu Recurso e, depois, Todas as regras de encaminhamento.
    • Para visualizar os registros de uma regra de encaminhamento: selecione o nome da regra de encaminhamento na lista de regras de encaminhamento.
    • Para visualizar os registros de um mapa de URL usado por uma regra de encaminhamento: selecione uma regra de encaminhamento e, depois, um mapa de URL.

Solicitação disponibilizada no back-end

Para confirmar se uma solicitação é disponibilizada em um back-end ativado pelo Cloud CDN, existem três campos principais que devem ser procurados, da seguinte maneira:

  • httpRequest: quando uma solicitação é disponibilizada em um back-end, é possível ver se o cache foi preenchido e confirmar o URL da solicitação.
    • cacheFillBytes: NUMBER_OF_BYTES
    • cacheLookup: True
    • requestURL: URL
  • jsonPayload: no campo statusDetails, é possível confirmar se a resposta foi disponibilizada pelo back-end.
    • statusDetails: "response_sent_by_backend"

Solicitação disponibilizada no cache

A entrada de registro a seguir mostra uma ocorrência em cache.

 {
    insertId: "1oek5rg3l3fxj7"
    jsonPayload: {
        @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry"
        cacheId: "SFO-fbae48ad"
        statusDetails: "response_from_cache"
    }
    httpRequest: {
        requestMethod: "GET"
        requestUrl: "http://LOAD_BALANCER_IP_ADDRESS/static/us/three-cats.jpg"
        requestSize: "577"
        status: 304
        responseSize: "157"
        userAgent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36"
        remoteIp: "CLIENT_IP_ADDRESS"
        cacheHit: true
        cacheLookup: true
    }
    resource: {
        type: "http_load_balancer"
        labels: {
            zone: "global"
            url_map_name: "URL_MAP_NAME"
            forwarding_rule_name: "FORWARDING_RULE_NAME"
            target_proxy_name: "TARGET_PROXY_NAME"
            backend_service_name: ""
            project_id: "PROJECT_ID"
        }
    }
    timestamp: "2020-06-08T23:41:30.078651Z"
    severity: "INFO"
    logName: "projects/PROJECT_ID/logs/requests"
    trace: "projects/PROJECT_ID/traces/241d69833e64b3bf83fabac8c873d992"
    receiveTimestamp: "2020-06-08T23:41:30.588272510Z"
    spanId: "7b6537d3672e08e1"
}

O que é registrado

Além das informações gerais contidas na maioria dos registros, como gravidade, ID do projeto, número do projeto e carimbo de data/hora, os registros do balanceador de carga de aplicativo externo e do Cloud CDN contêm o seguinte:

  • O campo de registro HttpRequest, que captura o código de status HTTP, os bytes retornados e se uma pesquisa de cache e/ou um preenchimento de cache foi realizado.

  • O campo jsonPayload.cacheId, que indica o local e a instância de cache em que a resposta de cache foi disponibilizada. Por exemplo, uma resposta de cache disponibilizada em um cache em Amsterdã teria um valor cacheId de AMS-85e2bd4b, em que AMS é o código IATA e 85e2bd4b é um identificador opaco da instância de cache, porque alguns locais do Cloud CDN têm vários caches distintos.

  • Os campos statusDetails e cacheDetail do jsonPayload.

É possível filtrar os campos a seguir para determinar a ocorrência em cache, o status de ausência ou a revalidação de uma solicitação disponibilizada pelo Cloud CDN:

  • Ocorrência em cache

    jsonPayload.statusDetails=("response_from_cache" OR "byte_range_caching")

    ou

    httpRequest.cacheHit=true
    httpRequest.cacheValidatedWithOriginServer!=true

  • Ocorrência em cache validada com o servidor de origem

    jsonPayload.statusDetails="response_from_cache_validated"

    ou

    httpRequest.cacheHit=true
    httpRequest.cacheValidatedWithOriginServer=true

  • Ausência no cache

    jsonPayload.statusDetails="response_sent_by_backend"

    ou

    httpRequest.cacheHit!=true
    httpRequest.cacheLookup=true

Também é possível observar o status do cache no lado do cliente ao configurar um cabeçalho de resposta personalizado com cdn_cache_status.

Os campos de registro do tipo booleano normalmente só aparecem se tiverem um valor true. Se um campo booleano tem um valor false, esse campo é omitido do registro.

A codificação UTF-8 é obrigatória nesses campos. Os caracteres que não forem UTF-8 são substituídos por pontos de interrogação.

Quando o Cloud CDN disponibiliza uma solicitação de cliente ao iniciar solicitações de validação e/ou solicitações de intervalo de bytes, ele omite o campo serverIp da entrada de registro do Cloud Logging da solicitação do cliente. Isso ocorre porque o Cloud CDN pode enviar solicitações para endereços IP de vários servidores em reação a uma única solicitação do cliente.

Cada solicitação iniciada pelo Cloud CDN cria uma entrada de registro do Cloud Logging. A entrada de registro resultante contém um campo parentInsertId dentro do jsonPayload. Esse campo pode ser usado para identificar o insertId da entrada de registro na solicitação de cliente único que pediu que o Cloud CDN inicie a solicitação de validação ou de intervalo de bytes. Além disso, a entrada de registro identifica o Cloud CDN como o user agent.

Monitoring para Cloud CDN

O Cloud CDN exporta dados de monitoramento para o Cloud Monitoring. O Monitoring é usado para monitorar a integridade de uma implantação do Cloud CDN.

O Cloud Monitoring oferece painéis predefinidos que são ativados por padrão para fornecer um insight rápido sobre a integridade e o desempenho do sistema. O Monitoring também oferece um conjunto de painéis personalizados. As definições desses painéis personalizados estão disponíveis no GitHub no repositório monitoring-dashboard-samples como arquivos JSON. No diretório dashboards/networking, há um painel personalizado específico do Cloud CDN chamado cloud-cdn-monitoring.json. Faça upload desse painel personalizado para o Monitoring seguindo as instruções em Instalar painéis de amostra.

Painéis predefinidos

O Cloud Monitoring oferece painéis predefinidos para o Cloud CDN. Esses painéis mostram métricas importantes que permitem monitorar a distribuição de tráfego e a eficácia do cache sem configuração manual.

Ver painéis predefinidos

Siga as seguintes etapas para acessar os painéis predefinidos:

  1. No console do Google Cloud , acesse a página Cloud CDN.

    Acessar o Cloud CDN

  2. Clique no nome da origem para ver os painéis.

  3. Na página Detalhes da origem, clique em Monitoramento.

    Os painéis predefinidos aparecem por padrão.

Métricas nos painéis

Os painéis predefinidos fornecem as seguintes métricas principais sobre as origens da CDN:

  • Distribuição de tráfego do cliente

    Um mapa geográfico dinâmico que mostra a origem das solicitações do cliente. Esse mapa oferece uma visão geral global e visual de onde o tráfego está se originando. É possível ajustar o filtro de intervalo para analisar padrões de distribuição de tráfego em períodos específicos.

  • Métricas principais

    A tabela a seguir descreve as principais métricas mostradas no painel.

    Métricas Descrição
    Total de solicitações A contagem agregada de todas as solicitações HTTP/HTTPS processadas pelo Cloud CDN, servidas do cache ou do serviço de back-end de origem. O gráfico mostra a contagem de solicitações ao longo do tempo.
    Saída de cache O volume total de dados, em bytes, veiculados dos caches de borda do Cloud CDN. O gráfico de barras mostra o volume de saída ao longo do tempo.
    Proporção de erros total A porcentagem de todas as solicitações que resultaram em um código de status de erro 4xx ou 5xx. Essa métrica é um indicador principal da integridade geral do serviço.
    Proporção de erros 4xx A porcentagem de solicitações que resultaram em um código de status do lado do cliente. São códigos 4xx, como 404 Not Found ou 403 Forbidden. Esses erros indicam problemas com o conteúdo solicitado ou permissões do cliente.
    Proporção de erro 5xx A porcentagem de solicitações que resultaram em um código de status do lado do servidor. São códigos 5xx, como 502 Bad Gateway ou 503 Service Unavailable. Esses erros indicam problemas com o serviço de origem de back-end ou a configuração do balanceador de carga.
    Proporção de ocorrência em cache A proporção, em porcentagem, de solicitações veiculadas diretamente do cache do Cloud CDN em relação ao número total de solicitações.
    Preenchimento total de cache O volume total de dados, em bytes, recuperados do back-end de origem e armazenados no cache do Cloud CDN.

Painéis personalizados

O Monitoring permite a criação de painéis personalizados. Os painéis podem usar qualquer uma das métricas de monitoramento para balanceadores de carga de aplicativos externos. Veja a seguir alguns exemplos de snippets PromQL que podem ser colados em painéis personalizados do Monitoring.

Contagem de bytes da solicitação dividida por resultado de cache

Essa consulta se concentra em back-ends que têm o Cloud CDN ativado, o que é feito incluindo cache_result!="DISABLED".

sum by (cache_result) (
 rate({"loadbalancing.googleapis.com/https/response_bytes_count", monitored_resource="https_lb_rule", cache_result!="DISABLED"}[1m])
)

Latência de TCP de ida e volta do cliente em 95% para um destino de back-end específico

Essa consulta inclui backend_target_name="example-backend", que restringe o tráfego ao example-backend de back-end. Um back-end pode ser um bucket do Cloud Storage, um grupo de VMs do Compute Engine ou um back-end externo.

histogram_quantile(
 0.95,
 sum by (proxy_continent, le) (
   rate({"loadbalancing.googleapis.com/https/frontend_tcp_rtt_bucket",
     monitored_resource="https_lb_rule",
     backend_target_name="example-backend"
   }[1m])
 )
)

Contagem de solicitações dividida por classe de código de resposta para back-ends ativados do Cloud CDN

Essa consulta divide o tráfego por classe de código de resposta (2xx, 3xx, 4xx, 5xx) para ajudar a separar sucessos de clientes, erros de clientes e erros de servidor.

sum by (response_code_class) (
 count_over_time(
  {"loadbalancing.googleapis.com/https/request_count",
     monitored_resource="https_lb_rule",
     cache_result!="DISABLED"
   }[1h]
 )
)

Contagem de solicitações dividida por país de origem

Nessa consulta, o tráfego é detalhado por país de origem, que é determinado pelo uso de endereços IP do cliente.

sum by (client_country) (
 rate({"loadbalancing.googleapis.com/https/request_count", monitored_resource="https_lb_rule"}[1m])
)

A seguir

  • Para saber mais sobre geração registros, incluindo como exportar registros para o BigQuery, Pub/Sub ou Cloud Storage e como configurar métricas com base em registros para monitoramento e recebimento de alertas, consulte a Documentação do Cloud Logging.

  • Para aprender mais sobre os campos incluídos na entrada de registro httpRequest, consulte HttpRequest.