Skip to content

Commit e7e4227

Browse files
committed
add exemplar filter as environment variable
1 parent 0ea80dc commit e7e4227

File tree

1 file changed

+21
-4
lines changed
  • opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal

1 file changed

+21
-4
lines changed

opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/__init__.py

+21-4
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,16 @@
3333
)
3434
from opentelemetry.metrics import UpDownCounter as APIUpDownCounter
3535
from opentelemetry.metrics import _Gauge as APIGauge
36-
from opentelemetry.sdk.environment_variables import OTEL_SDK_DISABLED
36+
from opentelemetry.sdk.environment_variables import (
37+
OTEL_SDK_DISABLED,
38+
OTEL_METRICS_EXEMPLAR_FILTER,
39+
)
3740
from opentelemetry.sdk.metrics._internal.exceptions import MetricsTimeoutError
3841
from opentelemetry.sdk.metrics._internal.exemplar import (
3942
ExemplarFilter,
4043
TraceBasedExemplarFilter,
44+
AlwaysOnExemplarFilter,
45+
AlwaysOffExemplarFilter,
4146
)
4247
from opentelemetry.sdk.metrics._internal.instrument import (
4348
_Counter,
@@ -394,11 +399,12 @@ def __init__(
394399
self._atexit_handler = None
395400
if resource is None:
396401
resource = Resource.create({})
402+
filter = environ.get(OTEL_METRICS_EXEMPLAR_FILTER, None)
397403
self._sdk_config = SdkConfiguration(
398404
exemplar_filter=(
399-
TraceBasedExemplarFilter()
400-
if exemplar_filter is None
401-
else exemplar_filter
405+
exemplar_filter
406+
if exemplar_filter is not None
407+
else self._get_exemplar_filter(filter)
402408
),
403409
resource=resource,
404410
metric_readers=metric_readers,
@@ -556,3 +562,14 @@ def get_meter(
556562
self._measurement_consumer,
557563
)
558564
return self._meters[info]
565+
566+
def _get_exemplar_filter(self, exemplar_filter: str) -> ExemplarFilter:
567+
if not exemplar_filter or exemplar_filter == 'trace_based':
568+
return TraceBasedExemplarFilter()
569+
elif exemplar_filter == 'always_on':
570+
return AlwaysOnExemplarFilter()
571+
elif exemplar_filter == 'always_off':
572+
return AlwaysOffExemplarFilter()
573+
else:
574+
raise Exception("Invalid exemplar filter.")
575+

0 commit comments

Comments
 (0)