xref: /dpdk/usertools/telemetry-endpoints/counters.py (revision d94ebd627a86dfbc0ccf8d7d3802196c55d826cf)
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