Skip to content

Commit c9209cb

Browse files
authored
feat: add peer.service (#337)
* update fallback service on wrapping * add `peer.service` for inferred spans * add tests * update integration tests * change fallback to previous value this should be handled in a profiling PR * remove logic from `tracing.py` * move `peer.service` one level up on span finish * add `service` to integration tests
1 parent 16f5e4c commit c9209cb

10 files changed

+443
-293
lines changed

datadog_lambda/wrapper.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,6 @@
5454
dd_capture_lambda_payload_enabled = (
5555
os.environ.get("DD_CAPTURE_LAMBDA_PAYLOAD", "false").lower() == "true"
5656
)
57-
service_env_var = os.environ.get("DD_SERVICE", "DefaultServiceName")
58-
env_env_var = os.environ.get("DD_ENV", None)
5957

6058
DD_FLUSH_TO_LOG = "DD_FLUSH_TO_LOG"
6159
DD_LOGS_INJECTION = "DD_LOGS_INJECTION"
@@ -70,6 +68,9 @@
7068
DD_COLD_START_TRACE_SKIP_LIB = "DD_COLD_START_TRACE_SKIP_LIB"
7169
DD_REQUESTS_SERVICE_NAME = "DD_REQUESTS_SERVICE_NAME"
7270
DD_SERVICE = "DD_SERVICE"
71+
DD_ENV = "DD_ENV"
72+
73+
env_env_var = os.environ.get(DD_ENV, None)
7374

7475
"""
7576
Usage:
@@ -132,6 +133,7 @@ def __init__(self, func):
132133
os.environ.get(DD_MERGE_XRAY_TRACES, "false").lower() == "true"
133134
)
134135
self.function_name = os.environ.get(AWS_LAMBDA_FUNCTION_NAME, "function")
136+
self.service = os.environ.get(DD_SERVICE, None)
135137
self.extractor_env = os.environ.get(DD_TRACE_EXTRACTOR, None)
136138
self.trace_extractor = None
137139
self.span = None
@@ -172,7 +174,7 @@ def __init__(self, func):
172174
logger.debug(f"Malformatted for env {DD_COLD_START_TRACE_SKIP_LIB}")
173175
self.response = None
174176
if profiling_env_var:
175-
self.prof = profiler.Profiler(env=env_env_var, service=service_env_var)
177+
self.prof = profiler.Profiler(env=env_env_var, service=self.service)
176178
if self.extractor_env:
177179
extractor_parts = self.extractor_env.rsplit(".", 1)
178180
if len(extractor_parts) == 2:
@@ -315,6 +317,9 @@ def _after(self, event, context):
315317
if status_code:
316318
self.inferred_span.set_tag("http.status_code", status_code)
317319

320+
if self.service:
321+
self.inferred_span.set_tag("peer.service", self.service)
322+
318323
if InferredSpanInfo.is_async(self.inferred_span) and self.span:
319324
self.inferred_span.finish(finish_time=self.span.start)
320325
else:

tests/integration/serverless.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ provider:
1212
DD_API_KEY: ${env:DD_API_KEY}
1313
DD_TRACE_MANAGED_SERVICES: true
1414
DD_COLD_START_TRACING: false
15+
DD_SERVICE: ${self:service}
1516
timeout: 15
1617
deploymentBucket:
1718
name: integration-tests-serververless-deployment-bucket

tests/integration/snapshots/logs/async-metrics_python310.log

Lines changed: 45 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "
6666
"_inferred_span.synchronicity": "sync",
6767
"_inferred_span.tag_source": "self",
6868
"http.status_code": "200",
69+
"peer.service": "integration-tests-python",
6970
"_dd.p.dm": "-0",
7071
"language": "python"
7172
},
@@ -114,7 +115,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "
114115
"trace_id": "XXXX",
115116
"parent_id": "XXXX",
116117
"span_id": "XXXX",
117-
"service": "aws.lambda",
118+
"service": "integration-tests-python",
118119
"resource": "requests.request",
119120
"name": "requests.request",
120121
"error": 0,
@@ -130,15 +131,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "
130131
"http.useragent": "python-requests/X.X.X"
131132
},
132133
"metrics": {
133-
"_dd.measured": 1
134+
"_dd.measured": 1,
135+
"_dd.top_level": 1
134136
},
135137
"type": "http"
136138
},
137139
{
138140
"trace_id": "XXXX",
139141
"parent_id": "XXXX",
140142
"span_id": "XXXX",
141-
"service": "aws.lambda",
143+
"service": "integration-tests-python",
142144
"resource": "requests.request",
143145
"name": "requests.request",
144146
"error": 0,
@@ -228,6 +230,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "
228230
"size_bytes": "26",
229231
"_inferred_span.synchronicity": "async",
230232
"_inferred_span.tag_source": "self",
233+
"peer.service": "integration-tests-python",
231234
"_dd.p.dm": "-0",
232235
"language": "python"
233236
},
@@ -272,7 +275,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "
272275
"trace_id": "XXXX",
273276
"parent_id": "XXXX",
274277
"span_id": "XXXX",
275-
"service": "aws.lambda",
278+
"service": "integration-tests-python",
276279
"resource": "requests.request",
277280
"name": "requests.request",
278281
"error": 0,
@@ -288,15 +291,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "
288291
"http.useragent": "python-requests/X.X.X"
289292
},
290293
"metrics": {
291-
"_dd.measured": 1
294+
"_dd.measured": 1,
295+
"_dd.top_level": 1
292296
},
293297
"type": "http"
294298
},
295299
{
296300
"trace_id": "XXXX",
297301
"parent_id": "XXXX",
298302
"span_id": "XXXX",
299-
"service": "aws.lambda",
303+
"service": "integration-tests-python",
300304
"resource": "requests.request",
301305
"name": "requests.request",
302306
"error": 0,
@@ -380,6 +384,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "
380384
"detail_type": "testdetail",
381385
"_inferred_span.synchronicity": "async",
382386
"_inferred_span.tag_source": "self",
387+
"peer.service": "integration-tests-python",
383388
"_dd.p.dm": "-0",
384389
"language": "python"
385390
},
@@ -423,7 +428,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "
423428
"trace_id": "XXXX",
424429
"parent_id": "XXXX",
425430
"span_id": "XXXX",
426-
"service": "aws.lambda",
431+
"service": "integration-tests-python",
427432
"resource": "requests.request",
428433
"name": "requests.request",
429434
"error": 0,
@@ -439,15 +444,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "
439444
"http.useragent": "python-requests/X.X.X"
440445
},
441446
"metrics": {
442-
"_dd.measured": 1
447+
"_dd.measured": 1,
448+
"_dd.top_level": 1
443449
},
444450
"type": "http"
445451
},
446452
{
447453
"trace_id": "XXXX",
448454
"parent_id": "XXXX",
449455
"span_id": "XXXX",
450-
"service": "aws.lambda",
456+
"service": "integration-tests-python",
451457
"resource": "requests.request",
452458
"name": "requests.request",
453459
"error": 0,
@@ -541,6 +547,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "
541547
"_inferred_span.synchronicity": "sync",
542548
"_inferred_span.tag_source": "self",
543549
"http.status_code": "200",
550+
"peer.service": "integration-tests-python",
544551
"_dd.p.dm": "-0",
545552
"language": "python"
546553
},
@@ -589,7 +596,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "
589596
"trace_id": "XXXX",
590597
"parent_id": "XXXX",
591598
"span_id": "XXXX",
592-
"service": "aws.lambda",
599+
"service": "integration-tests-python",
593600
"resource": "requests.request",
594601
"name": "requests.request",
595602
"error": 0,
@@ -605,15 +612,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "
605612
"http.useragent": "python-requests/X.X.X"
606613
},
607614
"metrics": {
608-
"_dd.measured": 1
615+
"_dd.measured": 1,
616+
"_dd.top_level": 1
609617
},
610618
"type": "http"
611619
},
612620
{
613621
"trace_id": "XXXX",
614622
"parent_id": "XXXX",
615623
"span_id": "XXXX",
616-
"service": "aws.lambda",
624+
"service": "integration-tests-python",
617625
"resource": "requests.request",
618626
"name": "requests.request",
619627
"error": 0,
@@ -703,6 +711,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "
703711
"partition_key": "XXXX",
704712
"_inferred_span.synchronicity": "async",
705713
"_inferred_span.tag_source": "self",
714+
"peer.service": "integration-tests-python",
706715
"_dd.p.dm": "-0",
707716
"language": "python"
708717
},
@@ -747,7 +756,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "
747756
"trace_id": "XXXX",
748757
"parent_id": "XXXX",
749758
"span_id": "XXXX",
750-
"service": "aws.lambda",
759+
"service": "integration-tests-python",
751760
"resource": "requests.request",
752761
"name": "requests.request",
753762
"error": 0,
@@ -763,15 +772,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "
763772
"http.useragent": "python-requests/X.X.X"
764773
},
765774
"metrics": {
766-
"_dd.measured": 1
775+
"_dd.measured": 1,
776+
"_dd.top_level": 1
767777
},
768778
"type": "http"
769779
},
770780
{
771781
"trace_id": "XXXX",
772782
"parent_id": "XXXX",
773783
"span_id": "XXXX",
774-
"service": "aws.lambda",
784+
"service": "integration-tests-python",
775785
"resource": "requests.request",
776786
"name": "requests.request",
777787
"error": 0,
@@ -858,6 +868,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "
858868
"object_etag": "XXXX",
859869
"_inferred_span.synchronicity": "async",
860870
"_inferred_span.tag_source": "self",
871+
"peer.service": "integration-tests-python",
861872
"_dd.p.dm": "-0",
862873
"language": "python"
863874
},
@@ -902,7 +913,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "
902913
"trace_id": "XXXX",
903914
"parent_id": "XXXX",
904915
"span_id": "XXXX",
905-
"service": "aws.lambda",
916+
"service": "integration-tests-python",
906917
"resource": "requests.request",
907918
"name": "requests.request",
908919
"error": 0,
@@ -918,15 +929,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "
918929
"http.useragent": "python-requests/X.X.X"
919930
},
920931
"metrics": {
921-
"_dd.measured": 1
932+
"_dd.measured": 1,
933+
"_dd.top_level": 1
922934
},
923935
"type": "http"
924936
},
925937
{
926938
"trace_id": "XXXX",
927939
"parent_id": "XXXX",
928940
"span_id": "XXXX",
929-
"service": "aws.lambda",
941+
"service": "integration-tests-python",
930942
"resource": "requests.request",
931943
"name": "requests.request",
932944
"error": 0,
@@ -1014,6 +1026,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "
10141026
"subject": "TestInvoke",
10151027
"_inferred_span.synchronicity": "async",
10161028
"_inferred_span.tag_source": "self",
1029+
"peer.service": "integration-tests-python",
10171030
"_dd.p.dm": "-0",
10181031
"language": "python"
10191032
},
@@ -1058,7 +1071,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "
10581071
"trace_id": "XXXX",
10591072
"parent_id": "XXXX",
10601073
"span_id": "XXXX",
1061-
"service": "aws.lambda",
1074+
"service": "integration-tests-python",
10621075
"resource": "requests.request",
10631076
"name": "requests.request",
10641077
"error": 0,
@@ -1074,15 +1087,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "
10741087
"http.useragent": "python-requests/X.X.X"
10751088
},
10761089
"metrics": {
1077-
"_dd.measured": 1
1090+
"_dd.measured": 1,
1091+
"_dd.top_level": 1
10781092
},
10791093
"type": "http"
10801094
},
10811095
{
10821096
"trace_id": "XXXX",
10831097
"parent_id": "XXXX",
10841098
"span_id": "XXXX",
1085-
"service": "aws.lambda",
1099+
"service": "integration-tests-python",
10861100
"resource": "requests.request",
10871101
"name": "requests.request",
10881102
"error": 0,
@@ -1169,6 +1183,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "
11691183
"sender_id": "AIDAIENQZJOLO23YVJ4VO",
11701184
"_inferred_span.synchronicity": "async",
11711185
"_inferred_span.tag_source": "self",
1186+
"peer.service": "integration-tests-python",
11721187
"_dd.p.dm": "-0",
11731188
"language": "python"
11741189
},
@@ -1213,7 +1228,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "
12131228
"trace_id": "XXXX",
12141229
"parent_id": "XXXX",
12151230
"span_id": "XXXX",
1216-
"service": "aws.lambda",
1231+
"service": "integration-tests-python",
12171232
"resource": "requests.request",
12181233
"name": "requests.request",
12191234
"error": 0,
@@ -1229,15 +1244,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "
12291244
"http.useragent": "python-requests/X.X.X"
12301245
},
12311246
"metrics": {
1232-
"_dd.measured": 1
1247+
"_dd.measured": 1,
1248+
"_dd.top_level": 1
12331249
},
12341250
"type": "http"
12351251
},
12361252
{
12371253
"trace_id": "XXXX",
12381254
"parent_id": "XXXX",
12391255
"span_id": "XXXX",
1240-
"service": "aws.lambda",
1256+
"service": "integration-tests-python",
12411257
"resource": "requests.request",
12421258
"name": "requests.request",
12431259
"error": 0,
@@ -1330,6 +1346,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "
13301346
"_inferred_span.synchronicity": "sync",
13311347
"_inferred_span.tag_source": "self",
13321348
"http.status_code": "200",
1349+
"peer.service": "integration-tests-python",
13331350
"_dd.p.dm": "-0",
13341351
"language": "python"
13351352
},
@@ -1376,7 +1393,7 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "
13761393
"trace_id": "XXXX",
13771394
"parent_id": "XXXX",
13781395
"span_id": "XXXX",
1379-
"service": "aws.lambda",
1396+
"service": "integration-tests-python",
13801397
"resource": "requests.request",
13811398
"name": "requests.request",
13821399
"error": 0,
@@ -1392,15 +1409,16 @@ HTTP GET https://www.datadoghq.com/ Headers: ["Accept-Encoding:gzip, deflate", "
13921409
"http.useragent": "python-requests/X.X.X"
13931410
},
13941411
"metrics": {
1395-
"_dd.measured": 1
1412+
"_dd.measured": 1,
1413+
"_dd.top_level": 1
13961414
},
13971415
"type": "http"
13981416
},
13991417
{
14001418
"trace_id": "XXXX",
14011419
"parent_id": "XXXX",
14021420
"span_id": "XXXX",
1403-
"service": "aws.lambda",
1421+
"service": "integration-tests-python",
14041422
"resource": "requests.request",
14051423
"name": "requests.request",
14061424
"error": 0,

0 commit comments

Comments
 (0)