1
2import px
3
4def network_traffic_per_pod(start_time: str):
5
6
7 df = px.DataFrame(table='conn_stats', start_time=start_time)
8
9
10 df.pod = df.ctx['pod']
11 df.service = df.ctx['service']
12
13
14 df = df.groupby(['service', 'pod', 'upid']).agg(
15
16
17 bytes_sent_min=('bytes_sent', px.min),
18 bytes_sent_max=('bytes_sent', px.max),
19 bytes_recv_min=('bytes_recv', px.min),
20 bytes_recv_max=('bytes_recv', px.max),
21 )
22
23
24 df.bytes_sent = df.bytes_sent_max - df.bytes_sent_min
25 df.bytes_recv = df.bytes_recv_max - df.bytes_recv_min
26
27
28
29
30 df = df.groupby(['service', 'pod']).agg(
31 bytes_sent=('bytes_sent', px.sum),
32 bytes_recv=('bytes_recv', px.sum),
33 )
34
35
36 df = df[df.service != '']
37
38 return df
39
40def network_traffic_timeseries(start_time: str):
41
42
43 df = px.DataFrame(table='conn_stats', start_time=start_time)
44
45
46 df.pod = df.ctx['pod']
47
48
49 ns_per_s = 1000 * 1000 * 1000
50 window_ns = px.DurationNanos(10 * ns_per_s)
51 df.timestamp = px.bin(df.time_, window_ns)
52
53
54 df = df.groupby(['pod', 'upid', 'timestamp']).agg(
55
56
57 bytes_sent_min=('bytes_sent', px.min),
58 bytes_sent_max=('bytes_sent', px.max),
59 bytes_recv_min=('bytes_recv', px.min),
60 bytes_recv_max=('bytes_recv', px.max),
61 )
62
63
64 df.bytes_sent = df.bytes_sent_max - df.bytes_sent_min
65 df.bytes_recv = df.bytes_recv_max - df.bytes_recv_min
66
67
68
69
70 df = df.groupby(['pod', 'timestamp']).agg(
71 bytes_sent=('bytes_sent', px.sum),
72 bytes_recv=('bytes_recv', px.sum),
73 )
74
75
76 df.time_ = df.timestamp
77 df = df.drop('timestamp')
78
79 return d
80
81def pod_connections(start_time: str):
82
83
84 df = px.DataFrame(table='conn_stats', start_time=start_time)
85
86
87 df.pod = df.ctx['pod']
88
89
90
91 df = df.groupby(['pod', 'upid', 'remote_addr', 'trace_role']).agg(
92
93
94 bytes_sent_min=('bytes_sent', px.min),
95 bytes_sent_max=('bytes_sent', px.max),
96 bytes_recv_min=('bytes_recv', px.min),
97 bytes_recv_max=('bytes_recv', px.max),
98 )
99
100
101 df.bytes_sent = df.bytes_sent_max - df.bytes_sent_min
102 df.bytes_recv = df.bytes_recv_max - df.bytes_recv_min
103
104
105
106
107
108 df = df.groupby(['pod', 'remote_addr', 'trace_role']).agg(
109 bytes_sent=('bytes_sent', px.sum),
110 bytes_recv=('bytes_recv', px.sum),
111 )
112
113
114 df.remote_pod = px.pod_id_to_pod_name(px.ip_to_pod_id(df.remote_addr))
115
116
117
118
119
120
121
122
123 df.is_server_side_tracing = df.trace_role == 2
124 df.responder_pod = px.select(df.is_server_side_tracing, df.pod, df.remote_pod)
125 df.requestor_pod = px.select(df.is_server_side_tracing, df.remote_pod, df.pod)
126
127 return dfs