DEV Community

Anni Caroline Carneiro
Anni Caroline Carneiro

Posted on • Edited on

Dicas para criação de dashboards de monitoramento no Kibana

Autoras: Anni Carneiro, Beatriz Simonato Ali, Ana Claudia de Assis Souza

O Kibana é uma ferramenta de visualização de dados e análise que faz parte do Elastic Stack (ELK). Com o Kibana você consegue visualizar e filtrar dados dos sistemas, e com esses dados, criar gráficos, mapas e dashboards interativos.

Elastic Stack

Aqui vamos explorar mais como facilitar os logs do sistema e outras variáveis para que consigamos fazer gráficos de monitoramento e tirar maior proveito da ferramenta.

Níveis de Logs

Nivelar sempre os logs do sistema é importante para sabermos o que é erro, o que é grave ou apenas uma mensagem de informação. Para isso temos os seguintes níveis:

DEBUG - este tipo de log é útil para os desenvolvedores durante o processo de depuração, inclui dados do fluxo e variáveis internas, normalmente este log é não é enviado no Kibana, e utilizado mais em IDE de desenvolvimento para análises, pois em algumas aplicações apareceriam um número enorme de logs, gerando um certo "lixo", que dificulta visualizar ou filtrar os dados.
INFO - utilizado para mensagens normais da aplicação, incluem informações de eventos significativos, desde inicializações e operações concluídas
WARNING - mensagens que indicam que algo inesperado aconteceu mas que não impede o funcionamento da aplicação
ERROR - Mensagens que indicam que ocorreu um erro que impediu a execução de uma operação. Esses eventos geralmente requerem atenção imediata.
CRITICAL - Mensagens que indicam falhas graves que resultam na interrupção da execução do programa ou na necessidade de intervenção imediata. Geralmente, representam situações que não podem ser recuperadas.
TRACE - Mensagens extremamente detalhadas que são úteis principalmente para depuração em nível de código. Incluem informações sobre cada passo da execução.

Depois de ter entendido todos esses níveis , podemos utilizar este filtro para criar gráficos que mostrem quando o sistema possui alguma mensagem de ERRO ou WARNING por exemplo, para que as devidas providências sejam tomadas (gerar um alerta ou abrir um bug para investigação)

Exemplo de gráfico nível de logs no dia

Variáveis de negócio

Podemos também criar gráficos nos dashboards para monitorar algumas variáveis que estão passando pelo sistema, por exemplo, em um microsserviço de inventário, podemos com os logs, fazer um filtro em tipos de reserva/pedido e fazer a contagem de quantos itens/produtos foram reservados ou quantos tipos de pedido/reserva foram feitos. Mesmo que possamos ter alguma outra fonte de origem confiável (como o banco de dados), com estes logs podemos rastrear se o microsserviço possa ter algum tipo de bug ao realizar/calcular os produtos ou a reserva.

Monitoramento de status das requisições

O Kibana oferece em sua "library" alguns gráficos para adicionar no dashboard, um exemplo deles é o "AKS - APIserver Request Code"
Com ele você pode acompanhar os HTTP status codes que estão acontecendo na aplicação assim que um deploy acontecer no ambiente de produção por exemplo.

Gráfico API Request Code da Livraria do Kibana

Criação de índices (Index Management)

Integrado ao Elasticsearch, o Kibana se torna poderoso para análise de dados em tempo real. Criar índices no Kibana é essencial para maximizar a eficiência e a eficácia da análise de dados. Eles oferecem uma estrutura que não apenas melhora a performance das consultas, mas também facilita a visualização, organização e interpretação de informações.

Você consegue adicionar aos logs da sua aplicação e configurá-los no Kibana Index Management, índices que vão facilitar sua pesquisa e filtros no Kibana. Lembrando que deve estar integrado ao Elastic Search.

Um exemplo de caso de uso é, se há aplicações em diversos ambientes, pode-se criar índices para diferenciar estes logs da aplicação em cada ambiente, assim, ajudando rapidamente a criar dashboards e gráficos.

ïndice criado para filtrar logs no ambiente de desenvolvimento (DEV)

Visualizações do Vega

Kibana aliado ao Vega oferece uma poderosa combinação para visualização de dados. Enquanto o Kibana fornece uma interface intuitiva e uma variedade de opções de visualização, o Vega permite aos usuários criar gráficos personalizados e complexos. Juntos, eles capacitam analistas e desenvolvedores a transformar dados em insights visuais significativos, adaptando-se às necessidades específicas de cada projeto.

