Assine para receber notificações de novos posts:

Como a Cloudflare instrumenta serviços usando o Workers Analytics Engine

18/11/2022

6 min. de leitura
How Cloudflare instruments services using Workers Analytics Engine

O Workers Analytics Engine é uma nova ferramenta, anunciada no início deste ano, que permite que desenvolvedores e equipes de produtos criem análises de dados de séries temporais sobre qualquer coisa, com alta dimensionalidade, alta cardinalidade e escala, sem esforço. Criamos o Analytics Engine para que as equipes obtenham informações sobre o código em execução no Workers, forneçam análises aos clientes finais ou até mesmo criem faturamento baseado no uso.

Neste post do blog, explicamos como usamos o Analytics Engine para criar o Analytics Engine. Instrumentamos nossa própria API SQL do Analytics Engine usando o próprio Analytics Engine e usamos esses dados para encontrar bugs e priorizar novos recursos do produto. Esperamos que isso sirva de inspiração para outras equipes que procuram maneiras de instrumentar seus próprios produtos e obter feedback.

Por que precisamos do Analytics Engine?

O Analytics Engine permite gerar eventos (ou “pontos de dados”) a partir do Workers com apenas algumas linhas de código. Usando a API SQL ou GraphQL, você pode consultar esses eventos e criar informações úteis sobre a pilha de negócios ou tecnologia. Para saber mais sobre como começar a usar o Analytics Engine, confira nossa documentação para desenvolvedores.

Desde que lançamos o beta aberto do Analytics Engine, em setembro, adicionamos novos recursos rapidamente com base no feedback dos desenvolvedores. No entanto, tivemos duas grandes lacunas em nossa visibilidade do produto.

Primeira, nossa equipe de engenharia precisa responder a perguntas clássicas de observabilidade, como: quantas solicitações estamos recebendo, quantas dessas solicitações resultam em erros, qual é a natureza desses erros etc. Eles precisam ser capazes de visualizar dados agregados (como taxa de erro média ou tempo de resposta p99) e detalhar eventos individuais.

Segunda, como este é um produto recém-lançado, estamos buscando informações sobre o produto. Ao instrumentar a API SQL, podemos entender as consultas que nossos clientes escrevem e os erros que eles veem, o que nos ajuda a priorizar os recursos que faltam.

Percebemos que o Analytics Engine seria uma ferramenta incrível para responder às nossas perguntas de observabilidade técnica e também para coletar informações sobre o produto. Isso ocorre porque podemos registrar um evento para cada consulta em nossa API SQL e, em seguida, consultar problemas de desempenho agregados, bem como erros individuais e consultas executadas por nossos clientes.

Na próxima seção, mostramos como usamos o Analytics Engine para monitorar essa API.

Adicionar instrumentação à nossa API SQL

A API SQL do Analytics Engine permite consultar dados de eventos da mesma forma que faria em um banco de dados comum. Por décadas, o SQL tem sido a linguagem mais comum para consultar dados. Queríamos fornecer uma interface que permitisse que você começasse imediatamente a fazer perguntas sobre seus dados sem precisar aprender uma nova linguagem de consulta.

Nossa API SQL analisa as consultas SQL do usuário, as transforma e valida e, em seguida, as executa nos servidores de banco de dados de back-end. Em seguida, gravamos informações sobre a consulta novamente no Analytics Engine para que possamos executar nossas próprias análises.

Escrever dados no Analytics Engine a partir do Cloudflare Workers é muito simples e está explicado em nossa documentação. Instrumentamos nossa API SQL da mesma forma que nossos usuários e este trecho de código mostra os dados que gravamos no Analytics Engine:

Com esses dados agora armazenados no Analytics Engine, podemos obter informações sobre todos os campos que estamos relatando.

Consultar insights

Ter nossas análises em um banco de dados SQL dá a você a liberdade de escrever qualquer consulta que desejar. Comparado ao uso de algo como métricas, que geralmente são predefinidas e com finalidade específica, você pode definir qualquer conjunto de dados personalizado que quiser e interrogar seus dados para fazer novas perguntas com facilidade.

Precisamos oferecer suporte a conjuntos de dados que compreendem trilhões de pontos de dados. Para conseguir isso, implementamos um método de amostragem chamado Adaptive Bit Rate (ABR). Com o ABR, se você tiver grandes quantidades de dados, suas consultas podem retornar eventos amostrados para responder em tempo razoável. Se você tiver quantidades de dados mais comuns, o Analytics Engine consultará todos os seus dados. Isso permite que você execute qualquer consulta que desejar e ainda obtenha respostas em um curto espaço de tempo. No momento, você deve levar em consideração a amostragem na forma como faz suas consultas, mas estamos investigando para torná-la automática.

Qualquer ferramenta de visualização de dados pode ser usada para visualizar suas análises. Na Cloudflare, usamos muito o Grafana (e você também pode). Ele é particularmente útil para casos de uso de observabilidade.

Observando os tempos de resposta da consulta

Uma consulta à qual prestamos atenção nos fornece informações sobre o desempenho de nossos clusters de banco de dados de back-end:

Como você pode ver, o percentil 99% (correspondente ao 1% das consultas mais complexas a serem executadas) às vezes atinge picos de até 300 ms. Mas, em média, nosso back-end responde às consultas em 100 ms.

Essa visualização é gerada a partir de uma consulta SQL:

Insights de clientes a partir de dados de alta cardinalidade

Outro uso do Analytics Engine é extrair insights do comportamento dos clientes. Nossa API SQL é particularmente adequada para isso, pois você pode aproveitar ao máximo o poder do SQL. Graças à nossa tecnologia ABR, até consultas extensas podem ser realizadas em grandes conjuntos de dados.

Usamos essa capacidade para ajudar a priorizar melhorias no Analytics Engine. Nossa API SQL oferece suporte a um dialeto bastante padrão de SQL, mas ainda não possui recursos completos. Se um usuário tentar fazer algo sem compatibilidade em uma consulta SQL, ele receberá uma mensagem de erro estruturada. Essas mensagens de erro são relatadas no Analytics Engine. Podemos agregar os tipos de erros que nossos clientes encontram, o que ajuda a informar quais recursos priorizar em seguida.

A API SQL retorna erros no formato type of error: more details, e assim podemos pegar a primeira parte, antes dos dois pontos, para nos informar o tipo de erro. Agrupamos por ela e obtemos uma contagem de quantas vezes esse erro aconteceu e quantos usuários ele afetou:

Para realizar a consulta acima usando um sistema de métricas comum, precisaríamos representar cada tipo de erro com uma métrica diferente. Relatar tantas métricas de cada microsserviço cria desafios de escalabilidade. Esse problema não acontece com o Analytics Engine, porque ele foi projetado para lidar com dados de alta cardinalidade.

Outra grande vantagem de um armazenamento de alta cardinalidade, como o Analytics Engine, é que você pode se aprofundar em detalhes. Se houver um grande pico de erros de SQL, podemos querer descobrir quais clientes estão tendo problemas para ajudá-los ou identificar qual função eles desejam usar. Isso é fácil de fazer com outra consulta SQL:

Dentro da Cloudflare, historicamente confiamos em consultar nossos servidores de banco de dados de back-end para esse tipo de informação. A API SQL do Analytics Engine agora nos permite abrir nossa tecnologia para nossos clientes, para que eles possam obter facilmente informações sobre seus serviços em qualquer escala.

Conclusão e o que vem a seguir

Os insights que reunimos sobre o uso da API SQL são uma entrada super útil para nossas decisões de priorização de produtos. Já adicionamos compatibilidade para as funções substring e position que foram usadas nas visualizações acima.

Observando os principais erros de SQL, vemos vários erros relacionados à seleção de colunas. Esses erros vêm principalmente de alguns problemas de usabilidade relacionados ao plug-in Grafana. Adicionar compatibilidade para a função DESCRIBE deve mitigar isso porque, sem isso, o plug-in Grafana não entende a estrutura da tabela. Isso, assim como outras melhorias em nosso plug-in Grafana, está em nosso roteiro.

Também podemos ver que os usuários estão tentando consultar intervalos de tempo para dados mais antigos, que não existem mais. Isso sugere que nossos clientes gostariam de estender a retenção de dados. Recentemente, estendemos nossa retenção de 31 para 92 dias e ficaremos observando para ver se devemos oferecer mais extensão.

Vimos muitos erros relacionados a falhas comuns ou mal-entendidos da sintaxe SQL adequada. Isso indica que poderíamos fornecer melhores exemplos ou explicações de erros em nossa documentação para ajudar os usuários a solucionar suas dúvidas.

Fique atento à nossa documentação para desenvolvedores para se manter informado conforme continuamos a iterar e adicionar mais recursos.

Você pode começar a usar o Workers Analytics Engine agora. O Analytics Engine está em versão beta aberta com retenção gratuita de 90 dias. Comece a usá-lo hoje ou junte-se à nossa comunidade no Discord para conversar com a equipe.

Protegemos redes corporativas inteiras, ajudamos os clientes a criarem aplicativos em escala de internet com eficiência, aceleramos qualquer site ou aplicativo de internet, evitamos os ataques de DDoS, mantemos os invasores afastados e podemos ajudar você em sua jornada rumo ao Zero Trust.

Acesse 1.1.1.1 a partir de qualquer dispositivo para começar a usar nosso aplicativo gratuito que torna sua internet mais rápida e mais segura.

Para saber mais sobre nossa missão de construir uma internet melhor, comece aqui. Se estiver procurando uma nova carreira para trilhar, confira nossas vagas disponíveis.
Developer Week (PT)Logs (PT)Data (PT)Cloudflare Workers (PT)Português

Seguir no X

Cloudflare|@cloudflare

Posts relacionados

02 de abril de 2024 às 13:00

Trazer Python para o Workers usando Pyodide e WebAssembly

Apresentamos a compatibilidade com Python para o Cloudflare Workers, agora em versão beta aberta. Renovamos nossos sistemas para oferecer a compatibilidade com Python, a partir do próprio tempo de execução dos Workers até a forma como o Workers é implantado na rede da Cloudflare...

17 de novembro de 2022 às 14:05

Incremente seus sites no Cloudflare Pages com a disponibilidade geral do Pages Functions

o Pages é oficialmente uma plataforma full stack, com o Pages Functions agora em disponibilidade geral. O Pages está aproveitando o poder e a escalabilidade do Workers e especializando os recursos para que se alinhem à experiência do desenvolvedor do Pages...