Para realizar a exploração e análise de dados no Kibana, é essencial garantir que o seu ambiente esteja configurado corretamente. Primeiro, verifique se você tem uma implantação funcional do Elastic Stack, incluindo o Elasticsearch e o Kibana. Para iniciar um cluster na Elastic Cloud, consulte o capítulo de instalação do Elastic Stack na nuvem. Além disso, se você estiver utilizando o Logstash para transformar dados antes de enviá-los para o Elasticsearch, é necessário garantir que ele esteja corretamente configurado e em execução.

Neste exemplo, utilizamos o conjunto de dados de tráfego de Rennes, um projeto que foi configurado no capítulo anterior com o Logstash para coletar e transformar dados de tráfego em tempo real. Para avançar, criaremos um novo fluxo de dados (data stream) no Elasticsearch, chamado metrics-rennes_traffic-raw. Esse fluxo nos permite explorar recursos mais avançados que não são suportados em fluxos de dados temporais (TSDS), como campos em tempo de execução e a linguagem de consulta do Elasticsearch (ES|QL). Esse fluxo será útil não apenas para esta análise, mas também para o monitoramento e detecção de anomalias no tráfego, temas abordados em capítulos futuros.

O primeiro passo na exploração de dados dentro do Kibana é a criação de uma "Data View". No passado, esse conceito era chamado de "index pattern", mas com o tempo ele evoluiu. Uma data view orienta o Kibana sobre quais índices ou grupos de índices ele deve acessar ao realizar buscas de dados, além de possibilitar a modificação de campos de dados, incluindo a criação de novos campos dinâmicos com a utilização de campos em tempo de execução.

Ao criar uma nova data view no Kibana, você poderá especificar detalhes como o nome do fluxo de dados, no nosso caso, metrics-rennes_traffic-raw, e o campo timestamp, que serve como referência para a organização temporal dos dados. Depois de salvar a data view, você estará pronto para explorar os dados no painel Discover, que fornece uma visão detalhada dos documentos indexados.

O painel Discover é dividido em várias seções importantes, como a lista de campos disponíveis, a barra de pesquisa e filtros, o histograma (que por padrão exibe o número de documentos agrupados por intervalos de tempo), a tabela de documentos (onde você pode visualizar os documentos conforme critérios de busca e filtros aplicados), e o seletor de tempo, que permite ajustar rapidamente o intervalo de tempo para análise.

Com a data view configurada, você pode começar a explorar os campos disponíveis. Por exemplo, ao clicar no campo average_vehicle_speed, você verá dois componentes principais: "Top values" (os valores mais frequentes para o campo selecionado) e "Distribution" (distribuição dos valores ao longo dos documentos). Esses recursos são extremamente úteis para identificar padrões, tendências ou até anomalias nos dados, como a velocidade média dos veículos no tráfego de Rennes.

A coluna "Top values" apresenta os valores mais comuns de um campo específico dentro dos documentos filtrados, fornecendo uma visão rápida das ocorrências predominantes. Já a "Distribution" oferece uma visualização gráfica da distribuição desses valores, útil especialmente para campos numéricos ou de data, permitindo identificar como os valores se distribuem ao longo do tempo ou entre diferentes segmentos de dados.

Além disso, com a versão 8.1 do Kibana, a funcionalidade de "Field statistics" foi integrada ao Discover. Isso permite que você visualize rapidamente estatísticas detalhadas sobre os campos, como a cardinalidade (quantidade de valores únicos) e a porcentagem de valores distintos, facilitando a análise de grandes volumes de dados.

Para uma análise mais profunda, é possível também adicionar colunas à tabela de documentos para exibir campos específicos. O Kibana permite que você personalize essa visualização, mostrando, por exemplo, o valor médio da velocidade dos veículos ao lado do timestamp, facilitando comparações e identificações de padrões diretamente na tabela.

Importante é lembrar que, ao trabalhar com fluxos de dados no Elasticsearch, você deve estar atento às políticas de ciclo de vida dos índices (ILM). Isso garante que os dados sejam armazenados de forma eficiente e gerenciados adequadamente ao longo do tempo. No caso do fluxo de dados metrics-rennes_traffic-raw, é fundamental configurar corretamente a política de ciclo de vida do índice, o mapeamento e as configurações de índice para garantir uma ingestão e consulta de dados otimizadas.

