blob: 10b3cfd34391748d5a1e949507e86f9c311398bb [file] [log] [blame]
b.liue9582032025-04-17 19:18:16 +08001const root = "/sys/class/net/";
2const devices = fs.lsdir(root);
3
4if (length(devices) < 1)
5 return false;
6
7const m_info = gauge("node_network_info");
8const m_speed = gauge("node_network_speed_bytes");
9const metrics = {
10 addr_assign_type: gauge("node_network_address_assign_type"),
11 carrier: gauge("node_network_carrier"),
12 carrier_changes: counter("node_network_carrier_changes_total"),
13 carrier_down_count: counter("node_network_carrier_down_changes_total"),
14 carrier_up_count: counter("node_network_carrier_up_changes_total"),
15 dev_id: gauge("node_network_device_id"),
16 dormant: gauge("node_network_dormant"),
17 flags: gauge("node_network_flags"),
18 ifindex: gauge("node_network_iface_id"),
19 iflink: gauge("node_network_iface_link"),
20 link_mode: gauge("node_network_iface_link_mode"),
21 mtu: gauge("node_network_mtu_bytes"),
22 name_assign_type: gauge("node_network_name_assign_type"),
23 netdev_group: gauge("node_network_net_dev_group"),
24 type: gauge("node_network_protocol_type"),
25 tx_queue_len: gauge("node_network_transmit_queue_length"),
26};
27
28for (let device in devices) {
29 const devroot = root + device + "/";
30
31 m_info({
32 device,
33 address: oneline(devroot + "address"),
34 broadcast: oneline(devroot + "broadcast"),
35 duplex: oneline(devroot + "duplex"),
36 operstate: oneline(devroot + "operstate"),
37 ifalias: oneline(devroot + "ifalias"),
38 }, 1);
39
40 for (let m in metrics) {
41 let line = oneline(devroot + m);
42 metrics[m]({ device }, line);
43 }
44
45 const speed = int(oneline(devroot + "speed"));
46 if (speed > 0)
47 m_speed({ device }, speed * 1000 * 1000 / 8);
48}