Ir para o conteúdo

Desafio 006: Investigue um Incidente de Observabilidade de Agente

Nível: L300 Tipo: Desafio Tempo: ~60 min 💰 Custo: Gratuito (local)

Cenário

O agente de suporte da OutdoorGear teve um pico de latência e uma requisição falhou. Você recebe uma pequena exportação de traces com spans raiz do agente e spans filhos de ferramentas/LLM. O analisador atual calcula métricas sobre os spans errados e reporta a causa raiz errada.

Sua tarefa é corrigir o analisador para que um engenheiro de plantão identifique o trace com falha, a dependência causadora, a taxa de erro e a latência p95.


Objetivo

Corrija starter_observability.py para que ele resuma o incidente corretamente e gere um código de validação.

Seu analisador final deve:

  • Isolar spans raiz de requisições do agente
  • Calcular taxa de erro apenas sobre requisições raiz
  • Calcular p95 por nearest-rank sobre requisições raiz
  • Identificar o trace raiz com falha
  • Atribuir causa raiz ao span de dependência com falha

Arquivos Iniciais

Salve estes arquivos em uma pasta chamada challenge-006/:

Arquivo Finalidade Download
traces.json Exportação mock de traces do agente Download
starter_observability.py Analisador de incidente quebrado Download
test_observability.py Testes de aceite Download
validate_observability.py Gera o código final de conclusão Download

Briefing do Desafio

Você recebe spans de trace e um analisador quebrado. Não há walkthrough: decida quais spans contam como requisições, como calcular métricas de SRE e como atribuir o incidente à dependência filha correta.


Restrições

  • Use apenas a biblioteca padrão do Python em starter_observability.py.
  • Não hardcode o dicionário final de resumo.
  • Métricas devem ser calculadas a partir dos spans.
  • Spans filhos podem explicar causa raiz, mas não devem inflar contagens de requisições.

Critérios de Aceite

Sua solução está completa quando:

  • python -m pytest test_observability.py passa
  • As requisições raiz são tr-001, tr-002, tr-003 e tr-004
  • A taxa de erro é 25.0
  • A latência p95 é 2200
  • O trace do incidente é tr-003
  • A causa raiz é inventory_api_timeout

Validação

Quando sua implementação estiver pronta, execute:

python -m pytest test_observability.py
python validate_observability.py

Digite o código de conclusão impresso por validate_observability.py:


Dicas

Dica 1 — Separe spans de requisição de spans filhos

Métricas de requisições raiz não devem contar cada ferramenta ou span de LLM.

Dica 2 — A causa raiz geralmente está abaixo da raiz

O span do agente diz que a requisição falhou; a dependência filha normalmente diz por quê.

Dica 3 — p95 tem uma definição

Use p95 por nearest-rank neste desafio.


Rubrica

Área Pontos Como fica bom
Filtragem de spans 25 Requisições raiz do agente são isoladas corretamente
Métricas 30 Taxa de erro e p95 usam o denominador certo
Causa raiz 25 Falha de dependência é identificada corretamente
Resumo do incidente 10 Saída concisa e acionável
Simplicidade 10 Análise local determinística

Labs Relacionados