Por fim, o Kibana oferece uma infinidade de recursos e opções para explorar dados de forma detalhada. A criação e configuração de data views, aliada às poderosas ferramentas de visualização e análise de dados, permitem que você compreenda profundamente as métricas e tendências de tráfego, além de fornecer insights valiosos para a tomada de decisões baseadas em dados. A flexibilidade do Kibana em permitir o uso de campos dinâmicos, a análise em tempo real e a personalização de visualizações abre um vasto leque de possibilidades para os profissionais que lidam com grandes volumes de dados.

Como Criar Visualizações de Tráfego Usando o Kibana Lens

O Kibana Lens oferece uma forma poderosa e intuitiva de criar visualizações, especialmente útil para explorar grandes volumes de dados de tráfego. Utilizando a versão 8 do Elastic Stack, o Lens facilita a criação de representações visuais que podem ajudar a entender padrões e comportamentos nos dados. Nesta seção, discutiremos como criar diferentes tipos de visualizações utilizando o Kibana, com foco em gráficos de waffle, gráficos de donut, comparações de velocidade média e status de tráfego, além de visualizações multicamada e métricas avançadas.

Para começar, criamos uma visualização simples usando o gráfico de waffle. Esse tipo de gráfico é ideal para mostrar proporções, como a distribuição global de status de tráfego. Para isso, basta seguir alguns passos básicos:

  1. Acesse o Kibana, vá para a seção de "Analytics" e selecione "Visualize Library". Clique em "Create visualization" e escolha a opção "Lens".

  2. Selecione o dataset de tráfego "metrics-rennes_traffic-raw".

  3. Escolha o gráfico "Waffle" como tipo de visualização.

  4. Em seguida, clique no campo "traffic_status" na lista de campos à esquerda para inspecionar a distribuição dos dados.

  5. O dataset "Rennes Traffic" contém quatro tipos distintos de status de tráfego. Para ajustar, arraste o campo "traffic_status" para o espaço de trabalho central.

  6. No painel direito, clique na seção "Group by" e ajuste para 4 valores, correspondendo aos quatro status de tráfego presentes.

  7. Altere o nome da contagem de registros para "Distribuição do status de tráfego" para refletir corretamente o objetivo da visualização.

  8. Salve a visualização, atribua o título "[Rennes Traffic] Status de tráfego waffle", e adicione a tag "cookbook".

A visualização de waffle resultante permite ver de forma clara a distribuição de status de tráfego em diferentes localizações.

Outro tipo de visualização interessante é o gráfico de donut, que permite analisar a distribuição de tipos de estrada dentro de diferentes status de tráfego. Aqui, utilizamos um gráfico de donut com uma subdivisão, ou "sub-bucket", para entender melhor as categorias de tipos de estrada dentro de cada status de tráfego.

  1. Novamente, vá para "Visualize Library", clique em "Create visualization" e escolha a opção "Lens".

  2. Selecione o dataset "metrics-rennes_traffic-raw".

  3. Escolha o gráfico "Donut" como tipo de visualização.

  4. Arraste o campo "traffic_status" para o espaço de trabalho central e ajuste para mostrar os Top 4 valores.

  5. Em seguida, arraste o campo "max_speed" para a seção "Slice by", para que cada fatia do gráfico seja segmentada por tipo de estrada.

  6. No painel de aparência, defina o número de casas decimais para exibir 1 valor após a vírgula, tornando os percentuais mais legíveis.

  7. O gráfico exibirá agora duas camadas: a camada interna mostra o percentual de cada status de tráfego, enquanto a camada externa detalha as categorias de tipo de estrada dentro de cada status.

  8. Salve a visualização e atribua o título "[Rennes Traffic] Status de tráfego por tipo de estrada".

Esse tipo de visualização ajuda a correlacionar a condição do tráfego com as características das vias.

Uma outra abordagem poderosa é a comparação entre a velocidade média e o status de tráfego. Com o lançamento da versão 8 do Elastic Stack, o Kibana introduziu visualizações multicamada, que permitem sobrepor várias camadas de dados em uma única visualização. Essa técnica é extremamente útil para entender como diferentes variáveis se comportam ao longo do tempo.

  1. Novamente, acesse o "Visualize Library", crie uma nova visualização e escolha "Lens".

  2. Selecione o dataset "metrics-rennes_traffic-raw".

  3. Escolha o gráfico "Bar vertical percentage".

  4. Adicione "Records" e "traffic_status" ao espaço de trabalho e ajuste para os Top 4 valores de "traffic_status".

  5. Clique em "Add layer" e escolha o tipo de visualização "Line".

  6. Arraste o campo "@timestamp" para o eixo horizontal e "average_vehicle_speed" para o eixo vertical, ajustando a função de agregação para "Average".

  7. Alterando a cor e o posicionamento da linha, você pode comparar a distribuição do status de tráfego com a velocidade média global.

  8. Salve a visualização e dê o título "[Rennes Traffic] Velocidade média & Status de tráfego".

Essa visualização permite observar de forma clara como a distribuição do tráfego influencia a velocidade média global.

Por fim, o Kibana também permite a criação de visualizações avançadas de métricas. A funcionalidade de métricas avançadas é uma das novidades do Elastic 8 e possibilita a visualização de várias métricas organizadas em uma grade, levando em consideração a hierarquia das vias.

  1. Vá para "Visualize Library", crie uma nova visualização e escolha "Lens".

  2. Selecione o dataset "metrics-rennes_traffic-raw".

  3. Escolha o gráfico "Metric".

  4. Arraste "average_vehicle_speed" para a seção "Primary metrics".

  5. Adicione o campo "hierarchie" em "Break down by" para organizar a visualização de acordo com a hierarquia das vias.

  6. Modifique a agregação de "average_vehicle_speed" para "Average" e ajuste a paleta de cores para representar velocidades mais altas com a cor verde e as mais baixas com o vermelho.

  7. Para adicionar uma segunda métrica, arraste "max_speed" para a seção "Second metrics" e altere a agregação para "Average". Ajuste a formatação para exibir valores numéricos com duas casas decimais.

  8. Salve a visualização com o título "[Rennes Traffic] Velocidade por hierarquia de estrada".

Essa visualização avançada ajuda a identificar a relação entre a velocidade média e a velocidade máxima permitida, proporcionando uma visão mais detalhada sobre as características das vias.

Além dos gráficos mencionados, é importante entender que o uso adequado dos filtros e agregações pode gerar insights poderosos. Ao manipular visualizações complexas, como gráficos multicamada ou métricas avançadas, é possível identificar tendências e padrões ocultos nos dados, facilitando a análise de grandes volumes de informações. O ajuste da granularidade dos dados, a escolha de agregações apropriadas e a adaptação das visualizações ao contexto específico da análise são pontos essenciais para garantir que os dados sejam explorados de maneira eficaz.

Como Definir Funções Personalizadas para Controle de Acesso no Elastic Stack

O Elastic Stack oferece uma estrutura robusta para gerenciar o acesso de usuários aos dados e recursos dentro da plataforma. Para garantir que cada usuário tenha acesso adequado às informações de acordo com suas responsabilidades, a atribuição de funções (roles) é uma prática fundamental. Administradores podem assim controlar de forma eficaz o nível de acesso dos usuários, assegurando a segurança e a integridade do ambiente do Elastic Stack. No Elastic Stack 8, o uso de funções predefinidas traz diversas vantagens, mas a criação de funções personalizadas pode ser necessária quando o controle de acesso exige um nível mais detalhado.

As funções predefinidas no Elastic Stack simplificam o processo de gerenciamento de permissões, proporcionando uma maneira estruturada e segura de controlar quem pode fazer o quê dentro da plataforma. Isso garante, por exemplo, que apenas usuários autorizados possam realizar determinadas ações, ajudando a manter a conformidade com regulamentos de segurança e proporcionando um caminho claro de auditoria sobre quem acessou o quê. Além disso, as funções predefinidas facilitam a escalabilidade, permitindo que novos usuários sejam adicionados rapidamente sem a necessidade de configuração manual de permissões complexas.

Entretanto, uma limitação importante dessas funções predefinidas é que elas não podem ser modificadas. O conjunto de privilégios que compõe cada função é fixo. Para cenários mais específicos, como quando é necessário limitar o acesso a um conjunto reduzido de dados, a definição de funções personalizadas é essencial. Isso permite que administradores criem funções com privilégios finamente ajustados, garantindo que os usuários só possam acessar os dados necessários para suas funções.

