Introdução
Até agora, exploramos as métricas com Prometheus e a visualização com Grafana. Falta um pilar crucial da observabilidade: os Logs.
Enquanto as métricas nos dão uma visão agregada e quantitativa do sistema, os logs nos fornecem um registro detalhado, evento por evento, do que está acontecendo. Eles são indispensáveis para a depuração e a análise de causa raiz.
Um log é um registro imutável e com carimbo de data/hora de um evento. Em um sistema distribuído, como um pipeline de dados moderno, os logs são gerados por múltiplos componentes (orquestradores, APIs, bancos de dados, etc.). Centralizar esses logs em um único local para busca e análise é fundamental.
Para esta tarefa, usaremos o Loki, um sistema de agregação de logs inspirado no Prometheus.
Conheça o Loki
O Loki é um agregador de logs multitenant, altamente escalável e econômico. Desenvolvido pela Grafana Labs, ele se diferencia de outras soluções por não indexar o conteúdo completo dos logs. Em vez disso, ele indexa apenas um pequeno conjunto de metadados (rótulos ou labels), assim como o Prometheus. Isso o torna mais simples de operar e mais barato para armazenar grandes volumes de logs.
A "pilha" Loki consiste em:
- Loki: O servidor principal que armazena e processa os logs.
- Promtail: O agente responsável por coletar os logs e enviá-los para o Loki.
- Grafana: A interface de visualização para consultar e exibir os logs (sim, a mesma que usamos para métricas!).
Configurando o Ambiente
Vamos adicionar Loki e Promtail à nossa stack de observabilidade.
Atenção!
Continue trabalhando no diretório 11-observability/01-prometheus
da página anterior.
Exercício
Atenção
O volume - ./logs:/app/logs
compartilha uma pasta de logs entre a API e o Promtail, permitindo que o Promtail colete especificamente os logs gerados pela nossa aplicação.
Instrumentando a API para Logs Estruturados
Antes de executar nossa stack, vamos criar uma API simples que gera logs estruturados e informativos.
Exercício
Exercício
Exercício
Executando a Stack Completa
Exercício
Explorando Logs no Grafana
Assim como fizemos com o Prometheus, precisamos adicionar o Loki como uma fonte de dados no Grafana.
Exercício
Agora, vamos para a parte divertida: consultar os logs.
Exercício
O Loki usa uma linguagem de consulta chamada LogQL, que é inspirada na PromQL.
Exercício
Exercício
Desafio 1: Melhorando a Instrumentação
Desafio 2: Dashboard Integrado
Desafio 3: Cenários de Falha
Limpeza do Ambiente
Exercício