diff --git a/docs/available-components/middlewares.md b/docs/available-components/middlewares.md index 4bd28e5d..f21d9488 100644 --- a/docs/available-components/middlewares.md +++ b/docs/available-components/middlewares.md @@ -87,7 +87,7 @@ Use jitter and exponential backoff to avoid repetitive load peaks, especially in ### Prometheus middleware -You can enable prometheus metrics for workers by adding PrometheusMiddleware. +You can enable prometheus metrics for workers by adding `PrometheusMiddleware`. To do so, you need to install `prometheus_client` package or you can install metrics extras for taskiq. ::: tabs @@ -118,3 +118,39 @@ broker = ZeroMQBroker().with_middlewares( After that, metrics will be available at port 9000. Of course, this parameter can be configured. If you have other metrics, they'll be shown as well. + +### OpenTelemetry Middleware + +You can enable opentelemetry tracing for workers by adding `OpenTelemetryMiddleware` or using `TaskiqInstrumentor` (preferred). + +```bash +pip install "taskiq[opentelemetry]" +``` + +::: tabs + + +@tab instrumentor + +```python +from taskiq import ZeroMQBroker +from taskiq.instrumentation import TaskiqInstrumentor + +TaskiqInstrumentor().instrument() +broker = ZeroMQBroker() +``` + +@tab middleware + +```python +from taskiq import ZeroMQBroker +from taskiq.middlewares.opentelemetry_middleware import OpenTelemetryMiddleware + +broker = ZeroMQBroker().with_middlewares( + OpenTelemetryMiddleware, +) +``` + +::: + +Auto-instrumentation is also supported. diff --git a/taskiq/instrumentation.py b/taskiq/instrumentation.py index 665dacaf..ed542c7b 100644 --- a/taskiq/instrumentation.py +++ b/taskiq/instrumentation.py @@ -12,7 +12,7 @@ import asyncio - from taskiq import InMemoryBroker, TaskiqEvents, TaskiqState + from taskiq import InMemoryBroker from taskiq.instrumentation import TaskiqInstrumentor broker = InMemoryBroker()