Skip to content

Commit 6a76cc5

Browse files
feat: non-experimental enable_metrics option (#5056)
Add an `enable_metrics` option to toggle metrics, defaulting to `True`.
1 parent d0e7d14 commit 6a76cc5

File tree

4 files changed

+26
-2
lines changed

4 files changed

+26
-2
lines changed

sentry_sdk/client.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
get_before_send_log,
2828
get_before_send_metric,
2929
has_logs_enabled,
30+
has_metrics_enabled,
3031
)
3132
from sentry_sdk.serializer import serialize
3233
from sentry_sdk.tracing import trace
@@ -374,7 +375,9 @@ def _capture_envelope(envelope):
374375

375376
self.log_batcher = LogBatcher(capture_func=_capture_envelope)
376377

377-
self.metrics_batcher = MetricsBatcher(capture_func=_capture_envelope)
378+
self.metrics_batcher = None
379+
if has_metrics_enabled(self.options):
380+
self.metrics_batcher = MetricsBatcher(capture_func=_capture_envelope)
378381

379382
max_request_body_size = ("always", "never", "small", "medium")
380383
if self.options["max_request_body_size"] not in max_request_body_size:
@@ -975,7 +978,7 @@ def _capture_log(self, log):
975978

976979
def _capture_metric(self, metric):
977980
# type: (Optional[Metric]) -> None
978-
if metric is None:
981+
if not has_metrics_enabled(self.options) or metric is None:
979982
return
980983

981984
current_scope = sentry_sdk.get_current_scope()

sentry_sdk/consts.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1011,6 +1011,7 @@ def __init__(
10111011
enable_logs=False, # type: bool
10121012
before_send_log=None, # type: Optional[Callable[[Log, Hint], Optional[Log]]]
10131013
trace_ignore_status_codes=frozenset(), # type: AbstractSet[int]
1014+
enable_metrics=True, # type: bool
10141015
):
10151016
# type: (...) -> None
10161017
"""Initialize the Sentry SDK with the given parameters. All parameters described here can be used in a call to `sentry_sdk.init()`.

sentry_sdk/utils.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2047,6 +2047,14 @@ def get_before_send_log(options):
20472047
)
20482048

20492049

2050+
def has_metrics_enabled(options):
2051+
# type: (Optional[dict[str, Any]]) -> bool
2052+
if options is None:
2053+
return False
2054+
2055+
return bool(options.get("enable_metrics", True))
2056+
2057+
20502058
def get_before_send_metric(options):
20512059
# type: (Optional[dict[str, Any]]) -> Optional[Callable[[Metric, Hint], Optional[Metric]]]
20522060
if options is None:

tests/test_metrics.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,18 @@ def envelopes_to_metrics(envelopes):
3333
return res
3434

3535

36+
def test_metrics_disabled(sentry_init, capture_envelopes):
37+
sentry_init(enable_metrics=False)
38+
39+
envelopes = capture_envelopes()
40+
41+
sentry_sdk.metrics.count("test.counter", 1)
42+
sentry_sdk.metrics.gauge("test.gauge", 42)
43+
sentry_sdk.metrics.distribution("test.distribution", 200)
44+
45+
assert len(envelopes) == 0
46+
47+
3648
def test_metrics_basics(sentry_init, capture_envelopes):
3749
sentry_init()
3850
envelopes = capture_envelopes()

0 commit comments

Comments
 (0)