Pular para o conteúdo
Skillpedia
Deploy e nuvem (DevOps)107 mil · #356

observability-and-instrumentation

Adiciona ferramentas para monitorar o que o código faz em produção. Ajuda a entender se algo deu errado e por quê, facilitando a correção.

O que ela faz

Esta habilidade ajuda a entender o que seu código está fazendo quando está em uso. Ela adiciona 'sinais' (como registros e medições) ao código para que você possa ver e diagnosticar problemas.

Quando usar

  • ✓Ao criar qualquer nova funcionalidade que será usada por pessoas.
  • ✓Quando ocorrem problemas em produção e você não sabe o motivo.
  • ✓Ao configurar alertas para saber quando algo está errado.

Exemplo do que pedir para a IA

“Como posso saber por que um pagamento falhou para um cliente específico?”

Quer saber mais? Abra as seções abaixo.

Como usar

O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.

Link da skill

https://github.com/addyosmani/agent-skills/blob/main/skills/observability-and-instrumentation/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/addyosmani/agent-skills/blob/main/skills/observability-and-instrumentation/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

Você adiciona ao seu código instruções que geram informações (logs, métricas, rastros) sobre o que está acontecendo. Essas informações são como pistas que ajudam a entender o comportamento do sistema.

Instalação

Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.

No terminal (Claude Code, Codex, Cursor), na pasta do projeto:

npx skills add addyosmani/agent-skills --skill observability-and-instrumentation

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/addyosmani/agent-skills/main/skills/observability-and-instrumentation/SKILL.md -o SKILL.md
Conteúdo técnico (SKILL.md)

Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.

Observabilidade e Instrumentação

Visão Geral

Código que você não consegue observar é código que você não consegue operar. Observabilidade é a capacidade de responder "o que o sistema está fazendo e por quê?" de fora, usando a telemetria que o código emite. A instrumentação não é um complemento pós-lançamento — ela é escrita junto com o recurso, da mesma forma que os testes. Se um recurso é lançado sem telemetria, o primeiro bug reportado pelo usuário se torna arqueologia em vez de uma consulta.

Quando Usar

  • Construindo qualquer recurso que será executado em produção
  • Adicionando um novo serviço, endpoint, job em segundo plano ou integração externa
  • Um incidente de produção demorou muito para ser diagnosticado ("não conseguimos dizer o que aconteceu")
  • Configurando ou revisando regras de alerta
  • Revisando um PR que adiciona I/O, retentativas, filas ou chamadas entre serviços

NÃO para:

  • Diagnosticar uma falha que está acontecendo agora — use a habilidade debugging-and-error-recovery (a observabilidade é o que torna essa habilidade rápida na próxima vez)
  • Profiling e otimização de lentidão medida — use a habilidade performance-optimization
  • Listas de verificação de monitoramento no dia do lançamento e gatilhos de rollback — veja a habilidade shipping-and-launch; esta habilidade cobre a instrumentação que as alimenta

Processo

1. Defina "funcionando" antes de instrumentar

Telemetria sem uma pergunta é ruído. Antes de adicionar qualquer instrumentação, escreva 2–4 perguntas que um engenheiro de plantão fará sobre este recurso:

FEATURE: checkout payment retry
QUESTIONS ON-CALL WILL ASK:
1. What fraction of payments succeed on first attempt vs after retry?
2. When a payment fails permanently, why? (provider error? timeout? validation?)
3. Is the payment provider slower than usual?
→ Every signal below must help answer one of these.

Se você não consegue nomear as perguntas, você não está pronto para instrumentar — você registrará tudo e não aprenderá nada.

2. Escolha o sinal certo para cada pergunta

Sinal Respostas Perfil de Custo Exemplo
Log Estruturado "O que aconteceu neste caso específico?" Por evento; cresce com o tráfego payment_failed com código de erro do provedor
Métrica "Com que frequência / quão rápido, em agregado?" Fixo por série; barato para consultar latência p99 das chamadas do provedor
Rastreamento (Trace) "Onde o tempo foi gasto entre os serviços?" Por requisição; geralmente amostrado Um checkout lento, detalhado por salto

Regra de ouro: métricas dizem que algo está errado, rastreamentos dizem onde, logs dizem por quê.

3. Logging Estruturado

Registre eventos, não prosa. Cada linha de log é um objeto JSON com um nome de evento estável e campos legíveis por máquina:

// BAD: string interpolation — unqueryable, inconsistent
logger.info(`Payment ${id} failed for user ${userId} after ${n} retries`);

// GOOD: stable event name + structured fields
logger.warn({
  event: 'payment_failed',
  paymentId: id,
  provider: 'stripe',
  errorCode: err.code,
  attempt: n,
}, 'payment failed');

Níveis de log — use-os consistentemente:

Nível Significado Ação do Plantão
error Invariante quebrada; alguém pode precisar agir Investigar
warn Degradado, mas tratado (retentativa bem-sucedida, fallback usado) Observar tendências
info Evento de negócio significativo (pedido feito, job concluído) Nenhum
debug Detalhe de diagnóstico Desativado em produção por padrão

IDs de Correlação são obrigatórios. Gere (ou aceite) um ID de requisição na fronteira do sistema e anexe-o a cada linha de log, span e chamada de saída. Sem ele, você não consegue reconstruir uma única requisição a partir de logs intercalados:

// Express: child logger per request, ID propagated downstream
app.use((req, res, next) => {
  req.id = req.headers['x-request-id'] ?? crypto.randomUUID();
  req.log = logger.child({ requestId: req.id });
  res.setHeader('x-request-id', req.id);
  next();
});

Quando vários pontos de entrada escrevem em um único log, nomeie o ponto de entrada. Um ID de correlação identifica uma execução; ele não diz qual caminho de código a iniciou. O mesmo job alcançado por um agendador, por um endpoint de repetição e por uma execução manual de CLI produz linhas intercambiáveis em um único sink, então atribuir uma linha recai sobre eliminação — leitura cruzada do histórico do agendador, da tabela de processos, de um log de deploy — e esse argumento só se sustenta enquanto esses registros externos por acaso ainda existirem. Marque o ponto de entrada onde a execução começa, ao lado do ID de correlação, e propague ambos da mesma forma:

// Um helper para cada ponto de entrada: o logger da execução carrega ambos os campos.

…
Perguntas frequentes

O que são 'logs', 'métricas' e 'rastros'?

Logs são registros de eventos específicos. Métricas são resumos de dados ao longo do tempo (ex: quantos erros por hora). Rastros mostram o caminho de uma requisição através de vários serviços.

Por que não posso simplesmente adicionar isso depois que o código estiver pronto?

É muito mais fácil e eficaz adicionar essas informações enquanto você escreve o código. Adicionar depois pode ser como tentar entender um mistério sem pistas.

O que são 'IDs de correlação'?

São identificadores únicos que conectam todas as informações (logs, métricas, rastros) relacionadas a uma única operação ou requisição, mesmo que elas aconteçam em momentos diferentes ou em partes distintas do sistema.

Detalhes

Descrição original do autor

Instruments code so production behavior is visible and diagnosable. Use when adding logging, metrics, tracing, or alerting. Use when shipping any feature that runs in production and you need evidence it works. Use when production issues are reported but you can't tell what happened from the available data.

repo: addyosmani/agent-skills

Popularidade

Estrelas no GitHub
107 mil
Posição no ranking
#356
Licença
MIT
Atualizada em
13/10/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas