Renecto commited on
Commit
3d35409
·
verified ·
1 Parent(s): 9059e58

Create util/trace.py

Browse files
Files changed (1) hide show
  1. util/trace.py +37 -0
util/trace.py ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ from google.cloud import trace_v2
3
+ from google.oauth2 import service_account
4
+ import uuid
5
+
6
+ with open(os.getenv("GOOGLE_APPLICATION_CREDENTIALS"), "w") as f:
7
+ f.write(os.getenv("gcp_service_json"))
8
+ f.close()
9
+
10
+ def initialize_trace_client():
11
+ credentials = service_account.Credentials.from_service_account_file(os.getenv("GOOGLE_APPLICATION_CREDENTIALS"))
12
+ client = trace_v2.TraceServiceClient(credentials=credentials)
13
+ return client, f"projects/{os.getenv("PROJECT")}"
14
+
15
+
16
+ from google.protobuf.timestamp_pb2 import Timestamp
17
+ from datetime import datetime
18
+
19
+ def create_span(client, parent_span_id=None, span_display_name="Default Span"):
20
+ trace_id = uuid.uuid4().hex
21
+ span_id = uuid.uuid4().hex[:16]
22
+ span_name = f"{os.getenv("PROJECT")}/traces/{trace_id}/spans/{span_id}"
23
+ now = datetime.utcnow()
24
+ timestamp = Timestamp()
25
+ timestamp.FromDatetime(now)
26
+
27
+ span = trace_v2.Span(
28
+ name=span_name,
29
+ span_id=span_id,
30
+ parent_span_id=parent_span_id,
31
+ display_name=trace_v2.types.TruncatableString(value=span_display_name),
32
+ start_time=timestamp,
33
+ end_time=timestamp
34
+ )
35
+
36
+ client.batch_write_spans(name=os.getenv("PROJECT"), spans=[span])
37
+ return span_name # 返り値としてスパンの名前を返す