Ao trabalhar com grandes volumes de dados em tempo real, como os relacionados ao tráfego de veículos, a capacidade de visualizar informações de forma clara e eficaz torna-se essencial. O Canvas oferece uma ferramenta poderosa para criar painéis interativos que permitem aos usuários explorar dados de forma dinâmica, utilizando consultas SQL para extrair informações específicas de fontes como o Elasticsearch. A seguir, apresentamos um guia detalhado sobre como construir visualizações para monitorar o tráfego utilizando o Canvas, desde a consulta SQL até a personalização dos gráficos.

Comece criando um gráfico de áreas para visualizar o tráfego congestionado ao longo do tempo. Utilize a consulta SQL a seguir para filtrar os dados necessários:

sql
FROM "metrics-rennes_traffic-raw"
WHERE traffic_status = 'congested' OR traffic_status = 'heavy' GROUP BY hour ORDER BY hour

Esta consulta retorna a contagem de eventos de tráfego congestionado ou pesado agrupados por hora. Após verificar a prévia dos dados e salvar a consulta, ajuste a aparência do gráfico. No Canvas, vá para a aba Display, configure o eixo X para a variável 'hora' e o eixo Y para 'localizações'. Alterando a cor para um tom específico de verde, o gráfico ficará mais consistente visualmente. O próximo passo é ajustar a opacidade do gráfico para 50%, criando uma aparência mais limpa.

Uma vez que o gráfico de áreas esteja pronto, é possível adicionar um segundo elemento para ilustrar o total de congestionamentos utilizando uma imagem repetida. Para isso, clone o título "TRAFFIC JAM OVER TIME" e altere para "TOTAL TRAFFIC JAM". Em seguida, adicione um gráfico do tipo "Image Repeat", onde a imagem de congestionamento será repetida conforme o valor das localizações. A consulta SQL para este gráfico deve ser:

sql
SELECT COUNT(*)/10000 as locations
FROM "metrics-rennes_traffic-raw" WHERE traffic_status = 'congested' OR traffic_status = 'heavy'

Ajuste a imagem repetida definindo o tamanho da imagem e a contagem máxima de 50 e 33, respectivamente.

Em seguida, você pode incluir um gráfico de barras verticais para ilustrar a velocidade média do tráfego ao longo do tempo. Para isso, clone o título "TRAFFIC JAM OVER TIME" e substitua por "AVERAGE SPEED OVER TIME". Utilize a seguinte consulta SQL para calcular a velocidade média:

sql
SELECT HOUR_OF_DAY("@timestamp") hour, AVG("average_vehicle_speed") speed FROM "metrics-rennes_traffic-raw" GROUP BY hour ORDER BY hour

Para configurar o gráfico de barras, altere o eixo X para 'hora' e o eixo Y para 'velocidade', removendo as dimensões de cor para simplificar a visualização. Além disso, adicione um estilo de container com opacidade de 30% e ajuste a configuração do gráfico para deixar os eixos mais discretos, criando uma visualização mais limpa.

Após a criação desses gráficos, adicione métricas de tráfego resumidas para fornecer insights rápidos sobre o desempenho do tráfego. Isso pode incluir a velocidade média dos veículos, o número de locais com veículos em excesso de velocidade, e o número de locais congestionados. Para cada uma dessas métricas, utilize consultas SQL específicas, como:

sql
SELECT AVG(average_vehicle_speed) metric
FROM "metrics-rennes_traffic-raw"

Outro exemplo para medir locais com excesso de velocidade:

sql
SELECT COUNT(DISTINCT location_reference) metric FROM "metrics-rennes_traffic-raw"
WHERE average_vehicle_speed/max_speed > 1

Após configurar as métricas, adicione um filtro de tempo para controlar o intervalo de dados exibidos nos gráficos, permitindo que o usuário explore diferentes períodos e compreenda as variações de tráfego ao longo do tempo.

Além das opções descritas, o Canvas oferece flexibilidade para integrar outras visualizações, como gráficos de linha, mapas, detecção de anomalias e até mesmo visualizações criadas no Kibana Lens. Uma característica útil do Elastic Stack 8.x é a capacidade de reutilizar painéis salvos na Visualize Library, o que permite criar workpads mais ricos sem a necessidade de recriar elementos do zero.

O Canvas também proporciona a personalização avançada de cada elemento, seja para ajustar cores, fontes, tamanhos ou opacidade, o que torna a criação de dashboards interativos uma tarefa intuitiva, mesmo para aqueles sem experiência em programação.

Esses recursos podem ser usados não apenas para monitorar o tráfego, mas também para alertar sobre anomalias e facilitar a tomada de decisões em tempo real. A utilização de alertas e ferramentas de detecção de anomalias garante que os dados sejam analisados de forma proativa, permitindo que as equipes de operação respondam rapidamente a mudanças inesperadas no tráfego.

