Skip to content

opentelemetry-instrument fails very silently if no configurator is available #5180

@tomkcook

Description

@tomkcook

Describe your environment

OS: Debian bookworm (Python 3.13-slim-bookworm docker container)
Python version: Python 3.13.13
SDK version: 1.37.0
API version: 1.37.0

I'm not exactly clear how I came by the above version numbers; at some point I ran opentelemetry-bootstrap (within the last few days) and this is what it gave me.

What happened?

The problem is that what it gave me didn't include opentelemetry-distro. I have listed below what actually went into my requirements.txt. In this state, opentelemetry-instrument fails in very difficult-to-debug ways. It basically does nothing at all. No command-line arguments are respected (eg --log_level=debug does not produce any more output). No traces are ever exported.

AFAICT, the problem is that without the distro package there is no metadata to tell the instrumenter what providers to use. At its base, this boils down to this:

$ python3 -c "from importlib.metadata import entry_points; print([ep.name for ep in entry_points(group='opentelemetry_configurator')])"
[]

instead of this after the distro package is installed:

$ python3 -c "from importlib.metadata import entry_points; print([ep.name for ep in entry_points(group='opentelemetry_configurator')])"
['configurator']

An error message explaining what went wrong in this case would have saved me about two and a half days of mucking around trying to figure it out and I'm sure would save other people considerable time in the future, too.

Steps to Reproduce

Install this set of packages:

opentelemetry-api==1.37.0
opentelemetry-exporter-otlp==1.37.0
opentelemetry-exporter-otlp-proto-common==1.37.0
opentelemetry-exporter-otlp-proto-grpc==1.37.0
opentelemetry-exporter-otlp-proto-http==1.37.0
opentelemetry-instrumentation==0.58b0
opentelemetry-instrumentation-asgi==0.58b0
opentelemetry-instrumentation-asyncio==0.58b0
opentelemetry-instrumentation-click==0.58b0
opentelemetry-instrumentation-dbapi==0.58b0
opentelemetry-instrumentation-fastapi==0.58b0
opentelemetry-instrumentation-flask==0.58b0
opentelemetry-instrumentation-grpc==0.58b0
opentelemetry-instrumentation-httpx==0.58b0
opentelemetry-instrumentation-jinja2==0.58b0
opentelemetry-instrumentation-logging==0.58b0
opentelemetry-instrumentation-pymysql==0.58b0
opentelemetry-instrumentation-redis==0.58b0
opentelemetry-instrumentation-requests==0.58b0
opentelemetry-instrumentation-sqlalchemy==0.58b0
opentelemetry-instrumentation-sqlite3==0.58b0
opentelemetry-instrumentation-starlette==0.58b0
opentelemetry-instrumentation-threading==0.58b0
opentelemetry-instrumentation-tortoiseorm==0.58b0
opentelemetry-instrumentation-urllib==0.58b0
opentelemetry-instrumentation-urllib3==0.58b0
opentelemetry-instrumentation-wsgi==0.58b0
opentelemetry-proto==1.37.0
opentelemetry-sdk==1.37.0
opentelemetry-semantic-conventions==0.58b0
opentelemetry-util-http==0.58b0

and try to use opentelemetry-instrument.

Expected Result

Some warning should be generated to point out that opentelemetry-instrument is missing vital parts.

Actual Result

Silent failure.

Additional context

No response

Would you like to implement a fix?

No

Tip

React with 👍 to help prioritize this issue. Please use comments to provide useful context, avoiding +1 or me too, to help us triage it. Learn more here.

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions