Na computação, um evento é uma ocorrência que desencadeia uma resposta dentro de um sistema ou aplicação. Ações do usuário, como cliques ou pressionamentos de tecla, ou ocorrências geradas pelo sistema, como tráfego de rede recebido, são comumente conhecidas como eventos. Esses eventos são centrais em uma arquitetura orientada a eventos para comunicação e coordenação entre componentes desacoplados. Essa abordagem permite que os sistemas respondam a eventos à medida que acontecem, tornando-a ideal para processamento em tempo real e escalabilidade.
No entanto, uma arquitetura orientada a eventos apresenta vários desafios, especialmente aqueles relacionados à enorme quantidade de dados gerados e sua gestão. Por exemplo, garantir a consistência dos dados pode ser complicado, especialmente com processamento assíncrono. Gerenciar a ordem dos eventos e a compatibilidade do esquema, lidar com escalabilidade e garantir a tolerância a falhas para entrega confiável de eventos são essenciais, mas complexos.
Nesse contexto, a observabilidade também se tornou um aspecto fundamental das operações diárias, pois permite rastrear toda a atividade dentro de suas aplicações. Com dados precisos, a tomada de decisões é facilitada para garantir a confiabilidade, desempenho e segurança do sistema. E essa tarefa deve ser realizada de forma leve, aproveitando os melhores recursos e ferramentas disponíveis.
Os fundamentos de uma ferramenta de monitoramento baseada em eventos
Arquiteturas orientadas a eventos estão intimamente ligadas a ferramentas de monitoramento de eventos em tempo real. Essas ferramentas permitem monitoramento contínuo e alertas com base nos eventos que ocorrem dentro do sistema. Essa integração garante que anomalias e atualizações críticas sejam detectadas e tratadas prontamente, melhorando a confiabilidade e o desempenho do sistema.
Um produto ideal de observabilidade e baseado em eventos precisa atender a certos requisitos para ser verdadeiramente eficiente:
- Ser capaz de processar grandes quantidades de dados em tempo real.
- Gerar logs com informações detalhadas sobre os eventos.
- Oferecer alta confiabilidade e resiliência.
- Garantir a disponibilidade e persistência dos dados.
- Ser compatível com arquiteturas distribuídas.
Azion Real-Time Events foi desenvolvido para atender a esses requisitos críticos, visando monitorar o comportamento da aplicação de forma abrangente. Isso é alcançado por meio de:
- Coleta de dados de diversas fontes em toda a plataforma.
- Geração de logs detalhados para cada requisição processada, incluindo interações de usuário, aplicação e API.
- Captura de metadados para identificar e registrar o desempenho de requisições individuais.
- Habilitação da observabilidade em tempo real do comportamento do sistema, incluindo gestão de tráfego, detecção de anomalias e identificação de problemas.
Essa abordagem permite uma visão granular de seus dados, que pode ser acessada por meio de consultas precisas e flexíveis. Os usuários podem aproveitar ferramentas prontas para seleção, filtragem e ordenação de fontes de dados por meio do Azion Console ou CLI, ou utilizar o GraphiQL Playground para análises mais avançadas.
Como funciona o Real-Time Events
O volume de dados que alimenta o Real-Time Events vem de todos os eventos que ocorrem em mais de 100 locais de edge em nossa rede distribuída. Todos esses eventos são coletados e transformados para serem posteriormente classificados e categorizados de acordo com cada produto, para que nossos clientes possam consultá-los a qualquer momento que precisarem. O fluxo de trabalho do Real-Time Events pode ser ilustrado da seguinte forma:
Data Generation Layer
- Uma requisição chega à plataforma da Azion.
- A requisição é processada pelos serviços da Azion em um determinado local de edge.
- O sistema gera logs, contendo todas as informações relevantes relacionadas a essa requisição.
Data Transformation Layer
- O Distributed Event Broker lida com a distribuição, gestão e roteamento de logs de eventos entre diferentes componentes em um ambiente distribuído. Nesse caso, é baseado no Kafka, recebendo os eventos e processando-os em uma fila.
- Isso permite o desacoplamento de fontes de eventos de consumidores de eventos, facilitando a comunicação assíncrona entre eles.
- O ETL Processor transforma os dados recebidos do broker em um formato adequado e os carrega no sistema de armazenamento de dados de destino.
- Esse processo consolida dados de múltiplas fontes em uma única visão coesa.
- Os dados são armazenados em bancos de dados de eventos em formato columnar, permitindo uma recuperação de dados mais eficiente e compressão, e desempenho geral.
- Essa etapa permite armazenamento, bem como persistência e retenção de dados.
API and Presentation Layer
Uma vez que os dados são processados, transformados e armazenados:
- Os clientes da Azion podem acessar os dados via Real-Time Events, seja através do Azion Console, CLI ou da API GraphQL do Real-Time Events.
Principais recursos do Real-Time Events
Considerando que sistemas em tempo real devem processar eventos instantaneamente, sem atrasos ou interrupções, preocupações em torno da confiabilidade e resiliência surgiram durante o desenvolvimento do Real-Time Events. Nesse aspecto, ser uma plataforma de edge foi uma grande vantagem para acelerar nosso plano. Isso porque:
- Uma arquitetura distribuída robusta, com mais de 100 edge locations globalmente, facilita a gestão de alto tráfego, picos inesperados e todos os dados gerados.
- Essa arquitetura distribuída também ajuda a processar eventos de forma precisa e consistente, mesmo durante falhas de rede ou tempo de inatividade do servidor, capaz de se recuperar de falhas e funcionar sem perder dados.
- O Real-Time Events armazena dados de eventos de forma eficiente para análise histórica, auditoria ou depuração, garantindo persistência e acessibilidade dos dados.
- Processar eventos mais perto da fonte, no edge, reduz a latência e melhora o desempenho geral.
Para resumir, ao distribuir a carga de trabalho entre as edge locations, juntamente com sistemas redundantes e estratégias automáticas de failover, a plataforma pode lidar com volumes maiores de dados com maior resiliência e tolerância a falhas.
Com o Real-Time Events, você pode realizar uma análise aprofundada, verificando logs brutos em tempo real e consultando dados de diferentes fontes de dados, relacionadas a cada produto ou serviço da Azion que gerou os eventos, das últimas 168 horas, equivalente a 7 dias.
Além da visualização detalhada de logs, recursos de armazenamento e filtragem, o produto também oferece integração com outras ferramentas de análise, sejam da Azion ou de terceiros, e automação com edge functions para executar consultas dinâmicas.
Uma vez que suas aplicações comecem a receber tráfego, é possível consultar e diagnosticar esses eventos. Cada fonte de dados exibe informações detalhadas de eventos relacionados a tópicos como acesso, comportamento e desempenho de produtos conectados às suas edge applications.
Conheça mais sobre Real-Time Eventsb Data Sources ou consulte a documentação para saber Como adicionar filtros no Real-Time Events.
Real-Time Events GraphQL API
O Real-Time Events já fornece uma visão detalhada de seus dados. No entanto, pensando em dar mais controle e granularidade aos nossos clientes, decidimos adicionar endpoints de API baseados em GraphQL para aprimorar ainda mais as possibilidades deste produto. Com a Real-Time Events GraphQL API, você pode explorar diferentes variáveis de seus logs de dados brutos, tudo em uma única consulta, simplificando o processo de recuperação de dados e melhorando o desempenho.
Por que usar GraphQL? GraphQL permite que os desenvolvedores solicitem dados específicos, diferente das APIs REST, onde cada endpoint está vinculado a um recurso específico e várias requisições podem ser necessárias para reunir todos os dados necessários. Isso torna o GraphQL mais eficiente, evitando sobrecarga ou subcarga, reduzindo assim a carga do servidor e os custos operacionais. Além disso, a popularidade da GraphQL API foi fundamental, assim como ser uma linguagem de consulta fácil de aprender, permitindo que desenvolvedores experientes e pessoas não técnicas consultem dados de forma intuitiva.
Os recursos da API GraphQL do Real-Time Events incluem:
- Conjuntos de Dados: um conjunto de dados é uma coleção estruturada de dados que pode ser consultada, incluindo campos específicos relacionados ao contexto de cada produto.
- Filtragem: usar uma consulta mais específica e granular é uma forma de obter dados exatos e diretos de suas requisições. Por exemplo, consultar informações de um determinado campo em vez de todos os dados de um conjunto de dados, assim como usar parâmetros para definir ainda mais sua análise.
- Ordenação: esse recurso permite organizar e classificar os dados recebidos de um conjunto de dados de acordo com a ordem dos eventos, seja ascendente ou descendente.
- Paginação: a API GraphQL da Azion usa paginação de offset e limit para receber dados dentro do intervalo específico que você definiu.
- Reamostragem: esse recurso permite que você reamostre seus dados para exibir uma quantidade menor de pontos de dados exibidos em gráficos. Ele funciona de acordo com a regra que você passa no campo
function
.
Visite a documentação para explorar exemplos de queries para a API GraphQL e leia mais sobre Como investigar requisições com a API GraphQL de Real-Time Events GraphQL API.
GraphiQL Playground
Procurando testar algumas consultas e se familiarizar com a Real-Time Events GraphQL API? O GraphiQL Playground é uma ferramenta para executar consultas ou explorar como construí-las.
Events vs. Metrics
A suíte de produtos Observe da inclui o Real-Time Metrics e o Real-Time Events. Mesmo que possam parecer semelhantes para os usuários mais iniciantes, cada um tem um foco específico. Ao usá-los juntos, você tem uma ferramenta poderosa que torna sua análise mais abrangente e profunda.
Métricas são indicadores específicos e quantificáveis que representam dados, coletados em intervalos regulares e apresentados em um formato agregado (médias, somas, contagens), sendo previsíveis e consistentes, fornecendo um fluxo contínuo de dados. Nesse caso, os dados podem ser exibidos em gráficos, facilitando a análise de tendências, compreensão do comportamento a longo prazo e identificação de gargalos de desempenho.
Por outro lado, eventos representam uma ação que ocorreu. Eventos não são contínuos e ocorrem irregularmente, com base em gatilhos ou condições específicas. Eventos são exibidos em logs, fornecendo dados qualitativos, muitas vezes com informações contextuais, como timestamps, metadados e descrições. Ideal para detecção de incidentes, auditoria, registro e alertas em tempo real.
Nesse aspecto, o Real-Time Metrics mostra tendências de desempenho a longo prazo, enquanto o Real-Time Events foca em entender melhor o contexto para anomalias e mudanças no sistema relacionadas ao desempenho e comportamento. Por exemplo: através do Real-Time Metrics, você pode observar a tendência em suas requisições atendidas com sucesso. Em certos períodos, você detecta uma queda nas métricas relacionadas a requisições de uma geolocalização específica. Consultar os logs relacionados aos eventos em torno dessas requisições pode ajudá-lo a identificar o problema e corrigi-lo.
Conclusão
O Azion Real-Time Events foi desenvolvido como uma solução para suas necessidades envolvendo:
- Coleta de dados de diferentes fontes.
- Monitoramento do comportamento da aplicação.
- Criação de consultas complexas e obtenção de dados em tempo real relacionados à funcionalidade e desempenho das aplicações.
- Solução de problemas, depuração e identificação de erros, e tomada de medidas preventivas.
Ele também pode ser útil para casos de uso mais abrangentes, como:
- Observabilidade de segurança: monitoramento de eventos de segurança em tempo real em toda a rede, detectando e respondendo a ameaças à medida que surgem, garantindo mitigação rápida de riscos potenciais na edge, antes de chegarem à sua origem.
- Conformidade: rastreamento e aplicação de conformidade com regulamentos, monitorando dados de eventos em sistemas, certificando que todos os processos atendem a requisitos legais e da indústria.
- Auditoria: fornecendo às empresas uma visão abrangente de ações, mudanças e acessos em sistemas.
- Desenvolvimento orientado a dados: permitindo feedback ao analisar eventos em tempo real e interações de usuários, permitindo que os desenvolvedores otimizem e ajustem recursos com base em dados de uso do mundo real.
Dessa forma, você pode interagir e utilizar seus dados de eventos de forma mais estratégica e aumentar sua observabilidade, obtendo insights abrangentes em tempo real. Tudo isso também capacita você a tomar decisões mais informadas rapidamente e de forma eficiente para garantir o melhor desempenho e experiência em seu ambiente digital.
Além disso, ao incorporar recursos avançados como endpoints baseados em GraphQL, oferece granularidade e flexibilidade aprimoradas, permitindo que os usuários ajustem suas consultas de dados precisamente às suas necessidades.
Conheça mais sobre o Azion Real-Time Events e como começar a usá-lo na documentação.