| const root = "/sys/class/net/"; |
| const devices = fs.lsdir(root); |
| |
| if (length(devices) < 1) |
| return false; |
| |
| const m_info = gauge("node_network_info"); |
| const m_speed = gauge("node_network_speed_bytes"); |
| const metrics = { |
| addr_assign_type: gauge("node_network_address_assign_type"), |
| carrier: gauge("node_network_carrier"), |
| carrier_changes: counter("node_network_carrier_changes_total"), |
| carrier_down_count: counter("node_network_carrier_down_changes_total"), |
| carrier_up_count: counter("node_network_carrier_up_changes_total"), |
| dev_id: gauge("node_network_device_id"), |
| dormant: gauge("node_network_dormant"), |
| flags: gauge("node_network_flags"), |
| ifindex: gauge("node_network_iface_id"), |
| iflink: gauge("node_network_iface_link"), |
| link_mode: gauge("node_network_iface_link_mode"), |
| mtu: gauge("node_network_mtu_bytes"), |
| name_assign_type: gauge("node_network_name_assign_type"), |
| netdev_group: gauge("node_network_net_dev_group"), |
| type: gauge("node_network_protocol_type"), |
| tx_queue_len: gauge("node_network_transmit_queue_length"), |
| }; |
| |
| for (let device in devices) { |
| const devroot = root + device + "/"; |
| |
| m_info({ |
| device, |
| address: oneline(devroot + "address"), |
| broadcast: oneline(devroot + "broadcast"), |
| duplex: oneline(devroot + "duplex"), |
| operstate: oneline(devroot + "operstate"), |
| ifalias: oneline(devroot + "ifalias"), |
| }, 1); |
| |
| for (let m in metrics) { |
| let line = oneline(devroot + m); |
| metrics[m]({ device }, line); |
| } |
| |
| const speed = int(oneline(devroot + "speed")); |
| if (speed > 0) |
| m_speed({ device }, speed * 1000 * 1000 / 8); |
| } |