Pular para o conteúdo
Skillpedia
APIs e servidores (backend)41 mil · #4929

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

https://github.com/wshobson/agents/blob/main/plugins/python-development/skills/python-observability/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/wshobson/agents/blob/main/plugins/python-development/skills/python-observability/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
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-observability

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/wshobson/agents/main/plugins/python-development/skills/python-observability/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 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

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas