|
13 | 13 | from aws_lambda_powertools.metrics.provider import BaseProvider
|
14 | 14 | from aws_lambda_powertools.metrics.provider.datadog.warnings import DatadogDataValidationWarning
|
15 | 15 | from aws_lambda_powertools.shared import constants
|
16 |
| -from aws_lambda_powertools.shared.functions import resolve_env_var_choice |
| 16 | +from aws_lambda_powertools.shared.functions import resolve_env_var_choice, resolve_truthy_env_var_choice |
17 | 17 |
|
18 | 18 | if TYPE_CHECKING:
|
19 | 19 | from aws_lambda_powertools.shared.types import AnyCallableT
|
@@ -65,6 +65,15 @@ def __init__(
|
65 | 65 | )
|
66 | 66 | self.default_tags = default_tags or {}
|
67 | 67 | self.flush_to_log = resolve_env_var_choice(choice=flush_to_log, env=os.getenv(constants.DATADOG_FLUSH_TO_LOG))
|
| 68 | + self.metrics_disabled = self.is_metrics_disabled() |
| 69 | + |
| 70 | + @staticmethod |
| 71 | + def is_metrics_disabled() -> bool: |
| 72 | + """Checks if metrics have been disabled via POWERTOOLS_METRICS_DISABLE""" |
| 73 | + is_disabled = resolve_truthy_env_var_choice(env=os.getenv(constants.METRICS_DISABLED_ENV, "false")) |
| 74 | + if is_disabled: |
| 75 | + logger.debug("Metrics have been disabled via env var POWERTOOLS_METRICS_DISABLED") |
| 76 | + return is_disabled |
68 | 77 |
|
69 | 78 | # adding name,value,timestamp,tags
|
70 | 79 | def add_metric(
|
@@ -99,7 +108,8 @@ def add_metric(
|
99 | 108 | >>> sales='sam'
|
100 | 109 | >>> )
|
101 | 110 | """
|
102 |
| - |
| 111 | + if self.metrics_disabled: |
| 112 | + return |
103 | 113 | # validating metric name
|
104 | 114 | if not self._validate_datadog_metric_name(name):
|
105 | 115 | docs = "https://docs.datadoghq.com/metrics/custom_metrics/#naming-custom-metrics"
|
@@ -180,6 +190,8 @@ def flush_metrics(self, raise_on_empty_metrics: bool = False) -> None:
|
180 | 190 | raise_on_empty_metrics : bool, optional
|
181 | 191 | raise exception if no metrics are emitted, by default False
|
182 | 192 | """
|
| 193 | + if self.metrics_disabled: |
| 194 | + return |
183 | 195 | if not raise_on_empty_metrics and len(self.metric_set) == 0:
|
184 | 196 | warnings.warn(
|
185 | 197 | "No application metrics to publish. The cold-start metric may be published if enabled. "
|
|
0 commit comments