python-observability
Ajuda seu agente a registrar informações, coletar métricas e rastrear operações em Python. É útil para entender o que o programa está fazendo e depurar problemas.
O que ela faz
Esta ferramenta ajuda a entender o que está acontecendo dentro de um programa de computador escrito em Python. Ela organiza as informações geradas pelo programa para que seja mais fácil descobrir erros ou como ele está funcionando.
Quando usar
- ✓Quando você adiciona um novo registro de informações (logs) em seu programa.
- ✓Quando você quer contar quantas vezes algo acontece ou quanto tempo leva.
- ✓Quando você precisa rastrear uma solicitação através de vários sistemas.
Exemplo do que pedir para a IA
“Como posso configurar meu programa Python para registrar informações importantes em formato JSON?”
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
Mensagem pronta para colar
Como funciona
Ela configura o Python para gerar registros (logs) em um formato estruturado, como JSON. Isso permite que máquinas leiam e analisem essas informações facilmente, ajudando a encontrar problemas ou entender o comportamento do programa.
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 wshobson/agents --skill python-observabilityOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/wshobson/agents/main/plugins/python-development/skills/python-observability/SKILL.md -o SKILL.mdConteú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 em Python
Instrumente aplicações Python com logs estruturados, métricas e traces. Quando algo falhar em produção, você precisa responder "o quê, onde e por quê" sem implantar novo código.
Quando Usar Esta Habilidade
- Adicionar logging estruturado a aplicações
- Implementar coleta de métricas com Prometheus
- Configurar tracing distribuído entre serviços
- Propagar IDs de correlação através de cadeias de requisição
- Depurar problemas em produção
- Construir dashboards de observabilidade
Conceitos Principais
1. Logging Estruturado
Emita logs como JSON com campos consistentes para ambientes de produção. Logs legíveis por máquina permitem consultas e alertas poderosos. Para desenvolvimento local, considere formatos legíveis por humanos.
2. Os Quatro Sinais de Ouro
Monitore latência, tráfego, erros e saturação para cada limite de serviço.
3. IDs de Correlação
Passe um ID único por todos os logs e spans para uma única requisição, permitindo tracing de ponta a ponta.
4. Cardinalidade Limitada
Mantenha os valores dos rótulos de métricas limitados. Rótulos ilimitados (como IDs de usuário) explodem os custos de armazenamento.
Início Rápido
import structlog
structlog.configure(
processors=[
structlog.processors.TimeStamper(fmt="iso"),
structlog.processors.JSONRenderer(),
],
)
logger = structlog.get_logger()
logger.info("Request processed", user_id="123", duration_ms=45)
Padrões Fundamentais
Padrão 1: Logging Estruturado com Structlog
Configure o structlog para saída JSON com campos consistentes.
import logging
import structlog
def configure_logging(log_level: str = "INFO") -> None:
"""Configure structured logging for the application."""
structlog.configure(
processors=[
structlog.contextvars.merge_contextvars,
structlog.processors.add_log_level,
structlog.processors.TimeStamper(fmt="iso"),
structlog.processors.StackInfoRenderer(),
structlog.processors.format_exc_info,
structlog.processors.JSONRenderer(),
],
wrapper_class=structlog.make_filtering_bound_logger(
getattr(logging, log_level.upper())
),
context_class=dict,
logger_factory=structlog.PrintLoggerFactory(),
cache_logger_on_first_use=True,
)
# Initialize at application startup
configure_logging("INFO")
logger = structlog.get_logger()
Padrão 2: Campos de Log Consistentes
Cada entrada de log deve incluir campos padrão para filtragem e correlação.
import structlog
from contextvars import ContextVar
# Store correlation ID in context
correlation_id: ContextVar[str] = ContextVar("correlation_id", default="")
logger = structlog.get_logger()
def process_request(request: Request) -> Response:
"""Process request with structured logging."""
logger.info(
"Request received",
correlation_id=correlation_id.get(),
method=request.method,
path=request.path,
user_id=request.user_id,
)
try:
result = handle_request(request)
logger.info(
"Request completed",
correlation_id=correlation_id.get(),
status_code=200,
duration_ms=elapsed,
)
return result
except Exception as e:
logger.error(
"Request failed",
correlation_id=correlation_id.get(),
error_type=type(e).__name__,
error_message=str(e),
)
raise
Padrão 3: Níveis Semânticos de Log
Use níveis de log consistentemente em toda a aplicação.
| Nível | Propósito | Exemplos |
|---|---|---|
DEBUG |
Diagnósticos de desenvolvimento | Valores de variáveis, estado interno |
INFO |
Ciclo de vida da requisição, operações | Início/fim da requisição, conclusão de tarefa |
WARNING |
Anomalias recuperáveis | Tentativas de retentativa, fallback utilizado |
ERROR |
Falhas que exigem atenção | Exceções, serviço indisponível |
# DEBUG: Detailed internal information
logger.debug("Cache lookup", key=cache_key, hit=cache_hit)
# INFO: Normal operational events
logger.info("Order created", order_id=order.id, total=order.total)
# WARNING: Abnormal but handled situations
logger.warning(
"Rate limit approaching",
current_rate=950,
limit=1000,
reset_seconds=30,
)
# ERROR: Failures requiring investigation
logger.error(
"Payment processing failed",
order_id=order.id,
error=str(e),
payment_provider="stripe",
)
…
Perguntas frequentes
O que são 'logs estruturados'?
São mensagens de registro que seguem um formato consistente, como JSON, com campos definidos. Isso facilita a busca e análise por computadores.
O que são os 'Quatro Sinais de Ouro'?
São métricas importantes para monitorar um serviço: latência (tempo de resposta), tráfego (quantidade de requisições), erros (taxa de falhas) e saturação (uso de recursos).
O que é um 'ID de Correlação'?
É um identificador único que acompanha uma solicitação específica através de diferentes partes de um sistema, permitindo rastrear seu fluxo completo.
Detalhes
Descrição original do autor
Python observability patterns including structured logging, metrics, and distributed tracing. Use when adding logging, implementing metrics collection, setting up tracing, or debugging production systems.
repo: wshobson/agents
Popularidade
- Estrelas no GitHub
- 41 mil
- Posição no ranking
- #4929
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
screen-reader-testing
Faz seu agente testar sites usando leitores de tela para garantir que sejam acessíveis.
wshobson/agents
wcag-audit-patterns
Ajuda seu agente a auditar sites para acessibilidade e corrigir problemas de acordo com as diretrizes WCAG.
wshobson/agents
multi-reviewer-patterns
Faz seu agente coordenar revisões de código paralelas, deduplicando achados e consolidando relatórios.
wshobson/agents
parallel-debugging
Permite ao agente depurar problemas complexos com investigações paralelas e análise de causa raiz.
wshobson/agents
Skills parecidas
api-connector-builder
Faz seu agente construir novas conexões com APIs seguindo o padrão já existente. Use quando precisar adicionar mais uma integração sem criar um novo jeito de fazer.
affaan-m/ECC
api-design
Ajuda seu agente a projetar APIs REST seguindo as melhores práticas. É útil para definir como as APIs se comunicam, como os erros são mostrados e como organizar os dados.
affaan-m/ECC
backend-patterns
Ajuda seu agente com padrões de arquitetura do lado do servidor e otimização de banco de dados. É útil para construir ou revisar o código que roda no servidor.
affaan-m/ECC