Skip to content

Commit 21ab13e

Browse files
liuchaoxiaochaoren1
liuchao
authored andcommitted
Add trace_id fast filter
1 parent 3b4e682 commit 21ab13e

File tree

2 files changed

+49
-31
lines changed

2 files changed

+49
-31
lines changed

app/app/application/l7_flow_tracing.py

Lines changed: 25 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ async def query(self):
160160
return self.status, rst, self.failed_regions
161161

162162
async def get_id_by_trace_id(self, trace_id, time_filter):
163-
sql = f"SELECT toString(_id) AS `_id` FROM l7_flow_log WHERE trace_id='{trace_id}' AND {time_filter} limit 1"
163+
sql = f"SELECT toString(_id) AS `_id` FROM l7_flow_log WHERE FastFilter(trace_id)='{trace_id}' AND {time_filter} limit 1"
164164
resp = await self.query_ck(sql)
165165
self.status.append("Query _id", resp)
166166
data = resp["data"]
@@ -217,8 +217,11 @@ async def trace_l7_flow(self,
217217
filters = []
218218
new_trace_id_flows = pd.DataFrame()
219219
new_trace_id_filters = []
220+
new_trace_ids = set()
220221
# 主动注入的追踪信息
221222
if not allow_multiple_trace_ids_in_tracing_result:
223+
if trace_id:
224+
new_trace_ids.add(trace_id)
222225
delete_index = []
223226
deleted_trace_ids = set()
224227
for index in range(len(dataframe_flowmetas.index)):
@@ -230,15 +233,13 @@ async def trace_l7_flow(self,
230233
deleted_trace_ids.add(flow_trace_id)
231234
if not trace_id:
232235
trace_id = flow_trace_id
236+
new_trace_ids.add(trace_id)
233237
if trace_id and not query_simple_trace_id:
234-
new_trace_id_filters.append(f"trace_id='{trace_id}'")
238+
new_trace_id_filters.append(
239+
f"FastFilter(trace_id)='{trace_id}'")
235240
# Trace id query separately
236241
new_trace_id_flows = await self.query_flowmetas(
237242
time_filter, ' OR '.join(new_trace_id_filters))
238-
if type(new_trace_id_flows) != DataFrame:
239-
break
240-
new_trace_id_flows.rename(columns={'_id_str': '_id'},
241-
inplace=True)
242243
query_simple_trace_id = True
243244
if delete_index:
244245
dataframe_flowmetas = dataframe_flowmetas.drop(
@@ -266,7 +267,6 @@ async def trace_l7_flow(self,
266267
ignore_index=True).drop_duplicates(
267268
["_id"]).reset_index(drop=True)
268269
else:
269-
new_trace_ids = set()
270270
third_app_spans = []
271271
for index in range(len(dataframe_flowmetas.index)):
272272
if dataframe_flowmetas['trace_id'][index] in [0, '']:
@@ -299,18 +299,27 @@ async def trace_l7_flow(self,
299299
new_trace_ids -= trace_ids
300300
trace_ids |= new_trace_ids
301301
if new_trace_ids:
302-
trace_ids_set = set([nxrid[1] for nxrid in new_trace_ids])
303-
new_trace_id_filters.append('(' + ' OR '.join([
304-
"trace_id='{tid}'".format(tid=tid)
305-
for tid in trace_ids_set
306-
]) + ')')
302+
new_trace_id_filters.append(
303+
f"FastFilter(trace_id) IN ({','.join(new_trace_ids)})")
307304
# Trace id query separately
308305
new_trace_id_flows = await self.query_flowmetas(
309306
time_filter, ' OR '.join(new_trace_id_filters))
310-
if type(new_trace_id_flows) != DataFrame:
311-
break
312-
new_trace_id_flows.rename(columns={'_id_str': '_id'},
313-
inplace=True)
307+
308+
if type(new_trace_id_flows) != DataFrame:
309+
break
310+
# Delete different trace id data
311+
new_trace_id_flow_delete_index = []
312+
deleted_trace_ids = set()
313+
for index in range(len(new_trace_id_flows.index)):
314+
flow_trace_id = new_trace_id_flows['trace_id'][index]
315+
if flow_trace_id not in new_trace_ids:
316+
new_trace_id_flow_delete_index.append(index)
317+
deleted_trace_ids.add(flow_trace_id)
318+
if new_trace_id_flow_delete_index:
319+
new_trace_id_flows = new_trace_id_flows.drop(
320+
new_trace_id_flow_delete_index)
321+
new_trace_id_flows = new_trace_id_flows.reset_index(drop=True)
322+
new_trace_id_flows.rename(columns={'_id_str': '_id'}, inplace=True)
314323

315324
# 新的网络追踪信息
316325
new_network_metas = set()

app/app/application/tracing_completion.py

Lines changed: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -100,8 +100,11 @@ async def trace_l7_flow(self,
100100
filters = []
101101
new_trace_id_flows = pd.DataFrame()
102102
new_trace_id_filters = []
103+
new_trace_ids = set()
103104
# 主动注入的追踪信息
104105
if not allow_multiple_trace_ids_in_tracing_result and not trace_id:
106+
if trace_id:
107+
new_trace_ids.add(trace_id)
105108
delete_index = []
106109
deleted_trace_ids = set()
107110
for index in range(len(dataframe_flowmetas.index)):
@@ -113,15 +116,13 @@ async def trace_l7_flow(self,
113116
deleted_trace_ids.add(flow_trace_id)
114117
if not trace_id:
115118
trace_id = flow_trace_id
119+
new_trace_ids.add(trace_id)
116120
if trace_id and not query_simple_trace_id:
117-
new_trace_id_filters.append(f"trace_id='{trace_id}'")
121+
new_trace_id_filters.append(
122+
f"FastFilter(trace_id)='{trace_id}'")
118123
# Trace id query separately
119124
new_trace_id_flows = await self.query_flowmetas(
120125
time_filter, ' OR '.join(new_trace_id_filters))
121-
if type(new_trace_id_flows) != DataFrame:
122-
break
123-
new_trace_id_flows.rename(columns={'_id_str': '_id'},
124-
inplace=True)
125126
query_simple_trace_id = True
126127
if delete_index:
127128
dataframe_flowmetas = dataframe_flowmetas.drop(
@@ -130,7 +131,6 @@ async def trace_l7_flow(self,
130131
drop=True)
131132
log.debug(f"删除的trace id为:{deleted_trace_ids}")
132133
else:
133-
new_trace_ids = set()
134134
for index in range(len(dataframe_flowmetas.index)):
135135
if dataframe_flowmetas['trace_id'][index] in [0, '']:
136136
continue
@@ -139,18 +139,27 @@ async def trace_l7_flow(self,
139139
new_trace_ids -= trace_ids
140140
trace_ids |= new_trace_ids
141141
if new_trace_ids:
142-
trace_ids_set = set([nxrid[1] for nxrid in new_trace_ids])
143-
new_trace_id_filters.append('(' + ' OR '.join([
144-
"trace_id='{tid}'".format(tid=tid)
145-
for tid in trace_ids_set
146-
]) + ')')
142+
new_trace_id_filters.append(
143+
f"FastFilter(trace_id) IN ({','.join(new_trace_ids)})")
147144
# Trace id query separately
148145
new_trace_id_flows = await self.query_flowmetas(
149146
time_filter, ' OR '.join(new_trace_id_filters))
150-
if type(new_trace_id_flows) != DataFrame:
151-
break
152-
new_trace_id_flows.rename(columns={'_id_str': '_id'},
153-
inplace=True)
147+
148+
if type(new_trace_id_flows) != DataFrame:
149+
break
150+
# Delete different trace id data
151+
new_trace_id_flow_delete_index = []
152+
deleted_trace_ids = set()
153+
for index in range(len(new_trace_id_flows.index)):
154+
flow_trace_id = new_trace_id_flows['trace_id'][index]
155+
if flow_trace_id not in new_trace_ids:
156+
new_trace_id_flow_delete_index.append(index)
157+
deleted_trace_ids.add(flow_trace_id)
158+
if new_trace_id_flow_delete_index:
159+
new_trace_id_flows = new_trace_id_flows.drop(
160+
new_trace_id_flow_delete_index)
161+
new_trace_id_flows = new_trace_id_flows.reset_index(drop=True)
162+
new_trace_id_flows.rename(columns={'_id_str': '_id'}, inplace=True)
154163

155164
# 新的网络追踪信息
156165
new_network_metas = set()

0 commit comments

Comments
 (0)