Skip to content

Commit 35c3c11

Browse files
authored
chore(mlobs): set a special flag to distinguish AI Obs spans from DJM (#14789)
## Description <!-- Provide an overview of the change and motivation for the change --> This micro will enable our backend to differentiate AI Obs spans from other DJM spans, so that customers are not billed for AI Observability spans as part of their APM bill. ## Testing <!-- Describe your testing strategy or note what tests are included --> After installing ddtrace from local, run Ray locally, run a sample job and [make sure the new spans get tagged with the new _dd.ai_obs.enabled metric](https://dd.datad0g.com/apm/traces?query=%40component%3Aray&agg_m=count&agg_m_source=base&agg_t=count&cols=core_service%2Ccore_resource_name%2Clog_duration%2Clog_http.method%2Clog_http.status_code&fromUser=false&graphType=waterfall&historicalData=true&messageDisplay=inline&query_translation_version=v0&shouldShowLegend=true&sort=desc&spanID=2509930093327428234&spanType=all&storage=hot&timeHint=1759854974570&trace=AwAAAZm_h9ZqCDBU7wAAABhBWm1faDktREFBQkJQSC0yTlhVeF8tcmsAAAAkZjE5OWJmODctZjU2My00ODA0LTk4MGEtZTMwMmMyYmVjNDlmAAAB7A&traceID=68e5417b00000000e4ea1f535629f63a&traceQuery=&view=spans&start=1759854151303&end=1759855051303&paused=true) ## Risks <!-- Note any risks associated with this change, or "None" if no risks --> ## Additional Notes <!-- Any other information that would be helpful for reviewers -->
1 parent 77444ab commit 35c3c11

12 files changed

+55
-0
lines changed

ddtrace/constants.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
44
Constants that should NOT be referenced by ddtrace users are marked with a leading underscore.
55
"""
6+
67
_SAMPLING_PRIORITY_KEY = "_sampling_priority_v1"
78
_SAMPLING_AGENT_DECISION = "_dd.agent_psr"
89
_SAMPLING_RULE_DECISION = "_dd.rule_psr"
@@ -28,6 +29,7 @@
2829
_MULTIPLE_IP_HEADERS = "_dd.multiple-ip-headers"
2930
_DJM_ENABLED_KEY = "_dd.djm.enabled"
3031
_FILTER_KEPT_KEY = "_dd.filter.kept"
32+
_AI_OBS_ENABLED_KEY = "_dd.ai_obs.enabled"
3133

3234
APPSEC_ENV = "DD_APPSEC_ENABLED"
3335
_CONFIG_ENDPOINT_ENV = "_DD_CONFIG_ENDPOINT"

ddtrace/contrib/internal/ray/utils.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
from ddtrace._trace._limits import MAX_SPAN_META_VALUE_LEN
1919
from ddtrace._trace.context import Context
2020
from ddtrace._trace.span import Span
21+
from ddtrace.constants import _AI_OBS_ENABLED_KEY
2122
from ddtrace.constants import _DJM_ENABLED_KEY
2223
from ddtrace.constants import _FILTER_KEPT_KEY
2324
from ddtrace.constants import _SAMPLING_PRIORITY_KEY
@@ -88,6 +89,7 @@ def _extract_tracing_context_from_env() -> Optional[Context]:
8889
def _inject_ray_span_tags_and_metrics(span: Span) -> None:
8990
span.set_tag_str("component", RAY_COMPONENT)
9091
span.set_tag_str(RAY_HOSTNAME, socket.gethostname())
92+
span.set_metric(_AI_OBS_ENABLED_KEY, 1)
9193
span.set_metric(_DJM_ENABLED_KEY, 1)
9294
span.set_metric(_FILTER_KEPT_KEY, 1)
9395
span.set_metric(_SPAN_MEASURED_KEY, 1)

tests/snapshots/tests.contrib.ray.test_ray.test_actor_and_task.json

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
"span.kind": "producer"
2424
},
2525
"metrics": {
26+
"_dd.ai_obs.enabled": 1,
2627
"_dd.djm.enabled": 1,
2728
"_dd.filter.kept": 1,
2829
"_dd.measured": 1,
@@ -54,6 +55,7 @@
5455
"span.kind": "consumer"
5556
},
5657
"metrics": {
58+
"_dd.ai_obs.enabled": 1,
5759
"_dd.djm.enabled": 1,
5860
"_dd.filter.kept": 1,
5961
"_dd.measured": 1,
@@ -89,6 +91,7 @@
8991
"span.kind": "producer"
9092
},
9193
"metrics": {
94+
"_dd.ai_obs.enabled": 1,
9295
"_dd.djm.enabled": 1,
9396
"_dd.filter.kept": 1,
9497
"_dd.measured": 1,
@@ -120,6 +123,7 @@
120123
"span.kind": "consumer"
121124
},
122125
"metrics": {
126+
"_dd.ai_obs.enabled": 1,
123127
"_dd.djm.enabled": 1,
124128
"_dd.filter.kept": 1,
125129
"_dd.measured": 1,
@@ -154,6 +158,7 @@
154158
"span.kind": "producer"
155159
},
156160
"metrics": {
161+
"_dd.ai_obs.enabled": 1,
157162
"_dd.djm.enabled": 1,
158163
"_dd.filter.kept": 1,
159164
"_dd.measured": 1,
@@ -183,6 +188,7 @@
183188
"span.kind": "consumer"
184189
},
185190
"metrics": {
191+
"_dd.ai_obs.enabled": 1,
186192
"_dd.djm.enabled": 1,
187193
"_dd.filter.kept": 1,
188194
"_dd.measured": 1,
@@ -209,6 +215,7 @@
209215
"span.kind": "consumer"
210216
},
211217
"metrics": {
218+
"_dd.ai_obs.enabled": 1,
212219
"_dd.djm.enabled": 1,
213220
"_dd.filter.kept": 1,
214221
"_dd.measured": 1,
@@ -236,6 +243,7 @@
236243
"span.kind": "producer"
237244
},
238245
"metrics": {
246+
"_dd.ai_obs.enabled": 1,
239247
"_dd.djm.enabled": 1,
240248
"_dd.filter.kept": 1,
241249
"_dd.measured": 1,
@@ -264,6 +272,7 @@
264272
"span.kind": "consumer"
265273
},
266274
"metrics": {
275+
"_dd.ai_obs.enabled": 1,
267276
"_dd.djm.enabled": 1,
268277
"_dd.filter.kept": 1,
269278
"_dd.measured": 1,
@@ -293,6 +302,7 @@
293302
"span.kind": "producer"
294303
},
295304
"metrics": {
305+
"_dd.ai_obs.enabled": 1,
296306
"_dd.djm.enabled": 1,
297307
"_dd.filter.kept": 1,
298308
"_dd.measured": 1,
@@ -321,6 +331,7 @@
321331
"span.kind": "consumer"
322332
},
323333
"metrics": {
334+
"_dd.ai_obs.enabled": 1,
324335
"_dd.djm.enabled": 1,
325336
"_dd.filter.kept": 1,
326337
"_dd.measured": 1,

tests/snapshots/tests.contrib.ray.test_ray.test_actor_interactions.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
"span.kind": "producer"
2424
},
2525
"metrics": {
26+
"_dd.ai_obs.enabled": 1,
2627
"_dd.djm.enabled": 1,
2728
"_dd.filter.kept": 1,
2829
"_dd.measured": 1,
@@ -54,6 +55,7 @@
5455
"span.kind": "consumer"
5556
},
5657
"metrics": {
58+
"_dd.ai_obs.enabled": 1,
5759
"_dd.djm.enabled": 1,
5860
"_dd.filter.kept": 1,
5961
"_dd.measured": 1,
@@ -82,6 +84,7 @@
8284
"span.kind": "consumer"
8385
},
8486
"metrics": {
87+
"_dd.ai_obs.enabled": 1,
8588
"_dd.djm.enabled": 1,
8689
"_dd.filter.kept": 1,
8790
"_dd.measured": 1,
@@ -108,6 +111,7 @@
108111
"span.kind": "consumer"
109112
},
110113
"metrics": {
114+
"_dd.ai_obs.enabled": 1,
111115
"_dd.djm.enabled": 1,
112116
"_dd.filter.kept": 1,
113117
"_dd.measured": 1,
@@ -134,6 +138,7 @@
134138
"span.kind": "producer"
135139
},
136140
"metrics": {
141+
"_dd.ai_obs.enabled": 1,
137142
"_dd.djm.enabled": 1,
138143
"_dd.filter.kept": 1,
139144
"_dd.measured": 1,
@@ -160,6 +165,7 @@
160165
"span.kind": "consumer"
161166
},
162167
"metrics": {
168+
"_dd.ai_obs.enabled": 1,
163169
"_dd.djm.enabled": 1,
164170
"_dd.filter.kept": 1,
165171
"_dd.measured": 1,
@@ -186,6 +192,7 @@
186192
"span.kind": "producer"
187193
},
188194
"metrics": {
195+
"_dd.ai_obs.enabled": 1,
189196
"_dd.djm.enabled": 1,
190197
"_dd.filter.kept": 1,
191198
"_dd.measured": 1,
@@ -212,6 +219,7 @@
212219
"span.kind": "consumer"
213220
},
214221
"metrics": {
222+
"_dd.ai_obs.enabled": 1,
215223
"_dd.djm.enabled": 1,
216224
"_dd.filter.kept": 1,
217225
"_dd.measured": 1,
@@ -238,6 +246,7 @@
238246
"span.kind": "producer"
239247
},
240248
"metrics": {
249+
"_dd.ai_obs.enabled": 1,
241250
"_dd.djm.enabled": 1,
242251
"_dd.filter.kept": 1,
243252
"_dd.measured": 1,
@@ -264,6 +273,7 @@
264273
"span.kind": "consumer"
265274
},
266275
"metrics": {
276+
"_dd.ai_obs.enabled": 1,
267277
"_dd.djm.enabled": 1,
268278
"_dd.filter.kept": 1,
269279
"_dd.measured": 1,
@@ -290,6 +300,7 @@
290300
"span.kind": "producer"
291301
},
292302
"metrics": {
303+
"_dd.ai_obs.enabled": 1,
293304
"_dd.djm.enabled": 1,
294305
"_dd.filter.kept": 1,
295306
"_dd.measured": 1,
@@ -316,6 +327,7 @@
316327
"span.kind": "consumer"
317328
},
318329
"metrics": {
330+
"_dd.ai_obs.enabled": 1,
319331
"_dd.djm.enabled": 1,
320332
"_dd.filter.kept": 1,
321333
"_dd.measured": 1,

tests/snapshots/tests.contrib.ray.test_ray.test_args_kwargs.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
"span.kind": "producer"
2626
},
2727
"metrics": {
28+
"_dd.ai_obs.enabled": 1,
2829
"_dd.djm.enabled": 1,
2930
"_dd.filter.kept": 1,
3031
"_dd.measured": 1,
@@ -58,6 +59,7 @@
5859
"span.kind": "consumer"
5960
},
6061
"metrics": {
62+
"_dd.ai_obs.enabled": 1,
6163
"_dd.djm.enabled": 1,
6264
"_dd.filter.kept": 1,
6365
"_dd.measured": 1,
@@ -94,6 +96,7 @@
9496
"span.kind": "producer"
9597
},
9698
"metrics": {
99+
"_dd.ai_obs.enabled": 1,
97100
"_dd.djm.enabled": 1,
98101
"_dd.filter.kept": 1,
99102
"_dd.measured": 1,
@@ -125,6 +128,7 @@
125128
"span.kind": "consumer"
126129
},
127130
"metrics": {
131+
"_dd.ai_obs.enabled": 1,
128132
"_dd.djm.enabled": 1,
129133
"_dd.filter.kept": 1,
130134
"_dd.measured": 1,

tests/snapshots/tests.contrib.ray.test_ray.test_core_api_deactivated.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
"span.kind": "producer"
2323
},
2424
"metrics": {
25+
"_dd.ai_obs.enabled": 1,
2526
"_dd.djm.enabled": 1,
2627
"_dd.filter.kept": 1,
2728
"_dd.measured": 1,
@@ -53,6 +54,7 @@
5354
"span.kind": "consumer"
5455
},
5556
"metrics": {
57+
"_dd.ai_obs.enabled": 1,
5658
"_dd.djm.enabled": 1,
5759
"_dd.filter.kept": 1,
5860
"_dd.measured": 1,

tests/snapshots/tests.contrib.ray.test_ray.test_nested_tasks.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
"span.kind": "producer"
2424
},
2525
"metrics": {
26+
"_dd.ai_obs.enabled": 1,
2627
"_dd.djm.enabled": 1,
2728
"_dd.filter.kept": 1,
2829
"_dd.measured": 1,
@@ -54,6 +55,7 @@
5455
"span.kind": "consumer"
5556
},
5657
"metrics": {
58+
"_dd.ai_obs.enabled": 1,
5759
"_dd.djm.enabled": 1,
5860
"_dd.filter.kept": 1,
5961
"_dd.measured": 1,
@@ -83,6 +85,7 @@
8385
"span.kind": "producer"
8486
},
8587
"metrics": {
88+
"_dd.ai_obs.enabled": 1,
8689
"_dd.djm.enabled": 1,
8790
"_dd.filter.kept": 1,
8891
"_dd.measured": 1,
@@ -111,6 +114,7 @@
111114
"span.kind": "consumer"
112115
},
113116
"metrics": {
117+
"_dd.ai_obs.enabled": 1,
114118
"_dd.djm.enabled": 1,
115119
"_dd.filter.kept": 1,
116120
"_dd.measured": 1,

tests/snapshots/tests.contrib.ray.test_ray.test_simple_actor.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
"span.kind": "producer"
2323
},
2424
"metrics": {
25+
"_dd.ai_obs.enabled": 1,
2526
"_dd.djm.enabled": 1,
2627
"_dd.filter.kept": 1,
2728
"_dd.measured": 1,
@@ -51,6 +52,7 @@
5152
"span.kind": "consumer"
5253
},
5354
"metrics": {
55+
"_dd.ai_obs.enabled": 1,
5456
"_dd.djm.enabled": 1,
5557
"_dd.filter.kept": 1,
5658
"_dd.measured": 1,
@@ -77,6 +79,7 @@
7779
"span.kind": "consumer"
7880
},
7981
"metrics": {
82+
"_dd.ai_obs.enabled": 1,
8083
"_dd.djm.enabled": 1,
8184
"_dd.filter.kept": 1,
8285
"_dd.measured": 1,
@@ -103,6 +106,7 @@
103106
"span.kind": "consumer"
104107
},
105108
"metrics": {
109+
"_dd.ai_obs.enabled": 1,
106110
"_dd.djm.enabled": 1,
107111
"_dd.filter.kept": 1,
108112
"_dd.measured": 1,
@@ -129,6 +133,7 @@
129133
"span.kind": "consumer"
130134
},
131135
"metrics": {
136+
"_dd.ai_obs.enabled": 1,
132137
"_dd.djm.enabled": 1,
133138
"_dd.filter.kept": 1,
134139
"_dd.measured": 1,

tests/snapshots/tests.contrib.ray.test_ray.test_simple_get.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
"span.kind": "producer"
2424
},
2525
"metrics": {
26+
"_dd.ai_obs.enabled": 1,
2627
"_dd.djm.enabled": 1,
2728
"_dd.filter.kept": 1,
2829
"_dd.measured": 1,
@@ -54,6 +55,7 @@
5455
"span.kind": "consumer"
5556
},
5657
"metrics": {
58+
"_dd.ai_obs.enabled": 1,
5759
"_dd.djm.enabled": 1,
5860
"_dd.filter.kept": 1,
5961
"_dd.measured": 1,
@@ -90,6 +92,7 @@
9092
"span.kind": "producer"
9193
},
9294
"metrics": {
95+
"_dd.ai_obs.enabled": 1,
9396
"_dd.djm.enabled": 1,
9497
"_dd.filter.kept": 1,
9598
"_dd.measured": 1,

tests/snapshots/tests.contrib.ray.test_ray.test_simple_put.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
"span.kind": "producer"
2626
},
2727
"metrics": {
28+
"_dd.ai_obs.enabled": 1,
2829
"_dd.djm.enabled": 1,
2930
"_dd.filter.kept": 1,
3031
"_dd.measured": 1,
@@ -61,6 +62,7 @@
6162
"span.kind": "producer"
6263
},
6364
"metrics": {
65+
"_dd.ai_obs.enabled": 1,
6466
"_dd.djm.enabled": 1,
6567
"_dd.filter.kept": 1,
6668
"_dd.measured": 1,
@@ -92,6 +94,7 @@
9294
"span.kind": "consumer"
9395
},
9496
"metrics": {
97+
"_dd.ai_obs.enabled": 1,
9598
"_dd.djm.enabled": 1,
9699
"_dd.filter.kept": 1,
97100
"_dd.measured": 1,

0 commit comments

Comments
 (0)