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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
589e0dfc659f2fe5a3b57bfd33180e0772c3759aceec8d3edfe5952a5af6bd90
|
|
| MD5 |
82058cb014be67054e17a9495f16ecb2
|
|
| BLAKE2b-256 |
185bf111034c858a96141bff84a8996ee4b333ce5a6b1ae5af15fbb662121f4c
|
File details
Details for the file observavility_completed-0.3.1-py3-none-any.whl.
File metadata
- Download URL: observavility_completed-0.3.1-py3-none-any.whl
- Upload date:
- Size: 4.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ec766c36b6e49a911fb631277ad1cfa0ea78d9dd94123c459340706d22bb0d77
|
|
| MD5 |
108f44f61469db154e49dd5a8837542c
|
|
| BLAKE2b-256 |
27784b2ac7f2b8e43d6316865e3caa1bdb315e9e9f6f123aa69542843073363c
|