b.liu | e958203 | 2025-04-17 19:18:16 +0800 | [diff] [blame^] | 1 | const root = "/sys/class/net/"; |
| 2 | const devices = fs.lsdir(root); |
| 3 | |
| 4 | if (length(devices) < 1) |
| 5 | return false; |
| 6 | |
| 7 | const m_info = gauge("node_network_info"); |
| 8 | const m_speed = gauge("node_network_speed_bytes"); |
| 9 | const 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 | |
| 28 | for (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 | } |