blob: e42924bb97112c001816d474dc5643ed78566156 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
let f = fs.open("/proc/net/nf_conntrack");
if (!f)
return false;
let nat = {};
let nat_metric = gauge("node_nat_traffic");
let line;
while ((line = nextline(f)) != null) {
const fields = wsplit(line);
let src, dst;
let bytes = 0;
for (let field in fields) {
if (src == null && substr(field, 0, 4) == "src=")
src = substr(field, 4);
else if (dst == null && substr(field, 0, 4) == "dst=")
dst = substr(field, 4);
else if (substr(field, 0, 6) == "bytes=")
bytes += +substr(field, 6);
}
if (src == null || dst == null)
continue;
if (nat[src] == null)
nat[src] = {};
nat[src][dst] = (nat[src][dst] || 0) + bytes;
}
f.close();
for (let src in nat)
for (let dst in nat[src])
nat_metric({ src, dst }, nat[src][dst]);
|