Skip to content

Commit 9227a8a

Browse files
authored
Bump opentelemetry to 1.28.1/0.49b.1 (#169)
* Bump dependencies to 1.28.1/0.49b.1 * elasticotel: remove handling of instrumentor loading That is now handled by the upstream autoinstrumentation code. * elasticotel: use importlib_metadata shim instead of pkg-resources * distro: disable exemplars by default Since they are not very mature
1 parent f4653a5 commit 9227a8a

File tree

7 files changed

+84
-99
lines changed

7 files changed

+84
-99
lines changed

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ opentelemetry-instrument gunicorn main:app
6969

7070
## Configuration
7171

72-
The distribution supports all the configuration variables from OpenTelemetry Python project version 1.27.0.
72+
The distribution supports all the configuration variables from OpenTelemetry Python project version 1.28.1.
7373

7474
### Default configuration variables
7575

@@ -79,6 +79,7 @@ This distribution sets the following defaults:
7979
- `OTEL_METRICS_EXPORTER`: `otlp`
8080
- `OTEL_EXPORTER_OTLP_PROTOCOL`: `grpc`
8181
- `OTEL_EXPERIMENTAL_RESOURCE_DETECTORS`: `process_runtime,os,otel,telemetry_distro`
82+
- `OTEL_METRICS_EXEMPLAR_FILTER`: `always_off`
8283

8384
### Distribution specific configuration variables
8485

dev-requirements.txt

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ iniconfig==2.0.0
3636
# via pytest
3737
leb128==1.0.8
3838
# via elastic-opentelemetry (pyproject.toml)
39-
opentelemetry-api==1.27.0
39+
opentelemetry-api==1.28.1
4040
# via
4141
# elastic-opentelemetry (pyproject.toml)
4242
# opentelemetry-exporter-otlp-proto-grpc
@@ -46,48 +46,50 @@ opentelemetry-api==1.27.0
4646
# opentelemetry-sdk
4747
# opentelemetry-semantic-conventions
4848
# oteltest
49-
opentelemetry-exporter-otlp==1.27.0
49+
opentelemetry-exporter-otlp==1.28.1
5050
# via elastic-opentelemetry (pyproject.toml)
51-
opentelemetry-exporter-otlp-proto-common==1.27.0
51+
opentelemetry-exporter-otlp-proto-common==1.28.1
5252
# via
5353
# opentelemetry-exporter-otlp-proto-grpc
5454
# opentelemetry-exporter-otlp-proto-http
55-
opentelemetry-exporter-otlp-proto-grpc==1.27.0
55+
opentelemetry-exporter-otlp-proto-grpc==1.28.1
5656
# via opentelemetry-exporter-otlp
57-
opentelemetry-exporter-otlp-proto-http==1.27.0
57+
opentelemetry-exporter-otlp-proto-http==1.28.1
5858
# via opentelemetry-exporter-otlp
59-
opentelemetry-instrumentation==0.48b0
59+
opentelemetry-instrumentation==0.49b1
6060
# via
6161
# elastic-opentelemetry (pyproject.toml)
6262
# opentelemetry-instrumentation-system-metrics
63-
opentelemetry-instrumentation-system-metrics==0.48b0
63+
opentelemetry-instrumentation-system-metrics==0.49b1
6464
# via elastic-opentelemetry (pyproject.toml)
65-
opentelemetry-proto==1.27.0
65+
opentelemetry-proto==1.28.1
6666
# via
6767
# opentelemetry-exporter-otlp-proto-common
6868
# opentelemetry-exporter-otlp-proto-grpc
6969
# opentelemetry-exporter-otlp-proto-http
7070
# oteltest
71-
opentelemetry-sdk==1.27.0
71+
opentelemetry-sdk==1.28.1
7272
# via
7373
# elastic-opentelemetry (pyproject.toml)
7474
# opentelemetry-exporter-otlp-proto-grpc
7575
# opentelemetry-exporter-otlp-proto-http
76-
opentelemetry-semantic-conventions==0.48b0
76+
opentelemetry-semantic-conventions==0.49b1
7777
# via
7878
# elastic-opentelemetry (pyproject.toml)
79+
# opentelemetry-instrumentation
7980
# opentelemetry-sdk
8081
oteltest==0.24.0
8182
# via elastic-opentelemetry (pyproject.toml)
8283
packaging==24.1
8384
# via
8485
# build
86+
# opentelemetry-instrumentation
8587
# pytest
8688
pip-tools==7.4.1
8789
# via elastic-opentelemetry (pyproject.toml)
8890
pluggy==1.5.0
8991
# via pytest
90-
protobuf==4.25.3
92+
protobuf==5.28.3
9193
# via
9294
# googleapis-common-protos
9395
# opentelemetry-proto

operator/requirements.txt

Lines changed: 51 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,56 +1,56 @@
1-
opentelemetry-exporter-prometheus==0.48b0
1+
opentelemetry-exporter-prometheus==0.49b1
22

33
opentelemetry-propagator-aws-xray==1.0.2
4-
opentelemetry-propagator-b3==1.27.0
5-
opentelemetry-propagator-jaeger==1.27.0
6-
opentelemetry-propagator-ot-trace==0.48b0
4+
opentelemetry-propagator-b3==1.28.1
5+
opentelemetry-propagator-jaeger==1.28.1
6+
opentelemetry-propagator-ot-trace==0.49b1
77

8-
opentelemetry-instrumentation-aio-pika==0.48b0
9-
opentelemetry-instrumentation-aiohttp-client==0.48b0
10-
opentelemetry-instrumentation-aiohttp-server==0.48b0
11-
opentelemetry-instrumentation-aiopg==0.48b0
12-
opentelemetry-instrumentation-asgi==0.48b0
13-
opentelemetry-instrumentation-asyncio==0.48b0
14-
opentelemetry-instrumentation-asyncpg==0.48b0
15-
opentelemetry-instrumentation-aws-lambda==0.48b0
16-
opentelemetry-instrumentation-boto==0.48b0
17-
opentelemetry-instrumentation-boto3sqs==0.48b0
18-
opentelemetry-instrumentation-botocore==0.48b0
19-
opentelemetry-instrumentation-cassandra==0.48b0
20-
opentelemetry-instrumentation-celery==0.48b0
21-
opentelemetry-instrumentation-confluent-kafka==0.48b0
22-
opentelemetry-instrumentation-dbapi==0.48b0
23-
opentelemetry-instrumentation-django==0.48b0
24-
opentelemetry-instrumentation-elasticsearch==0.48b0
25-
opentelemetry-instrumentation-falcon==0.48b0
26-
opentelemetry-instrumentation-fastapi==0.48b0
27-
opentelemetry-instrumentation-flask==0.48b0
28-
opentelemetry-instrumentation-grpc==0.48b0
29-
opentelemetry-instrumentation-httpx==0.48b0
30-
opentelemetry-instrumentation-jinja2==0.48b0
31-
opentelemetry-instrumentation-kafka-python==0.48b0
32-
opentelemetry-instrumentation-logging==0.48b0
33-
opentelemetry-instrumentation-mysql==0.48b0
34-
opentelemetry-instrumentation-mysqlclient==0.48b0
35-
opentelemetry-instrumentation-pika==0.48b0
36-
opentelemetry-instrumentation-psycopg==0.48b0
37-
opentelemetry-instrumentation-psycopg2==0.48b0
38-
opentelemetry-instrumentation-pymemcache==0.48b0
39-
opentelemetry-instrumentation-pymongo==0.48b0
40-
opentelemetry-instrumentation-pymysql==0.48b0
41-
opentelemetry-instrumentation-pyramid==0.48b0
42-
opentelemetry-instrumentation-redis==0.48b0
43-
opentelemetry-instrumentation-remoulade==0.48b0
44-
opentelemetry-instrumentation-requests==0.48b0
45-
opentelemetry-instrumentation-sqlalchemy==0.48b0
46-
opentelemetry-instrumentation-sqlite3==0.48b0
47-
opentelemetry-instrumentation-starlette==0.48b0
48-
opentelemetry-instrumentation-system-metrics==0.48b0
49-
opentelemetry-instrumentation-threading==0.48b0
50-
opentelemetry-instrumentation-tornado==0.48b0
51-
opentelemetry-instrumentation-tortoiseorm==0.48b0
52-
opentelemetry-instrumentation-urllib==0.48b0
53-
opentelemetry-instrumentation-urllib3==0.48b0
54-
opentelemetry-instrumentation-wsgi==0.48b0
8+
opentelemetry-instrumentation-aio-pika==0.49b1
9+
opentelemetry-instrumentation-aiohttp-client==0.49b1
10+
opentelemetry-instrumentation-aiohttp-server==0.49b1
11+
opentelemetry-instrumentation-aiokafka==0.49b1
12+
opentelemetry-instrumentation-aiopg==0.49b1
13+
opentelemetry-instrumentation-asgi==0.49b1
14+
opentelemetry-instrumentation-asyncio==0.49b1
15+
opentelemetry-instrumentation-asyncpg==0.49b1
16+
opentelemetry-instrumentation-boto==0.49b1
17+
opentelemetry-instrumentation-boto3sqs==0.49b1
18+
opentelemetry-instrumentation-botocore==0.49b1
19+
opentelemetry-instrumentation-cassandra==0.49b1
20+
opentelemetry-instrumentation-celery==0.49b1
21+
opentelemetry-instrumentation-confluent-kafka==0.49b1
22+
opentelemetry-instrumentation-dbapi==0.49b1
23+
opentelemetry-instrumentation-django==0.49b1
24+
opentelemetry-instrumentation-elasticsearch==0.49b1
25+
opentelemetry-instrumentation-falcon==0.49b1
26+
opentelemetry-instrumentation-fastapi==0.49b1
27+
opentelemetry-instrumentation-flask==0.49b1
28+
opentelemetry-instrumentation-grpc==0.49b1
29+
opentelemetry-instrumentation-httpx==0.49b1
30+
opentelemetry-instrumentation-jinja2==0.49b1
31+
opentelemetry-instrumentation-kafka-python==0.49b1
32+
opentelemetry-instrumentation-logging==0.49b1
33+
opentelemetry-instrumentation-mysql==0.49b1
34+
opentelemetry-instrumentation-mysqlclient==0.49b1
35+
opentelemetry-instrumentation-pika==0.49b1
36+
opentelemetry-instrumentation-psycopg==0.49b1
37+
opentelemetry-instrumentation-psycopg2==0.49b1
38+
opentelemetry-instrumentation-pymemcache==0.49b1
39+
opentelemetry-instrumentation-pymongo==0.49b1
40+
opentelemetry-instrumentation-pymysql==0.49b1
41+
opentelemetry-instrumentation-pyramid==0.49b1
42+
opentelemetry-instrumentation-redis==0.49b1
43+
opentelemetry-instrumentation-remoulade==0.49b1
44+
opentelemetry-instrumentation-requests==0.49b1
45+
opentelemetry-instrumentation-sqlalchemy==0.49b1
46+
opentelemetry-instrumentation-sqlite3==0.49b1
47+
opentelemetry-instrumentation-starlette==0.49b1
48+
opentelemetry-instrumentation-system-metrics==0.49b1
49+
opentelemetry-instrumentation-threading==0.49b1
50+
opentelemetry-instrumentation-tornado==0.49b1
51+
opentelemetry-instrumentation-tortoiseorm==0.49b1
52+
opentelemetry-instrumentation-urllib==0.49b1
53+
opentelemetry-instrumentation-urllib3==0.49b1
54+
opentelemetry-instrumentation-wsgi==0.49b1
5555

5656
elastic-opentelemetry-instrumentation-openai==0.3.0

pyproject.toml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,12 @@ classifiers = [
2727
]
2828

2929
dependencies = [
30-
"opentelemetry-api == 1.27.0",
31-
"opentelemetry-exporter-otlp == 1.27.0",
32-
"opentelemetry-instrumentation == 0.48b0",
33-
"opentelemetry-instrumentation-system-metrics == 0.48b0",
34-
"opentelemetry-semantic-conventions == 0.48b0",
35-
"opentelemetry-sdk == 1.27.0",
30+
"opentelemetry-api == 1.28.1",
31+
"opentelemetry-exporter-otlp == 1.28.1",
32+
"opentelemetry-instrumentation == 0.49b1",
33+
"opentelemetry-instrumentation-system-metrics == 0.49b1",
34+
"opentelemetry-semantic-conventions == 0.49b1",
35+
"opentelemetry-sdk == 1.28.1",
3636
]
3737

3838
[project.optional-dependencies]

src/elasticotel/distro/__init__.py

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,11 @@
3030
)
3131
from opentelemetry.sdk._configuration import _OTelSDKConfigurator
3232
from opentelemetry.sdk.environment_variables import (
33+
OTEL_METRICS_EXEMPLAR_FILTER,
3334
OTEL_EXPERIMENTAL_RESOURCE_DETECTORS,
3435
OTEL_EXPORTER_OTLP_PROTOCOL,
3536
)
36-
from pkg_resources import EntryPoint
37+
from opentelemetry.util._importlib_metadata import EntryPoint
3738

3839
from elasticotel.distro.environment_variables import ELASTIC_OTEL_SYSTEM_METRICS_ENABLED
3940

@@ -48,17 +49,9 @@ class ElasticOpenTelemetryConfigurator(_OTelSDKConfigurator):
4849
class ElasticOpenTelemetryDistro(BaseDistro):
4950
def load_instrumentor(self, entry_point: EntryPoint, **kwargs):
5051
# When running in the k8s operator loading of an instrumentor may fail because the environment
51-
# in which python extensions are built does not match the one from the running container.
52-
# There are at least two cases:
53-
# - different python version
54-
# - different kind of wheels, e.g. manylinux vs musllinux
55-
# To avoid the distro loading to fail catch ImportError here, that is the kind of exception we see
56-
# when loading shared objects or cython extensions fails.
57-
try:
58-
instrumentor_class: BaseInstrumentor = entry_point.load()
59-
except ImportError:
60-
logger.exception("Instrumenting of %s failed", entry_point.name)
61-
return
52+
# in which python extensions are built does not match the one from the running container but
53+
# ImportErrors raised here are handled by the autoinstrumentation code
54+
instrumentor_class: BaseInstrumentor = entry_point.load()
6255

6356
instrumentor_kwargs = {}
6457
if instrumentor_class == SystemMetricsInstrumentor:
@@ -76,3 +69,5 @@ def _configure(self, **kwargs):
7669
os.environ.setdefault(OTEL_LOGS_EXPORTER, "otlp")
7770
os.environ.setdefault(OTEL_EXPORTER_OTLP_PROTOCOL, "grpc")
7871
os.environ.setdefault(OTEL_EXPERIMENTAL_RESOURCE_DETECTORS, "process_runtime,os,otel,telemetry_distro")
72+
# disable exemplars by default for now
73+
os.environ.setdefault(OTEL_METRICS_EXEMPLAR_FILTER, "always_off")

tests/distro/test_distro.py

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
OTEL_TRACES_EXPORTER,
2626
)
2727
from opentelemetry.sdk.environment_variables import (
28+
OTEL_METRICS_EXEMPLAR_FILTER,
2829
OTEL_EXPERIMENTAL_RESOURCE_DETECTORS,
2930
OTEL_EXPORTER_OTLP_PROTOCOL,
3031
)
@@ -42,6 +43,7 @@ def test_default_configuration(self):
4243
self.assertEqual(
4344
"process_runtime,os,otel,telemetry_distro", os.environ.get(OTEL_EXPERIMENTAL_RESOURCE_DETECTORS)
4445
)
46+
self.assertEqual("always_off", os.environ.get(OTEL_METRICS_EXEMPLAR_FILTER))
4547

4648
@mock.patch.dict("os.environ", {}, clear=True)
4749
def test_load_instrumentor_call_with_default_kwargs_for_SystemMetricsInstrumentor(self):
@@ -85,18 +87,3 @@ def test_load_instrumentor_default_kwargs_for_instrumentors(self):
8587
distro.load_instrumentor(entryPoint_mock)
8688

8789
instrumentor_mock.assert_called_once_with()
88-
89-
def test_load_instrumentor_handles_import_error_from_instrumentor_loading(self):
90-
distro = ElasticOpenTelemetryDistro()
91-
entryPoint_mock = mock.Mock()
92-
entryPoint_mock.load.side_effect = ImportError
93-
94-
distro.load_instrumentor(entryPoint_mock)
95-
96-
def test_load_instrumentor_forwards_exceptions(self):
97-
distro = ElasticOpenTelemetryDistro()
98-
entryPoint_mock = mock.Mock()
99-
entryPoint_mock.load.side_effect = ValueError
100-
101-
with self.assertRaises(ValueError):
102-
distro.load_instrumentor(entryPoint_mock)

tests/integration/utils.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,11 @@
2424
from typing import Callable, Mapping, Optional
2525

2626
import leb128
27-
import pkg_resources
27+
from opentelemetry.util._importlib_metadata import version
2828
from oteltest import private as ot
2929

30-
OTEL_VERSION = pkg_resources.get_distribution("opentelemetry-api").version
31-
OTEL_INSTRUMENTATION_VERSION = pkg_resources.get_distribution("opentelemetry-instrumentation").version
30+
OTEL_VERSION = version("opentelemetry-api")
31+
OTEL_INSTRUMENTATION_VERSION = version("opentelemetry-instrumentation")
3232

3333
ROOT_DIR = os.path.abspath(os.path.dirname(os.path.dirname(os.path.dirname(__file__))))
3434

0 commit comments

Comments
 (0)