A criação de funções personalizadas no Elastic Stack é um processo relativamente simples, especialmente quando se usa o Kibana para configurar os acessos. Vamos considerar dois casos práticos para ilustrar como isso pode ser feito.

Primeiramente, para criar uma função personalizada voltada para o acesso a dados de negócios, como por exemplo dados de tráfego de Rennes, o administrador deve acessar o Kibana e, no menu de gerenciamento de segurança, criar uma nova função. Defina o nome da função como "cookbook_business_reader" e, na seção de privilégios de índice, especifique o índice relevante (como "metrics-rennes_traffic-raw"). Atribua privilégios de leitura e visualização de metadados para garantir que o usuário tenha acesso apenas a dados de leitura. Após criar a função, o próximo passo é atribuí-la a um usuário, que terá acesso restrito a esses dados. Ao fazer login com esse usuário, será possível verificar que ele possui apenas permissões de leitura para o dashboard de tráfego de Rennes, sem acesso a outros tipos de dados.

Em seguida, para um segundo caso, voltado para dados de observabilidade, como logs, métricas e rastreamento de desempenho, o administrador pode criar uma função chamada "cookbook_observability_reader". Nesse caso, os índices relacionados à observabilidade, como logs-* ou metrics-apm-*, devem ser adicionados com privilégios de leitura. Ao associar essa função a um novo usuário, esse usuário terá acesso exclusivo às informações de observabilidade, sem permissão para acessar os dados de negócios. Dessa forma, é possível garantir que os usuários só tenham acesso ao que é relevante para suas funções.

A flexibilidade do Elastic Stack se reflete em sua capacidade de fornecer controle granular sobre as permissões de acesso, permitindo que os administradores configurem funções personalizadas que atendam às necessidades específicas da organização. O uso do controle de acesso baseado em funções (RBAC) do Kibana facilita a definição de regras precisas sobre quem pode acessar quais dados e realizar quais operações.

Quando as funções são criadas corretamente, as permissões de acesso podem ser verificadas diretamente nos dashboards e nas visualizações. Por exemplo, um usuário com a função de "business reader" verá apenas os dados relacionados ao tráfego de Rennes e não terá acesso às métricas de observabilidade, enquanto um usuário com a função de "observability reader" poderá acessar dados como logs e métricas, mas não verá os dados de tráfego.

Ao configurar essas funções, o administrador deve garantir que as permissões atribuídas estejam alinhadas com os requisitos operacionais e de segurança da organização. Além disso, é importante que o processo de criação de funções seja feito de forma criteriosa, considerando a necessidade de acesso dos usuários para evitar excessos ou restrições indevidas.

É fundamental também que, ao utilizar funções personalizadas, o administrador acompanhe regularmente as permissões concedidas, especialmente à medida que a organização cresce e novos dados ou recursos são adicionados ao Elastic Stack. A flexibilidade do RBAC pode ser aproveitada para adaptar rapidamente as permissões conforme as mudanças nas necessidades da empresa, garantindo que o controle de acesso seja sempre adequado.

Por fim, é importante destacar que, enquanto funções predefinidas são ideais para configurações básicas e situações comuns, a definição de funções personalizadas oferece o nível de controle necessário para ambientes mais complexos. Esse processo não apenas assegura que os usuários tenham acesso adequado, mas também fortalece a segurança da plataforma, mantendo a integridade dos dados e a conformidade com políticas de segurança.

Como a Redução de Amostras (Downsampling) Pode Otimizar Fluxos de Dados em Séries Temporais

No contexto da análise de dados em séries temporais, o processo de downsampling tem se mostrado uma ferramenta fundamental para otimizar a exploração de grandes volumes de dados. O conceito de downsampling refere-se à redução da granularidade dos dados, preservando as características essenciais e facilitando o armazenamento e a análise. Este processo é particularmente útil em sistemas de monitoramento que lidam com grandes quantidades de dados coletados de forma contínua, como métricas de uso de CPU e memória em clusters de Kubernetes.

Ao aplicar o downsampling, conseguimos manter a eficiência do armazenamento e garantir que os dados necessários para análises de longo prazo estejam disponíveis sem sobrecarregar o sistema com informações excessivas. A prática de downsampling pode ser configurada para ocorrer de maneira diferente ao longo das fases de vida dos dados. Por exemplo, durante a fase "hot" (dados mais recentes), podemos manter dados com alta granularidade, enquanto, em fases mais frias, podemos reduzir a frequência das amostras, sem comprometer a precisão das análises.