Para criar uma visualização com Vega é necessário entender a estrutura JSON. Aqui está um exemplo básico de estrutura JSON para uma visualização:

{
  "$schema": "https://vega.github.io/schema/vega/v5.json",
  "description": "Um gráfico de barras simples.",
  "width": 400,
  "height": 200,
  "padding": 5,
  "data": [
    {
      "name": "table",
      "values": [
        {"category": "A", "amount": 28},
        {"category": "B", "amount": 55},
        {"category": "C", "amount": 43},
        {"category": "D", "amount": 91},
        {"category": "E", "amount": 81},
        {"category": "F", "amount": 53},
        {"category": "G", "amount": 19},
        {"category": "H", "amount": 87}
      ]
    }
  ],

  "signals": [
    {
      "name": "tooltip",
      "value": {},
      "on": [
        {"events": "rect:mouseover", "update": "datum"},
        {"events": "rect:mouseout",  "update": "{}"}
      ]
    }
  ],

  "scales": [
    {
      "name": "xscale",
      "type": "band",
      "domain": {"data": "table", "field": "category"},
      "range": "width",
      "padding": 0.05,
      "round": true
    },
    {
      "name": "yscale",
      "domain": {"data": "table", "field": "amount"},
      "nice": true,
      "range": "height"
    }
  ],

  "axes": [
    { "orient": "bottom", "scale": "xscale" },
    { "orient": "left", "scale": "yscale" }
  ],

  "marks": [
    {
      "type": "rect",
      "from": {"data":"table"},
      "encode": {
        "enter": {
          "x": {"scale": "xscale", "field": "category"},
          "width": {"scale": "xscale", "band": 1},
          "y": {"scale": "yscale", "field": "amount"},
          "y2": {"scale": "yscale", "value": 0}
        },
        "update": {
          "fill": {"value": "steelblue"}
        },
        "hover": {
          "fill": {"value": "red"}
        }
      }
    },
    {
      "type": "text",
      "encode": {
        "enter": {
          "align": {"value": "center"},
          "baseline": {"value": "bottom"},
          "fill": {"value": "#333"}
        },
        "update": {
          "x": {"scale": "xscale", "signal": "tooltip.category", "band": 0.5},
          "y": {"scale": "yscale", "signal": "tooltip.amount", "offset": -2},
          "text": {"signal": "tooltip.amount"},
          "fillOpacity": [
            {"test": "isNaN(tooltip.amount)", "value": 0},
            {"value": 1}
          ]
        }
      }
    }
  ]
}

Enter fullscreen mode Exit fullscreen mode

Após configurar seu JSON, você pode visualizar a visualização antes de completa. O Kibana renderizará a visualização com base nas definições fornecidas.

Vega permite também adicionar interatividades em seus gráficos/visualizações. Você pode definir eventos como mouseover, click, etc., para tornar a visualização mais dinâmica.

Exemplos de Uso

Gráficos de Dispersão: Para visualizar a relação entre duas variáveis.
Gráficos de Linhas: Para mostrar tendências ao longo do tempo.
Gráficos de Barras: Para comparar quantidades entre diferentes categorias.

O Kibana oferece exemplos prontos de visualizações em Vega que você pode usar como ponto de partida e personalizar conforme necessário.

Conclusão

Ao entender e implementar os diferentes níveis de logs, é possível filtrar informações críticas, como erros e avisos, que ajudam na tomada de decisões rápidas. Além disso, ao monitorar variáveis de negócio e o status das requisições, as equipes podem obter insights valiosos sobre o desempenho da aplicação e identificar áreas que necessitam de melhorias.

O gerenciamento de índices no Kibana, em conjunto com o Elasticsearch, proporciona uma estrutura robusta para organizar e visualizar dados de forma eficaz, facilitando a análise em tempo real.

Criar visualizações no Vega dentro do Kibana oferece uma flexibilidade poderosa para personalizar e melhorar suas análises de dados. Com um entendimento básico da estrutura JSON e as opções disponíveis no Vega, você pode criar visualizações que atendam exatamente às suas necessidades.

Com essas práticas, os usuários podem não apenas criar dashboards informativos, mas também responder rapidamente a incidentes, garantindo que os sistemas operem de maneira otimizada.

Esses são apenas alguns exemplos mas o Kibana tem muito a ser explorado, muitas ferramentas, dashboards e gráficos que cabem com sua necessidade.

Top comments (0)