Se você não sabe o que está acontecendo no seu sistema…
você não tem sistema. Você tem sorte.
Observabilidade é o que te salva quando:
produção quebra
API fica lenta
cliente reclama
Vamos montar isso do jeito certo.
1. O que é observabilidade (na prática)
Três pilares:
Logs → o que aconteceu
Métricas → como está
Tracing → por onde passou
Sem isso = cegueira total
2. Logs estruturados (JSON)
Dependência
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
</dependency>logback-spring.xml
<configuration>
<appender name="JSON" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="net.logstash.logback.encoder.LogstashEncoder"/>
</appender>
<root level="INFO">
<appender-ref ref="JSON"/>
</root>
</configuration>Exemplo de log
log.info("User created", Map.of(
"userId", user.getId(),
"email", user.getEmail()
));👉 Agora seu log vira isso:
{
"message": "User created",
"userId": 1,
"email": "teste@email.com"
}3. Métricas com Prometheus
Dependência
<artifactId>spring-boot-starter-actuator</artifactId>application.yml
management:
endpoints:
web:
exposure:
include: "*"
metrics:
export:
prometheus:
enabled: trueEndpoint
http://localhost:8080/actuator/prometheus4. Métrica customizada
@Autowired
private MeterRegistry meterRegistry;
public void processOrder() {
meterRegistry.counter("orders.created").increment();
}5. Tracing distribuído (OpenTelemetry)
Dependência
<dependency>
<groupId>io.opentelemetry.instrumentation</groupId>
<artifactId>opentelemetry-spring-boot-starter</artifactId>
</dependency>application.yml
otel:
exporter:
otlp:
endpoint: http://localhost:43176. Exemplo com tracing
@GetMapping("/test")
public String test() {
return "ok";
}👉 automaticamente gera:
traceId
spanId
7. Stack completa com Docker
version: '3'
services:
prometheus:
image: prom/prometheus
ports:
- "9090:9090"
grafana:
image: grafana/grafana
ports:
- "3000:3000"
jaeger:
image: jaegertracing/all-in-one
ports:
- "16686:16686"8. Fluxo completo
Requisição entra
Gateway gera trace
Serviço A chama B
Kafka envia evento
Tudo rastreado
Boas práticas
✔ Sempre log estruturado
✔ Nunca logar senha/token
✔ Métricas por serviço
✔ Tracing obrigatório em microserviço
Conclusão
Sem observabilidade: você não escala
Com observabilidade: você controla o sistema