Como o Downsampling Funciona no Elastic Stack

Dentro do Elastic Stack, o downsampling pode ser aplicado diretamente às métricas coletadas pelo Elastic Agent, conforme abordado em um exemplo prático utilizando dados do Kubernetes. Para que o downsampling seja eficaz, é necessário que a integração do Elastic Agent suporte fluxos de dados em séries temporais (TSDS). Verificar a compatibilidade dessa funcionalidade em uma integração é um processo simples: ao acessar o Kibana e navegar até a seção de integrações, podemos verificar se a integração desejada está configurada para suportar TSDS. Caso contrário, o downsampling não será possível.

Após confirmar a compatibilidade, a personalização das políticas de ciclo de vida de índices (ILM) torna-se essencial. Essas políticas determinam como os dados são gerenciados ao longo do tempo, incluindo a redução da granularidade em diferentes fases da retenção dos dados. Por exemplo, enquanto na fase "hot" não aplicamos downsampling, nas fases "warm" e "cold" podemos definir intervalos maiores, como 1 hora ou 1 dia, para reduzir o volume de dados mantidos no sistema sem perder a capacidade de análise.

A Aplicação de Políticas de ILM no Contexto do Downsampling

O Elastic Stack oferece um conjunto de políticas de ILM para ajudar a gerenciar a vida útil dos dados. Essas políticas são particularmente úteis quando lidamos com fluxos de dados em grande escala, como aqueles gerados por sistemas de monitoramento em tempo real. Por exemplo, podemos configurar a retenção de dados para que, durante a fase "warm", os dados sejam downsampled a intervalos de 1 hora, e durante a fase "cold", o downsampling pode ser feito com intervalos de 1 dia. Essas configurações ajudam a reduzir significativamente o uso de armazenamento, ao mesmo tempo que garantem que os dados necessários para análises históricas ainda estejam disponíveis.

Além disso, é importante entender que o downsampling deve ser configurado de acordo com as necessidades específicas da aplicação e da análise que será realizada. A definição de intervalos de downsampling muito curtos pode resultar em dados excessivos e difíceis de gerenciar, enquanto intervalos muito longos podem prejudicar a precisão das análises em determinados contextos. Por isso, é crucial ajustar essas configurações com base no tipo de dados e no nível de detalhamento necessário para a análise.

O Impacto do Downsampling na Visualização de Dados

Ao aplicar o downsampling, os impactos na visualização dos dados também devem ser observados. No caso do exemplo prático utilizando o painel de métricas do Kubernetes, é possível notar que, apesar da redução da granularidade dos dados, as visualizações de uso de CPU e memória dos pods mantêm sua precisão mesmo com intervalos de downsampling de 5 minutos. Isso ilustra como o downsampling bem configurado pode manter a eficiência analítica sem sacrificar a qualidade das visualizações.

Em termos práticos, a configuração adequada do downsampling pode aumentar a eficiência do armazenamento e melhorar o desempenho das consultas de dados. Com isso, é possível realizar análises mais rápidas e menos dispendiosas em termos de recursos computacionais, o que é um benefício significativo em ambientes de produção, onde o tempo de resposta é crítico.

Considerações Finais

O downsampling é uma técnica poderosa quando aplicada corretamente, especialmente em sistemas de monitoramento e análise de dados de séries temporais, como aqueles usados em Kubernetes e outras plataformas de containerização. Ao entender os fundamentos dessa técnica e como ela se integra com as políticas de ciclo de vida de dados (ILM), os usuários podem otimizar suas operações de coleta e análise de dados, economizando armazenamento e melhorando o desempenho.

Além disso, vale destacar que o sucesso do downsampling depende da escolha apropriada dos intervalos de amostragem e da personalização das políticas de retenção de dados. A implementação dessas técnicas deve ser feita de maneira a equilibrar a eficiência com a precisão, garantindo que a análise de dados seja tanto eficaz quanto eficiente. A prática de monitoramento constante e ajustes nas políticas ao longo do tempo são essenciais para maximizar os benefícios dessa abordagem.