Guia Completo de Observabilidade

Configurando Grafana
para Monitorar Kubernetes

Boas praticas para implementar observabilidade full-stack no Kubernetes com Prometheus, Loki, Tempo e Alertmanager.

0
Metricas por node
0
Logs indexados
0
Traces capturados
0
MTTR de alertas
O Problema

Por que monitorar Kubernetes?

Sem observabilidade, operar clusters Kubernetes e uma pilotagem as cegas. Veja os problemas mais comuns em ambientes sem monitoramento adequado.

Cegueira Operacional

Pods reiniciam em loop, CPU satura, memoria vaza. Sem metricas, voce so descobre quando o cliente reclama.

Logs Espalhados

Cada pod gera stdout/stderr em seu container. Sem centralizacao, debugar um fluxo entre 20 microsservicos leva horas.

MTTR Elevado

Tempo medio de resolucao acima de 2 horas em incidentes criticos. Sem alertas proativos, a resposta e sempre reativa.

Tracing Inexistente

Requisicoes cruzam API Gateway, 5 servicos e 2 filas. Sem tracing distribuido, encontrar o gargalo e impossivel.

Custos Descontrolados

Pods alocam mais recursos do que usam. Sem metricas de utilizacao, voce paga 3x mais do que precisa em cloud.

Seguranca Reativa

Anomalias de trafego, pods comprometidos, escalacoes suspeitas. Sem monitoramento de seguranca, breaches passam despercebidos.

Fundamentos

Os 4 Pilares da Observabilidade

Uma stack completa de observabilidade exige cobertura em metricas, logs, tracing e alertas. Cada pilar resolve um problema especifico.

Prometheus

Coleta de Metricas

Prometheus coleta metricas numericas de cada componente do cluster via scraping HTTP. Armazena em TSDB local com retencao configuravel e expoe dados via PromQL, a linguagem de query mais poderosa para metricas de infraestrutura.

  • Scraping automatico via ServiceMonitor
  • TSDB otimizado para series temporais
  • Recording rules para queries complexas
  • Federation para multi-cluster
PromQL # CPU utilization por pod sum(rate( container_cpu_usage_seconds_total{ namespace="production" }[5m] )) by (pod) # Memory working set container_memory_working_set_bytes{ namespace="production", container!="" } / 1024 / 1024

Grafana Loki

Centralizacao de Logs

Loki centraliza todos os logs do cluster usando Promtail como agent. Diferente do Elasticsearch, Loki indexa apenas labels (nao o conteudo), tornando-o 10x mais barato em storage. LogQL permite filtrar e agregar logs em tempo real.

  • Promtail como DaemonSet em cada node
  • Indexacao por labels (baixo custo)
  • LogQL com operadores de pipeline
  • Multi-tenancy nativo
LogQL # Erros nos ultimos 5 min {namespace="production"} |= `error` | json | level="error" | line_format "{{.msg}}" # Rate de logs por servico sum(rate( {namespace="production"} |= `error` [5m] )) by (app)

Grafana Tempo

Rastreamento Distribuido

Tempo armazena traces distribuidos que mapeiam o caminho completo de cada requisicao entre microsservicos. Integra com OpenTelemetry, Jaeger e Zipkin. No Grafana, voce visualiza waterfall de spans com latencia de cada servico.

  • OpenTelemetry Collector como sidecar
  • Storage em object storage (S3/GCS)
  • Correlacao com logs e metricas
  • TraceQL para queries avancadas
OTel Config # otel-collector.yaml receivers: otlp: protocols: grpc: endpoint: "0.0.0.0:4317" exporters: otlp: endpoint: "tempo:4317" tls: insecure: true

Alertmanager

Alertas Proativos

Alertmanager recebe alertas do Prometheus, deduplica, agrupa e roteia para Slack, PagerDuty ou Webhooks. Com alertas bem configurados, voce antecipa incidentes antes que impactem usuarios. Integra com runbooks e rollback automatico.

  • Deduplicacao e agrupamento inteligente
  • Roteamento por severity/team
  • Silencing e inhibition rules
  • Webhook para rollback automatico
Alert Rule # alerts.yaml groups: - name: kubernetes rules: - alert: PodCrashLooping expr: | rate(kube_pod_container_status _restarts_total[15m]) > 0 for: 5m labels: severity: critical
Arquitetura

Arquitetura Completa

Visao end-to-end do fluxo de dados: do Kubernetes ate os dashboards no Grafana, passando por coleta, armazenamento e alertas.

Kubernetes

Pods, Nodes, Services

Prometheus

Scraping + TSDB

Loki + Promtail

Log aggregation

Tempo + OTel

Distributed tracing

Grafana

Dashboards unificados

Fluxo: K8s exporta metricas/logs/traces → Prometheus/Loki/Tempo armazenam → Grafana visualiza → Alertmanager notifica

Instalacao

Deploy via Helm Charts

A melhor pratica para instalar a stack completa no Kubernetes e usando o Helm chart oficial da Grafana. Um unico comando instala Prometheus, Loki, Tempo e Grafana pré-configurados.

grafana/lgtm-distributed

Stack completa de observabilidade em um unico Helm chart com valores customizaveis para producao.

Shell # Adicionar o repositorio Grafana helm repo add grafana https://grafana.github.io/helm-charts helm repo update # Criar namespace dedicado kubectl create namespace observability # Instalar stack completa (Prometheus + Loki + Tempo + Grafana) helm install lgtm-stack grafana/lgtm-distributed \ --namespace observability \ --set grafana.adminPassword=SuaSenhaForte123 \ --set prometheus.retention=30d \ --set loki.storage.type=s3 \ --set tempo.storage.trace.backend=s3 \ --values custom-values.yaml # Verificar deploy kubectl get pods -n observability # NAME READY STATUS AGE # grafana-6b8f9c5d7-x2k4m 1/1 Running 2m # prometheus-server-0 2/2 Running 2m # loki-distributed-0 1/1 Running 2m # tempo-distributed-0 1/1 Running 2m # Port-forward para acessar Grafana local kubectl port-forward svc/lgtm-stack-grafana 3000:80 -n observability
Dashboards

Dashboards Essenciais

Apos instalar a stack, estes sao os dashboards que toda equipe SRE/DevOps precisa ter no Grafana desde o dia zero.

CPU & Throttling

Utilizacao de CPU por pod/container, deteccao de throttling, requests vs limits e recomendacoes de right-sizing.

rate(container_cpu_usage_seconds_total[5m]) container_cpu_cfs_throttled_periods_total

Memory & OOMKill

Working set, RSS, cache, deteccao de memory leaks progressivos e historico de OOMKills por deployment.

container_memory_working_set_bytes kube_pod_container_status_last_terminated_reason

Pod Health & Restarts

Status dos pods (Running, Pending, Failed), restart count, readiness/liveness probe failures e crashloops.

kube_pod_status_phase kube_pod_container_status_restarts_total

Network & Ingress

Throughput de rede por pod, latencia de Ingress, error rates HTTP (5xx/4xx) e conexoes ativas por servico.

container_network_receive_bytes_total nginx_ingress_controller_requests

Quer implementar observabilidade
no seu Kubernetes?

Agende uma consulta gratuita com nossos especialistas em SRE e DevOps. Montamos a stack completa de monitoramento sob medida para seu cluster.