You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by ep...@apache.org on 2024/06/04 13:32:13 UTC
(airflow) 17/50: Refactor `SafeDogStatsdLogger` to use `get_validator` to enable pattern matching (#39370)
This is an automated email from the ASF dual-hosted git repository.
ephraimanierobi pushed a commit to branch v2-9-test
in repository https://gitbox.apache.org/repos/asf/airflow.git
commit 2d88ccab1a861af90d38a14d2cf8506f981acfea
Author: Kalyan <ka...@live.com>
AuthorDate: Mon May 6 16:58:17 2024 +0530
Refactor `SafeDogStatsdLogger` to use `get_validator` to enable pattern matching (#39370)
closes #39368
By reusing the get_validators function, we can incorporate pattern search to include allow/block lists.
(cherry picked from commit 0c4ffb85b3d2dd5dc78149ef140b08a7d6e0d0eb)
---
airflow/metrics/datadog_logger.py | 16 ++--------------
tests/core/test_stats.py | 14 ++++++++++++--
2 files changed, 14 insertions(+), 16 deletions(-)
diff --git a/airflow/metrics/datadog_logger.py b/airflow/metrics/datadog_logger.py
index c2afe2bb80..1564079773 100644
--- a/airflow/metrics/datadog_logger.py
+++ b/airflow/metrics/datadog_logger.py
@@ -26,6 +26,7 @@ from airflow.metrics.protocols import Timer
from airflow.metrics.validators import (
AllowListValidator,
BlockListValidator,
+ get_validator,
validate_stat,
)
@@ -160,25 +161,12 @@ def get_dogstatsd_logger(cls) -> SafeDogStatsdLogger:
"""Get DataDog StatsD logger."""
from datadog import DogStatsd
- metrics_validator: ListValidator
-
dogstatsd = DogStatsd(
host=conf.get("metrics", "statsd_host"),
port=conf.getint("metrics", "statsd_port"),
namespace=conf.get("metrics", "statsd_prefix"),
constant_tags=cls.get_constant_tags(),
)
- if conf.get("metrics", "metrics_allow_list", fallback=None):
- metrics_validator = AllowListValidator(conf.get("metrics", "metrics_allow_list"))
- if conf.get("metrics", "metrics_block_list", fallback=None):
- log.warning(
- "Ignoring metrics_block_list as both metrics_allow_list "
- "and metrics_block_list have been set"
- )
- elif conf.get("metrics", "metrics_block_list", fallback=None):
- metrics_validator = BlockListValidator(conf.get("metrics", "metrics_block_list"))
- else:
- metrics_validator = AllowListValidator()
datadog_metrics_tags = conf.getboolean("metrics", "statsd_datadog_metrics_tags", fallback=True)
metric_tags_validator = BlockListValidator(conf.get("metrics", "statsd_disabled_tags", fallback=None))
- return SafeDogStatsdLogger(dogstatsd, metrics_validator, datadog_metrics_tags, metric_tags_validator)
+ return SafeDogStatsdLogger(dogstatsd, get_validator(), datadog_metrics_tags, metric_tags_validator)
diff --git a/tests/core/test_stats.py b/tests/core/test_stats.py
index 2c167d5d1e..4c8f6fb1d7 100644
--- a/tests/core/test_stats.py
+++ b/tests/core/test_stats.py
@@ -253,7 +253,9 @@ class TestDogStats:
"""Test that enabling this sets the right instance properties"""
from datadog import DogStatsd
- with conf_vars({("metrics", "statsd_datadog_enabled"): "True"}):
+ with conf_vars(
+ {("metrics", "statsd_datadog_enabled"): "True", ("metrics", "metrics_use_pattern_match"): "True"}
+ ):
importlib.reload(airflow.stats)
assert isinstance(airflow.stats.Stats.dogstatsd, DogStatsd)
assert not hasattr(airflow.stats.Stats, "statsd")
@@ -263,7 +265,13 @@ class TestDogStats:
def test_does_not_send_stats_using_statsd_when_statsd_and_dogstatsd_both_on(self):
from datadog import DogStatsd
- with conf_vars({("metrics", "statsd_on"): "True", ("metrics", "statsd_datadog_enabled"): "True"}):
+ with conf_vars(
+ {
+ ("metrics", "statsd_on"): "True",
+ ("metrics", "statsd_datadog_enabled"): "True",
+ ("metrics", "metrics_use_pattern_match"): "True",
+ }
+ ):
importlib.reload(airflow.stats)
assert isinstance(airflow.stats.Stats.dogstatsd, DogStatsd)
assert not hasattr(airflow.stats.Stats, "statsd")
@@ -515,6 +523,7 @@ class TestCustomStatsName:
@conf_vars(
{
("metrics", "statsd_datadog_enabled"): "True",
+ ("metrics", "metrics_use_pattern_match"): "True",
("metrics", "stat_name_handler"): "tests.core.test_stats.always_invalid",
}
)
@@ -539,6 +548,7 @@ class TestCustomStatsName:
@conf_vars(
{
("metrics", "statsd_datadog_enabled"): "True",
+ ("metrics", "metrics_use_pattern_match"): "True",
("metrics", "stat_name_handler"): "tests.core.test_stats.always_valid",
}
)