Astrotel
Astrotel sending OpenTelemetry tracing and logging integration for Python applications into Signoz, Jaeger, OTEL Collector,... with support for FastAPI, Celery, MCP,... application
Installation
Install with pip (requires Python 3.12+):
pip install astrotel[fastapi]
For FastAPI support:
pip install astrotel[fastapi]
Usage
Basic Usage
from astrotel.provider.fastapi import FastAPIOpentelemetryTracing
from fastapi import FastAPI
app = FastAPI()
tracer = FastAPIOpentelemetryTracing()
tracer.configure_tracing(app)
Logging Integration
import logging
tracer = FastAPIOpentelemetryTracing()
logging_handler = tracer.configure_logging_handler()
# Attach handler to root logger
logging.basicConfig(
level=logging.INFO,
handlers=[logging_handler, logging.StreamHandler()] # also keep console logs
)
# Attach handler to FastAPI's logger too
uvicorn_logger = logging.getLogger("uvicorn")
uvicorn_logger.addHandler(logging_handler)
uvicorn_logger = logging.getLogger("uvicorn.access")
uvicorn_logger.addHandler(logging_handler)
fastapi_logger = logging.getLogger("fastapi")
fastapi_logger.addHandler(logging_handler)
Configuration
You can configure Astrotel via environment variables or by creating environment variables:
Meaning
OTEL_SERVICE_NAME: Set service nameOTEL_DEPLOYMENT_ENVIRONMENT: Set deployment environment nameOTEL_MODE: Send to exporter byhttporgrpcOTEL_GRPC_ENDPOINT: gRPC OTEL collector endpoint (default:http://localhost:4317)OTEL_HTTP_ENDPOINT: HTTP OTEL collector endpoint (default:http://localhost:4318)OTEL_LOGS_SHIP_LEVEL: Minimum log level to ship (DEBUG,INFO,WARNING,ERROR,CRITICAL)
For example
OTEL_SERVICE_NAME=my-service
OTEL_DEPLOYMENT_ENVIRONMENT=production
OTEL_MODE=grpc
OTEL_GRPC_ENDPOINT=http://otel-collector:4317
OTEL_HTTP_ENDPOINT=http://otel-collector:4318
OTEL_LOGS_SHIP_LEVEL=INFO
Documentation
See the docs/ or build the documentation locally:
make -C docs html
Development
- Lint:
make lint - Format:
make format
License
MIT
Release files for astrotel 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| astrotel-0.1.0.tar.gz | 33.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| astrotel-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 37.9 kB
Release files / astrotel-0.1.0.tar.gz
| Download URL | astrotel-0.1.0.tar.gz |
|---|---|
| Size | 33.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
053dc3789f69495756e3093673a4fa60b50064710ddb33e6e622088e6461b161
|
|
BLAKE2b-256 checksum How to use checksums |
54f3000e1771038fee9a0e36a2dcb3d2a1692d9666fff46a671aef38d334fb02
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 18, 2025.
Transparency logRelease files / astrotel-0.1.0-py3-none-any.whl
| Download URL | astrotel-0.1.0-py3-none-any.whl |
|---|---|
| Size | 4.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
39d766d93315ca3e7b81b6af386557521e2f65963c804c5af76bd324d3a4848e
|
|
BLAKE2b-256 checksum How to use checksums |
d6be7b2cb2519c6d3685cdcf7359790af5190db69870e734dc0cca5c3978cd29
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 18, 2025.
Transparency log