Skip to main content

Librería compartida de logger y tracing para microservicios con async

Project description

Trazabilidad Distribuida Propósito: Configura OpenTelemetry para rastrear requests a través de múltiples servicios. Funcionalidades:

  • Instrumentación automática de FastAPI, SQLAlchemy, requests HTTP y httpx Exportación de trazas a un sistema de observabilidad (Tempo por defecto) Configuración centralizada que solo se ejecuta una vez por proceso (usando @lru_cache) Identificación de servicios mediante variables de entorno o parámetros

😴 Dormir bien sabiendo que:

Si algo se rompe, lo encontrarás rápido Tus decisiones están basadas en datos, no en intuición Tu código es profesional y mantenible Tu equipo te ve como el/la ninja de debugging

Qué rastrea:

Requests HTTP entrantes y salientes Consultas a base de datos Operaciones entre microservicios

logger.py - Logging Estructurado Propósito: Proporciona logs estructurados en formato JSON con correlación de trazas. Funcionalidades:

  • Logs en JSON para facilitar análisis y búsquedas Correlación automática con trazas OpenTelemetry (agrega trace_id y span_id) Configuración estándar con timestamps ISO, niveles de log y manejo de excepciones Cache de loggers para evitar reconfiguración

  • Caso de Uso Típico: En tu aplicación FastAPI

from common_utils.tracing import setup_tracing from common_utils.logger import get_logger

Configuración inicial (una sola vez) 🚀🚀🚀🚀🚀

setup_tracing(app=app, engine=db_engine) logger = get_logger()

En tus endpoints

@app.get("/users/{user_id}") async def get_user(user_id: int): logger.info("Fetching user", user_id=user_id) # Las consultas SQL y requests HTTP se rastrean automáticamente user = await get_user_from_db(user_id) return user

  • Beneficios

Trazabilidad completa: Puedes seguir una request desde el frontend hasta todas las bases de datos y servicios externos Logs correlacionados: Cada log tiene el trace_id para encontrar todos los logs relacionados con una operación Configuración centralizada: Un solo lugar para configurar observabilidad en todos tus microservicios Análisis fácil: Logs en JSON permiten queries complejas en sistemas como ELK Stack

Es especialmente útil para arquitecturas de microservicios donde necesitas entender el flujo completo de las operaciones distribuidas.

Ejemplo en la vida real: Cliente: "El checkout falló a las 3:47 PM" Tú: revisa 47 logs de 12 servicios diferentes "¿Era el user-service? ¿payments-service? ¿inventory-service?" 3 horas después..._

con observavility-completed:

Cliente: "El checkout falló a las 3:47 PM" Tú: busca por trace_id "Ah, veo que el inventory-service tardó 30 segundos en responder porque la DB estaba bloqueada" 5 minutos después: problema resuelto_

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

observavility_completed-0.3.1.tar.gz (4.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

observavility_completed-0.3.1-py3-none-any.whl (4.9 kB view details)

Uploaded Python 3

File details

Details for the file observavility_completed-0.3.1.tar.gz.

File metadata

  • Download URL: observavility_completed-0.3.1.tar.gz
  • Upload date:
  • Size: 4.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.11

File hashes

Hashes for observavility_completed-0.3.1.tar.gz
Algorithm Hash digest
SHA256 589e0dfc659f2fe5a3b57bfd33180e0772c3759aceec8d3edfe5952a5af6bd90
MD5 82058cb014be67054e17a9495f16ecb2
BLAKE2b-256 185bf111034c858a96141bff84a8996ee4b333ce5a6b1ae5af15fbb662121f4c

See more details on using hashes here.

File details

Details for the file observavility_completed-0.3.1-py3-none-any.whl.

File metadata

File hashes

Hashes for observavility_completed-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 ec766c36b6e49a911fb631277ad1cfa0ea78d9dd94123c459340706d22bb0d77
MD5 108f44f61469db154e49dd5a8837542c
BLAKE2b-256 27784b2ac7f2b8e43d6316865e3caa1bdb315e9e9f6f123aa69542843073363c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page