ASR_BASE
Change-Id: Icf3719cc0afe3eeb3edc7fa80a2eb5199ca9dda1
diff --git a/external/subpack/utils/prometheus-node-exporter-ucode/files/base/netclass.uc b/external/subpack/utils/prometheus-node-exporter-ucode/files/base/netclass.uc
new file mode 100644
index 0000000..10b3cfd
--- /dev/null
+++ b/external/subpack/utils/prometheus-node-exporter-ucode/files/base/netclass.uc
@@ -0,0 +1,48 @@
+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);
+}