Skip to content

Commit

Permalink
collect telemetry where configs are defined
Browse files Browse the repository at this point in the history
  • Loading branch information
mabdinur committed Sep 30, 2024
1 parent 64466d6 commit d9b66e0
Show file tree
Hide file tree
Showing 10 changed files with 290 additions and 189 deletions.
19 changes: 19 additions & 0 deletions ddtrace/settings/_core.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
from envier.env import EnvVariable
from envier.env import _normalized

from ddtrace.internal.telemetry import telemetry_writer


def report_telemetry(env):
for name, e in list(env.__class__.__dict__.items()):
if isinstance(e, EnvVariable) and not e.private:
env_name = env._full_prefix + _normalized(e.name)
env_val = e(env, env._full_prefix)
raw_val = env.source.get(env_name)
if env_name in env.source and env_val == e._cast(e.type, raw_val, env):
source = "env_var"
elif env_val == e.default:
source = "default"
else:
source = "unknown"
telemetry_writer.add_configuration(env_name, str(env_val), source)
2 changes: 2 additions & 0 deletions ddtrace/settings/asm.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
from ddtrace.constants import APPSEC_ENV
from ddtrace.constants import IAST_ENV
from ddtrace.internal.utils.deprecations import DDTraceDeprecationWarning
from ddtrace.settings._core import report_telemetry as _report_telemetry
from ddtrace.vendor.debtcollector import deprecate


Expand Down Expand Up @@ -231,6 +232,7 @@ def _user_event_mode(self) -> str:


config = ASMConfig()
_report_telemetry(config)

if not config._asm_libddwaf_available:
config._asm_enabled = False
Expand Down
168 changes: 82 additions & 86 deletions ddtrace/settings/config.py

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions ddtrace/settings/crashtracker.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
from envier import En

from ddtrace.internal.utils.formats import parse_tags_str
from ddtrace.settings._core import report_telemetry as _report_telemetry


resolver_default = "full"
Expand Down Expand Up @@ -111,3 +112,4 @@ class CrashtrackingConfig(En):


config = CrashtrackingConfig()
_report_telemetry(config)
2 changes: 2 additions & 0 deletions ddtrace/settings/dynamic_instrumentation.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
from ddtrace.internal.constants import DEFAULT_SERVICE_NAME
from ddtrace.internal.utils.config import get_application_name
from ddtrace.settings import _config as ddconfig
from ddtrace.settings._core import report_telemetry as _report_telemetry
from ddtrace.version import get_version


Expand Down Expand Up @@ -131,3 +132,4 @@ class DynamicInstrumentationConfig(En):


config = DynamicInstrumentationConfig()
_report_telemetry(config)
3 changes: 3 additions & 0 deletions ddtrace/settings/exception_replay.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
from envier import En

from ddtrace.settings._core import report_telemetry as _report_telemetry


class ExceptionReplayConfig(En):
__prefix__ = "dd.exception"
Expand All @@ -15,3 +17,4 @@ class ExceptionReplayConfig(En):


config = ExceptionReplayConfig()
_report_telemetry(config)
2 changes: 2 additions & 0 deletions ddtrace/settings/peer_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
from ddtrace.internal.schema import SCHEMA_VERSION
from ddtrace.internal.utils.formats import asbool
from ddtrace.internal.utils.formats import parse_tags_str
from ddtrace.settings._core import report_telemetry as _report_telemetry


class PeerServiceConfig(object):
Expand Down Expand Up @@ -37,3 +38,4 @@ def peer_service_mapping(self):


_ps_config = PeerServiceConfig()
_report_telemetry(_ps_config)
2 changes: 2 additions & 0 deletions ddtrace/settings/profiling.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
from ddtrace.internal import gitmetadata
from ddtrace.internal.logger import get_logger
from ddtrace.internal.utils.formats import parse_tags_str
from ddtrace.settings._core import report_telemetry as _report_telemetry


logger = get_logger(__name__)
Expand Down Expand Up @@ -418,6 +419,7 @@ class ProfilingConfigExport(En):
ProfilingConfig.include(ProfilingConfigExport, namespace="export")

config = ProfilingConfig()
_report_telemetry(config)

# If during processing we discover that the configuration was injected, we need to do a few things
# - Mark it as such
Expand Down
3 changes: 3 additions & 0 deletions ddtrace/settings/symbol_db.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

from envier import En

from ddtrace.settings._core import report_telemetry as _report_telemetry


class SymbolDatabaseConfig(En):
__prefix__ = "dd.symbol_database"
Expand Down Expand Up @@ -36,3 +38,4 @@ class SymbolDatabaseConfig(En):


config = SymbolDatabaseConfig()
_report_telemetry(config)
276 changes: 173 additions & 103 deletions tests/telemetry/test_writer.py

Large diffs are not rendered by default.

0 comments on commit d9b66e0

Please sign in to comment.