Além disso, é importante entender que, ao trabalhar com grandes volumes de dados em tempo real, a eficiência das consultas SQL e a otimização da visualização são cruciais. Ao desenvolver dashboards interativos, é fundamental considerar a performance e a clareza das informações para garantir que os dados não apenas sejam apresentados de forma correta, mas também de maneira eficaz, facilitando a interpretação e a ação baseada em dados.

Como o Monitoramento Sintético e o Profiling Universal Transformam a Observabilidade de Aplicações Web

O monitoramento sintético é uma abordagem robusta e eficaz para avaliar o desempenho de sites e aplicações web. Ele oferece não apenas a verificação de disponibilidade, mas também uma análise profunda da experiência do usuário, identificando problemas como páginas lentas, links quebrados ou funcionalidades com falhas. A grande vantagem desse tipo de monitoramento é sua capacidade de rodar de forma automatizada e em intervalos regulares, o que garante um monitoramento contínuo e consistente do desempenho e da disponibilidade da aplicação.

No contexto de implantações no Elastic, os monitores sintéticos operam como serviços completamente gerenciados na infraestrutura global da Elastic, o que elimina a necessidade de provisionar máquinas ou implementar agentes adicionais. Contudo, se o seu site estiver em uma localização não publicamente acessível, há a possibilidade de configurar locais privados para realizar os testes diretamente de sua própria infraestrutura. Essa flexibilidade proporciona uma cobertura ampla, adaptando-se às necessidades específicas de cada ambiente.

Além da configuração básica de monitores sintéticos via a aplicação Synthetics no Kibana, existe uma abordagem ainda mais poderosa, chamada de "Project Monitor". Este método permite que os monitores sintéticos sejam definidos como código, em um repositório controlado por versão, proporcionando um gerenciamento mais ágil e integrado com fluxos de trabalho de integração contínua (CI) e entrega contínua (CD). Ao utilizar a integração com o Elastic Agent, é possível escalar o monitoramento sintético de maneira eficiente e automatizada.

Dentro dos tipos de monitores disponíveis, destacam-se o Page Monitor, que avalia o carregamento e renderização de uma única página, e os Lightweight Monitors, que verificam o status e o desempenho de endpoints de rede. O monitor HTTP, por exemplo, assegura que os endpoints selecionados retornem os códigos de status corretos, enquanto o protocolo ICMP verifica a disponibilidade de hosts na rede, sem avaliar o funcionamento de serviços específicos. Já o TCP é utilizado para confirmar se os serviços de um host estão ativos, monitorando a resposta das portas específicas.

Além disso, o monitoramento sintético permite a configuração de alertas automaticamente, possibilitando que o administrador seja notificado sempre que um monitor estiver fora do ar. As informações coletadas pelos monitores sintéticos são armazenadas nos fluxos de dados do Elasticsearch, e com o gerenciamento flexível do ciclo de vida dos dados, é possível personalizar a retenção das informações, adaptando a infraestrutura à necessidade de armazenamento e acessibilidade dos dados.

Em um cenário de monitoramento mais avançado, o Profiling Universal surge como uma funcionalidade revolucionária no Elastic Observability, oferecendo uma visão detalhada do desempenho do sistema e da aplicação em tempo real, com uma sobrecarga mínima quando comparado às ferramentas tradicionais de profiling. Essa funcionalidade permite uma análise profunda, identificando a utilização de recursos a nível de código do kernel, facilitando a identificação de gargalos de desempenho e sobrecarga de recursos, como a CPU.

Ao aplicar o Universal Profiling em um ambiente Kubernetes, por exemplo, é possível obter visibilidade abrangente dos métodos, classes, threads e containers, o que é crucial para localizar os workloads mais intensivos em termos de uso de CPU. A configuração do profiling em Kubernetes envolve uma série de etapas que, ao serem seguidas corretamente, resultam em um monitoramento contínuo e eficaz do desempenho dos containers, ajudando a detectar quais processos estão consumindo mais recursos e a otimizar a utilização do sistema.

Adicionalmente, ao integrar o profiling com o Kibana, a visualização dos dados coletados oferece múltiplas perspectivas de análise, como a identificação de containers mais exigentes em termos de processamento. A interface do Kibana permite a interação com os dados de maneira intuitiva, facilitando a análise dos stacktraces e oferecendo um diagnóstico preciso sobre as condições de desempenho da aplicação.

Além da implementação técnica do monitoramento sintético e do profiling, é fundamental compreender a importância da observabilidade contínua para a manutenção de sistemas complexos. A combinação de diferentes ferramentas de monitoramento e profiling, como o Elastic Agent e o Project Monitor, permite não apenas a detecção precoce de problemas, mas também a otimização constante do ambiente de produção, garantindo a entrega de uma experiência de usuário estável e de alta qualidade. Em um cenário de microserviços e containers, o monitoramento eficaz é indispensável para a detecção de falhas antes que elas impactem os usuários finais.