O Risco Oculto: Dependências Circulares na Observabilidade
Quando um incidente acontece, seu stack de monitoramento deve ser o sistema mais confiável da casa. Mas o que acontece quando seu pipeline de observabilidade depende dos mesmos clusters Kubernetes, service meshes e infraestrutura que ele deveria observar? Isso é uma dependência circular — e é um assassino silencioso de confiabilidade.
Na Airbnb, milhares de serviços dependem de infraestrutura compartilhada. O pipeline de métricas deles foi construído sobre os mesmos sistemas que precisavam monitorar. Quando esses sistemas falhavam, dashboards apagavam, alertas paravam de disparar e as ferramentas que deveriam guiar a recuperação se tornavam parte da parada. Essa história não é incomum. Conforme as organizações consolidam em plataformas como Kubernetes e Istio, o risco cresce.
A solução? Trate seu stack de observabilidade como um sistema de produção cuja disponibilidade deve exceder a do que ele observa. Aqui está como a Airbnb fez isso.

Isolando Computação: Clusters Dedicados Sem Sobrecarga
A equipe de observabilidade da Airbnb enfrentou dois extremos:
- Rodar em clusters de produção compartilhados — sobrecarga operacional mínima, mas fortemente acoplado aos aplicativos sendo monitorados.
- Operar seus próprios clusters Kubernetes — isolamento total, mas pesada carga operacional.
Nenhum funcionou. O primeiro introduziu dependências circulares; o segundo era insustentável para uma equipe pequena.
A solução "ideal" deles: clusters Kubernetes dedicados gerenciados pela equipe de Cloud, mas não compartilhados com cargas de trabalho de produto ou infraestrutura. Isso preservou Kubernetes como uma base gerenciada enquanto reduzia domínios de falha compartilhados.
# Exemplo: Manifesto de cluster de observabilidade dedicado (simplificado)
apiVersion: v1
kind: Namespace
metadata:
name: observability
---
apiVersion: v1
kind: ResourceQuota
metadata:
name: observability-quota
namespace: observability
spec:
hard:
requests.cpu: "100"
requests.memory: "200Gi"
limits.cpu: "200"
limits.memory: "400Gi"
persistentvolumeclaims: "10"
Para manter a confiabilidade, eles coordenam mudanças com a equipe de Cloud para que apenas uma grande mudança chegue por vez, e as mudanças são validadas em clusters de prioridade mais baixa primeiro.
Repensando Rede: Libertando-se do Service Mesh
O tráfego de observabilidade é exclusivamente de alto volume — ordens de magnitude maior que o tráfego de negócios. A Airbnb usa Istio como service mesh, mas depender do mesmo data plane para monitoramento e tráfego de negócios criou uma dependência circular. Pior, picos de telemetria podiam degradar o tráfego de aplicação.
A solução deles: uma camada de entrada de rede L7 personalizada baseada em Envoy, rodando independente da camada de computação compartilhada. Esse proxy faz load balancing do tráfego e roteia requisições de leitura/escrita para os backends corretos.
# Exemplo: Configuração Envoy para entrada de observabilidade
static_resources:
listeners:
- name: observability_ingress
address:
socket_address:
address: 0.0.0.0
port_value: 9090
filter_chains:
- filters:
- name: envoy.filters.network.http_connection_manager
typed_config:
"@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
stat_prefix: ingress_http
route_config:
name: local_route
virtual_hosts:
- name: backend
domains: ["*"]
routes:
- match:
prefix: "/api/v1/write"
route:
cluster: metrics_backend
timeout: 5s
http_filters:
- name: envoy.filters.http.router
Esse desacoplamento desbloqueou roteamento baseado em cabeçalho — cada um dos 1.000+ serviços da Airbnb mapeia para um backend de cluster específico via um cabeçalho de tenant. Também permite espelhar métricas para destinos alternativos e controle de acesso refinado.
Para mais sobre construção de sistemas prontos para produção, confira Beyond Demos: Building Production-Ready AI Agents with Gemini 3 & 6 Open-Source Frameworks.

Monitorando os Monitores: Meta-Monitoramento com Dead Man's Switch
Depois de construir resiliência no pipeline de métricas, como saber quando o próprio motor de métricas está quebrado? A Airbnb roda um conjunto separado de instâncias Prometheus dedicadas a monitorar o stack de observabilidade — isolado dos nós Kubernetes do próprio stack de observabilidade e em diferentes zonas de disponibilidade.
Mas e se essa camada de meta-monitoramento falhar? Em vez de recursão infinita, eles usam um Dead Man's Switch:
- Uma regra de alerta do Prometheus que sempre dispara enquanto a raspagem está saudável.
- O Alertmanager envia continuamente esses alertas para um tópico AWS SNS externo.
- Um alarme CloudWatch monitora a taxa de mensagens recebidas.
- Se as mensagens pararem — porque Prometheus caiu, a raspagem parou ou o Alertmanager não consegue enviar — o alarme dispara e o plantão é acionado.
# Exemplo: Regra de alerta Dead Man's Switch
# prometheus-rules.yaml
groups:
- name: meta-monitoring
rules:
- alert: DeadMansSwitch
expr: vector(1)
labels:
severity: none
annotations:
summary: "Dead Man's Switch — Estou vivo"
Isso garante que mesmo que seu monitoramento dos monitores fique silencioso, você ainda seja acionado.
Limitações e Cuidados
- Custo: Rodar clusters dedicados e camada de rede personalizada adiciona custo de infraestrutura. A Airbnb considerou que valeu a pena pela confiabilidade, mas organizações menores podem achar abordagens mais simples (ex: backends de métricas multi-cloud) mais econômicas.
- Complexidade: Gerenciar sua própria camada de entrada baseada em Envoy requer conhecimento profundo de redes. Nem toda equipe tem isso.
- Meta-monitoramento ainda tem pontos cegos: Um dead man's switch diz que o sinal parou, mas nem sempre por quê. Você ainda precisará de logs e traces para descobrir a causa raiz das falhas de meta-monitoramento.
Próximos Passos para Aprendizado
- Mergulhe em padrões de operadores Kubernetes para construir controladores personalizados que gerenciam infraestrutura de observabilidade.
- Estude o HTTP connection manager do Envoy para roteamento avançado e injeção de falhas.
- Explore configurações de alta disponibilidade do Prometheus com Thanos ou Cortex para agregação multi-cluster.

Conclusão: Trate Monitoramento como um Sistema de Produção
A jornada da Airbnb mostra que monitoramento confiável requer design para momentos desconfortáveis — parciais, redes degradadas, dependências falhando. Os princípios generalizam além de qualquer stack tecnológico específico:
- Mapeie dependências críticas em seu pipeline de observabilidade.
- Isole domínios de falha — não deixe seu monitoramento compartilhar a mesma computação e rede que seus aplicativos.
- Sempre tenha um caminho independente para os sinais que acionam pager e resposta a incidentes.
Tratando monitoramento como um sistema de produção cuja disponibilidade deve exceder o que ele observa, você preserva visibilidade durante incidentes, acelera recuperação e constrói confiança para seus usuários e seu negócio.
Para mais padrões de confiabilidade multiplataforma, veja On-Device Function Calling Goes Cross-Platform Inside Google AI Edge Gallery's Latest Update.
Agradecimentos à equipe de Observabilidade da Airbnb por compartilhar sua abordagem. Todos os nomes de produtos e logotipos são propriedade de seus respectivos donos.