Monitoramento com Loki e Grafana
Este documento descreve como utilizar Loki e Grafana para visualizar e analisar logs do AT Learning Gap Engine.
Acesso ao Grafana
O Grafana está disponível na seguinte URL:
https://grafana.arcotech.cloud/
Introdução
O que é Loki?
Loki é um sistema de agregação de logs inspirado no Prometheus, projetado para ser muito eficiente em termos de custo e operação. Ao contrário de outros sistemas de logs, o Loki não indexa o conteúdo dos logs, mas apenas um conjunto de rótulos para cada fluxo de log, o que o torna mais leve e econômico.
O que é Grafana?
Grafana é uma plataforma de análise e visualização de métricas que permite consultar, visualizar, alertar e explorar suas métricas, logs e traces independentemente de onde estão armazenados. É a interface ideal para visualizar os dados coletados pelo Loki.
Por que usar Loki + Grafana?
- Eficiência: Loki é projetado para ser eficiente em termos de recursos
- Integração: Funciona perfeitamente com Grafana
- Consultas poderosas: Suporta LogQL, uma linguagem de consulta inspirada no PromQL
- Escalabilidade: Pode escalar horizontalmente para lidar com grandes volumes de logs
- Formato JSON: Ideal para logs estruturados como os gerados pelo AT Learning Gap Engine
Integração com o AT Learning Gap Engine
O AT Learning Gap Engine está configurado para gerar logs em formato JSON estruturado usando o StructuredLogFormatter. Este formatador garante que todos os logs incluam informações importantes como:
- Timestamp
- Nível de log
- Nome do logger
- ID de correlação
- Mensagem
- Módulo e função
- Linha do código
- Contexto adicional
- Informações de exceção (quando aplicável)
Fluxo de Processamento de Logs
- Os serviços geram logs usando o logger estruturado
- O
StructuredLogFormatterconverte os logs para JSON - O Loki coleta e armazena os logs
- O Grafana permite visualizar e consultar os logs
Consultas LogQL para Análise de Logs
LogQL é a linguagem de consulta do Loki, inspirada no PromQL do Prometheus. Aqui estão algumas consultas úteis para analisar os logs do AT Learning Gap Engine.
IMPORTANTE: Todas as consultas devem começar com o filtro
{io_arcotech_app="at-learning-gap-engine"}para selecionar os logs da aplicação.
Consultas Básicas
-
Filtrar por serviço:
-
Filtrar por tipo de log:
-
Filtrar por nível de log:
-
Filtrar por ID de contexto:
-
Filtrar por ID de correlação:
Consultas Avançadas
-
Encontrar erros em um serviço específico:
-
Rastrear uma requisição completa usando ID de correlação:
Exemplos Práticos
Exemplo 1: Rastreamento de uma Requisição Completa
Para rastrear uma requisição completa, siga estes passos:
-
Encontre o ID de correlação nos logs:
-
Use o ID de correlação para visualizar todo o fluxo:
-
Analise o tempo de execução:
Exemplo 2: Análise de Erros
Para analisar erros no sistema:
-
Visualize todos os erros recentes:
-
Agrupe erros por serviço:
-
Identifique os erros mais frequentes:
Exemplo 3: Consultas com Formato JSON
Com o novo formato JSON, você pode usar o operador | json para extrair campos específicos:
-
Extrair todos os campos:
-
Filtrar por campos específicos:
-
Visualizar campos específicos:
Exemplo 4: Análise de Performance
Para analisar a performance do sistema:
-
Visualize os tempos de execução médios por operação:
-
Identifique operações com picos de tempo de execução:
-
Compare a performance entre diferentes serviços:
Melhores Práticas
Otimização de Consultas
- Use rótulos para filtrar: Sempre filtre primeiro por rótulos antes de aplicar filtros de conteúdo
- Limite o intervalo de tempo: Use intervalos de tempo menores para consultas mais rápidas
- Evite expressões regulares complexas: Elas podem ser lentas em grandes volumes de dados
- Sempre inclua o filtro da aplicação: Todas as consultas devem começar com
{io_arcotech_app="at-learning-gap-engine"}
Visualização Eficiente de Logs no Grafana
Para visualizar logs no formato JSON de forma eficiente no Grafana, siga estas recomendações:
Uso do Operador | json
O operador | json do LogQL é essencial para trabalhar com logs no formato JSON. Ele permite extrair e visualizar campos específicos:
Este operador analisa automaticamente os pares chave-valor e permite filtrar por campos específicos:
{io_arcotech_app="at-learning-gap-engine"} | json | service="PedagogicalItemHierarchyService" | operation="generate_hierarchy"
Visualização de Campos Específicos
Para visualizar apenas campos específicos dos logs:
{io_arcotech_app="at-learning-gap-engine"} | json | line_format "{{.timestamp}} - {{.service}} - {{.operation}} - {{.log_level}}"
Formatação de Tabelas
Para visualizar logs em formato de tabela, use a visualização "Table" no Grafana e configure as colunas para exibir os campos desejados:
- Selecione a visualização "Table"
- Em "Transform", escolha "Labels to fields"
- Configure as colunas para mostrar os campos relevantes
Dicas para Trabalhar com Formato JSON
- Use o operador
| jsonpara extrair campos - Para campos aninhados, use a notação de ponto:
target.id,prioritization.criteria - Para filtrar por valores numéricos, use operadores de comparação:
execution_time_ms > 1000 - Para buscar texto em campos específicos, use o operador
|~:context_id |~ "123"
Conclusão
A combinação de Loki e Grafana oferece uma solução poderosa e eficiente para visualizar e analisar logs do AT Learning Gap Engine. Com as consultas LogQL adequadas e as técnicas de visualização descritas acima, é possível obter insights valiosos sobre o comportamento do sistema, identificar problemas rapidamente e monitorar a performance em tempo real.
Para acessar o Grafana, visite https://grafana.arcotech.cloud/ e utilize as consultas fornecidas neste documento, sempre começando com o filtro {io_arcotech_app="at-learning-gap-engine"}.