1*d94ebd62SRobin Jarry# SPDX-License-Identifier: BSD-3-Clause 2*d94ebd62SRobin Jarry# Copyright (c) 2023 Robin Jarry 3*d94ebd62SRobin Jarry 4*d94ebd62SRobin JarryRX_PACKETS = "rx_packets" 5*d94ebd62SRobin JarryRX_BYTES = "rx_bytes" 6*d94ebd62SRobin JarryRX_MISSED = "rx_missed" 7*d94ebd62SRobin JarryRX_NOMBUF = "rx_nombuf" 8*d94ebd62SRobin JarryRX_ERRORS = "rx_errors" 9*d94ebd62SRobin JarryTX_PACKETS = "tx_packets" 10*d94ebd62SRobin JarryTX_BYTES = "tx_bytes" 11*d94ebd62SRobin JarryTX_ERRORS = "tx_errors" 12*d94ebd62SRobin Jarry 13*d94ebd62SRobin Jarry 14*d94ebd62SRobin Jarrydef info() -> "dict[Name, tuple[Description, Type]]": 15*d94ebd62SRobin Jarry return { 16*d94ebd62SRobin Jarry RX_PACKETS: ("Number of successfully received packets.", "counter"), 17*d94ebd62SRobin Jarry RX_BYTES: ("Number of successfully received bytes.", "counter"), 18*d94ebd62SRobin Jarry RX_MISSED: ( 19*d94ebd62SRobin Jarry "Number of packets dropped by the HW because Rx queues are full.", 20*d94ebd62SRobin Jarry "counter", 21*d94ebd62SRobin Jarry ), 22*d94ebd62SRobin Jarry RX_NOMBUF: ("Number of Rx mbuf allocation failures.", "counter"), 23*d94ebd62SRobin Jarry RX_ERRORS: ("Number of erroneous received packets.", "counter"), 24*d94ebd62SRobin Jarry TX_PACKETS: ("Number of successfully transmitted packets.", "counter"), 25*d94ebd62SRobin Jarry TX_BYTES: ("Number of successfully transmitted bytes.", "counter"), 26*d94ebd62SRobin Jarry TX_ERRORS: ("Number of packet transmission failures.", "counter"), 27*d94ebd62SRobin Jarry } 28*d94ebd62SRobin Jarry 29*d94ebd62SRobin Jarry 30*d94ebd62SRobin Jarrydef metrics(sock: "TelemetrySocket") -> "list[tuple[Name, Value, Labels]]": 31*d94ebd62SRobin Jarry out = [] 32*d94ebd62SRobin Jarry for port_id in sock.cmd("/ethdev/list"): 33*d94ebd62SRobin Jarry port = sock.cmd("/ethdev/info", port_id) 34*d94ebd62SRobin Jarry stats = sock.cmd("/ethdev/stats", port_id) 35*d94ebd62SRobin Jarry labels = {"port": port["name"]} 36*d94ebd62SRobin Jarry out += [ 37*d94ebd62SRobin Jarry (RX_PACKETS, stats["ipackets"], labels), 38*d94ebd62SRobin Jarry (RX_PACKETS, stats["ipackets"], labels), 39*d94ebd62SRobin Jarry (RX_BYTES, stats["ibytes"], labels), 40*d94ebd62SRobin Jarry (RX_MISSED, stats["imissed"], labels), 41*d94ebd62SRobin Jarry (RX_NOMBUF, stats["rx_nombuf"], labels), 42*d94ebd62SRobin Jarry (RX_ERRORS, stats["ierrors"], labels), 43*d94ebd62SRobin Jarry (TX_PACKETS, stats["opackets"], labels), 44*d94ebd62SRobin Jarry (TX_BYTES, stats["obytes"], labels), 45*d94ebd62SRobin Jarry (TX_ERRORS, stats["oerrors"], labels), 46*d94ebd62SRobin Jarry ] 47*d94ebd62SRobin Jarry return out 48