8000 Add TraceConnection for traces to API · DataDog/datadog-lambda-python@cda0c0e · GitHub
[go: up one dir, main page]

Skip to content

Commit cda0c0e

Browse files
committed
Add TraceConnection for traces to API
1 parent f905c14 commit cda0c0e

File tree

1 file changed

+25
-6
lines changed

1 file changed

+25
-6
lines changed

datadog_lambda/trace_intake.py

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,32 @@
11
from datadog_lambda.pb.span_pb2 import Span
22
from datadog_lambda.pb.trace_pb2 import APITrace
33
from datadog_lambda.pb.trace_payload_pb2 import TracePayload
4+
from datadog_lambda import __version__
5+
import urllib2
46

57

68
class TraceConnection:
79
def __init__(self, rootURL, apiKey):
810
self._traceURL = "https://trace.agent.{}/api/v0.2/traces".format(rootURL)
11+
self._apiKey = apiKey
912

10-
def send_traces(traces):
11-
pass
12-
13-
def convert_trace(traces):
14-
pass
13+
def send_traces(self, spans):
14+
trace_payload = convert_trace_to_protobuf_payload(spans)
15+
data = trace_payload.SerializeToString()
16+
user_agent = "aws_lambda/{}/1 (http://localhost)".format(__version__)
17+
cont_len = len(data)
18+
headers = {
19+
"Content-Type": "application/x-protobuf",
20+
"Content-Encoding": "identity",
21+
"DD-Api-Key": self._apiKey,
22+
"User-Agent": user_agent,
23+
"Content-Length": cont_len,
24+
}
25+
try:
26+
request = urllib2.Request(self._traceURL, data, headers)
27+
response = urllib2.urlopen(request)
28+
except urllib2.HTTPError as e:
29+
print("request to {} failed with error {}".format(self._traceURL, e))
1530

1631

1732
def convert_trace_to_protobuf_payload(trace):
@@ -25,14 +40,18 @@ def convert_trace_to_protobuf_payload(trace):
2540
else:
2641
span_groups[trace_id] = span_group
2742

43+
parent_id = None
44+
if parent_id in span:
45+
parent_id = int(span["parent_id"])
46+
2847
span_group.append(
2948
Span(
3049
service=span["service"],
3150
name=span["name"],
3251
resource=span["resource"],
3352
traceID=trace_id,
3453
spanID=int(span["span_id"]),
35-
parentID=int(span["parent_id"]),
54+
parentID=parent_id,
3655
start=span["start"],
3756
duration=span["duration"],
3857
error=span["error"],

0 commit comments

Comments
 (0)
0