|
1 | | -import os |
2 | | -from typing import Dict |
3 | | -from typing import Optional |
4 | | - |
5 | | -from ddtrace import config as tracer_config |
6 | | -from ddtrace.internal.agent import get_trace_url |
7 | | -from ddtrace.internal.constants import DEFAULT_SERVICE_NAME |
8 | 1 | from ddtrace.internal.logger import get_logger |
9 | | -from ddtrace.internal.utils.config import get_application_name |
10 | | -from ddtrace.internal.utils.formats import asbool |
11 | | -from ddtrace.version import get_version |
| 2 | +from ddtrace.settings.dynamic_instrumentation import DynamicInstrumentationConfig |
12 | 3 |
|
13 | 4 |
|
14 | 5 | log = get_logger(__name__) |
15 | 6 |
|
| 7 | +config = DynamicInstrumentationConfig() |
16 | 8 |
|
17 | | -DEFAULT_DEBUGGER_PORT = 8126 |
18 | | -DEFAULT_MAX_PROBES = 100 |
19 | | -DEFAULT_METRICS = True |
20 | | -DEFAULT_GLOBAL_RATE_LIMIT = 100.0 |
21 | | -DEFAULT_MAX_PAYLOAD_SIZE = 1 << 20 # 1 MB |
22 | | -DEFAULT_CONFIG_TIMEOUT = 30 # s |
23 | | -DEFAULT_UPLOAD_TIMEOUT = 30 # seconds |
24 | | -DEFAULT_UPLOAD_FLUSH_INTERVAL = 1.0 # seconds |
25 | | -DEFAULT_PROBE_POLL_INTERVAL = 1.0 # seconds |
26 | | -DEFAULT_DIAGNOSTIC_INTERVAL = 3600 # 1 hour |
27 | | - |
28 | | - |
29 | | -class DebuggerConfig(object): |
30 | | - """Debugger configuration.""" |
31 | | - |
32 | | - service_name = DEFAULT_SERVICE_NAME |
33 | | - probe_url = get_trace_url() |
34 | | - snapshot_intake_url = get_trace_url() |
35 | | - max_probes = DEFAULT_MAX_PROBES |
36 | | - metrics = DEFAULT_METRICS |
37 | | - global_rate_limit = DEFAULT_GLOBAL_RATE_LIMIT |
38 | | - max_payload_size = DEFAULT_MAX_PAYLOAD_SIZE |
39 | | - config_timeout = DEFAULT_CONFIG_TIMEOUT |
40 | | - upload_timeout = DEFAULT_UPLOAD_TIMEOUT |
41 | | - upload_flush_interval = DEFAULT_UPLOAD_FLUSH_INTERVAL |
42 | | - poll_interval = DEFAULT_PROBE_POLL_INTERVAL |
43 | | - diagnostic_interval = DEFAULT_DIAGNOSTIC_INTERVAL |
44 | | - tags = None # type: Optional[str] |
45 | | - _tags = {} # type: Dict[str, str] |
46 | | - _tags_in_qs = True |
47 | | - _snapshot_intake_endpoint = "/v1/input" |
48 | | - |
49 | | - def __init__(self): |
50 | | - # type: () -> None |
51 | | - try: |
52 | | - self.snapshot_intake_url = os.environ["DD_DEBUGGER_SNAPSHOT_INTAKE_URL"] |
53 | | - self._tags_in_qs = False |
54 | | - except KeyError: |
55 | | - self.snapshot_intake_url = get_trace_url() |
56 | | - self._snapshot_intake_endpoint = "/debugger" + self._snapshot_intake_endpoint |
57 | | - |
58 | | - self.probe_url = os.getenv("DD_DEBUGGER_PROBE_URL", get_trace_url()) |
59 | | - self.upload_timeout = int(os.getenv("DD_DEBUGGER_UPLOAD_TIMEOUT", DEFAULT_UPLOAD_TIMEOUT)) |
60 | | - self.upload_flush_interval = float( |
61 | | - os.getenv("DD_DEBUGGER_UPLOAD_FLUSH_INTERVAL", DEFAULT_UPLOAD_FLUSH_INTERVAL) |
62 | | - ) |
63 | | - |
64 | | - self._tags["env"] = tracer_config.env |
65 | | - self._tags["version"] = tracer_config.version |
66 | | - self._tags["debugger_version"] = get_version() |
67 | | - |
68 | | - self._tags.update(tracer_config.tags) |
69 | | - |
70 | | - self.tags = ",".join([":".join((k, v)) for (k, v) in self._tags.items() if v is not None]) |
71 | | - |
72 | | - self.service_name = tracer_config.service or get_application_name() or DEFAULT_SERVICE_NAME |
73 | | - self.metrics = asbool(os.getenv("DD_DEBUGGER_METRICS_ENABLED", DEFAULT_METRICS)) |
74 | | - self.max_payload_size = int(os.getenv("DD_DEBUGGER_MAX_PAYLOAD_SIZE", DEFAULT_MAX_PAYLOAD_SIZE)) |
75 | | - |
76 | | - self.config_timeout = int(os.getenv("DD_DEBUGGER_CONFIG_TIMEOUT", DEFAULT_CONFIG_TIMEOUT)) |
77 | | - self.poll_interval = int(os.getenv("DD_DEBUGGER_POLL_INTERVAL", DEFAULT_PROBE_POLL_INTERVAL)) |
78 | | - self.diagnostic_interval = int(os.getenv("DD_DEBUGGER_DIAGNOSTIC_INTERVAL", DEFAULT_DIAGNOSTIC_INTERVAL)) |
79 | | - |
80 | | - log.debug( |
81 | | - "Debugger configuration: %r", |
82 | | - {k: v for k, v in ((k, getattr(self, k)) for k in type(self).__dict__ if not k.startswith("__"))}, |
83 | | - ) |
84 | | - |
85 | | - |
86 | | -config = DebuggerConfig() |
| 9 | +log.debug("Dynamic instrumentation configuration: %r", config.__dict__) |
0 commit comments