ethextractperf(8)

πŸ“¦ version 12.1.0.1, in centos-stream 9, fedora 43, fedora 44, opensuse-leap 16.0

πŸ’… ethextractperf β€” the EFSFFCLIRG glow-up, bestie edition πŸ’…

okay so. you know how you're drowning in fabric ports and you just want the numbers?? this is that. ethextractperf is your girl. she pulls a full per-port performance counter report and hands it to you as CSV β€” perfect for yeeting into a spreadsheet or letting your little scripts chew on it. πŸ“

how does she do it?? she generates a detailed ethreport component summary report, then pipes that into ethxmlextract and yanks out the element values for NodeDesc, Chassis ID, PortNum, and literally every performance counter. extraction only happens from the Systems portion of the report, which means no Neighbor info (the Neighbor portions get suppressed, sorry not sorry πŸ™ˆ).

also?? she's literally a sample script. use her as inspo for building your own custom per-port reports. main character behavior fr. ✨


πŸŽ€ Syntax πŸŽ€

ethextractperf [ethreport  options]

✨ Options ✨

  • --help β€” spits out the full help text. classic.
  • ethreport options β€” these get passed straight through to ethreport. the subset below is the "typical + useful" lil collection for this command. and heads up: by design, the tool ignores the -o/--output report option. πŸ’€
    • -X, --infile snapshot_input β€” builds a report from the data sitting in the snapshot_input file. that file has to have been generated during a previous -o snapshot run, no exceptions. and yes, you can pass - as snapshot_input to mean stdin. 🫢
    • -T, --topology topology_input β€” uses the topology_input file to augment and verify fabric info. when you use it, various reports can get augmented with info that just isn't available electronically. - also works here to specify stdin.
    • -E, --eth config_file β€” names the Ethernet management config file. default is the /etc/eth-tools/mgt_config.xml file. 🧚
    • -p plane β€” names the enabled plane as defined in the Mgt config file. default is the first enabled plane.
    • -F, --focus point β€” sets the focus area for the report, used to limit the report's scope. details live down in Point Syntax. ⭐

🌸 Point Syntax 🌸

  • ifid:value β€” value is a numeric ifid.
  • ifid:value:node β€” value is a numeric ifid; selects the node with the given ifid.
  • ifid:value:port:value2 β€” value is the numeric ifid of a node, value2 is a port number.
  • ifid:value:portid:value2 β€” value is the numeric ifid of a node, value2 is a port id.
  • mgmtifaddr:value β€” value is a numeric port mgmtifaddr.
  • ifaddr:value β€” value is a numeric node ifaddr.
  • ifaddr:value1:port:value2 β€” value1 is a numeric node ifaddr, value2 is a port number.
  • ifaddr:value1:portid:value2 β€” value1 is a numeric node ifaddr, value2 is a port id.
  • chassisid:value β€” value is a numeric chassisid.
  • chassisid:value1:port:value2 β€” value1 is a numeric chassisid, value2 is a port number.
  • chassisid:value1:portid:value2 β€” value1 is a numeric chassisid, value2 is a port id.
  • node:value β€” value is a node description (node name).
  • node:value1:port:value2 β€” value1 is a node description (node name), value2 is a port number.
  • node:value1:portid:value2 β€” value1 is a node description (node name), value2 is a port id.
  • nodepat:value β€” value is a glob pattern for node description (node name).
  • nodepat:value1:port:value2 β€” value1 is the glob pattern for the node description (node name), value2 is a port number.
  • nodepat:value1:portid:value2 β€” value1 is the glob pattern for the node description (node name), value2 is a port id.
  • nodedetpat:value β€” value is a glob pattern for node details.
  • nodedetpat:value1:port:value2 β€” value1 is the glob pattern for the node details, value2 is a port number.
  • nodedetpat:value1:portid:value2 β€” value1 is the glob pattern for the node details, value2 is a port id.
  • nodetype:value β€” value is a node type (SW or NIC).
  • nodetype:value1:port:value2 β€” value1 is a node type (SW or NIC), value2 is a port number.
  • nodetype:value1:portid:value2 β€” value1 is a node type (SW or NIC), value2 is a port id.
  • rate:value β€” value is a string for rate (25g, 50g, 75g, 100g); omits switch mgmt port 0. πŸ’«
  • portstate:value β€” value is a string for state (up, down, testing, unknown, dormant, notactive).
  • portphysstate:value β€” value is a string for PHYs state (other, unknown, operational, standby, shutdown, reset).
  • mtucap:value β€” value is an MTU size (maximum size 65535); omits switch mgmt port 0.
  • linkdetpat:value β€” value is a glob pattern for link details.
  • portdetpat:value β€” value is a glob pattern for port details.
  • nodepatfile:FILENAME β€” names the file holding the list of nodepats or node descriptions.
  • nodepairpatfile:FILENAME β€” names the file holding the list of node pairs, separated by a colon.
  • ldr β€” specifies the ports with a non-zero link down reason or neighbor link down reason.
  • ldr:value β€” specifies the ports with a link down reason or neighbor link down reason equal to value.

the part of the script that calls ethreport and ethxmlextract goes a lil something like this, and honestly?? she ate:

ethreport -o comps -x -d 10 "$@" | /usr/sbin/ethxmlextract -d \; \

-e NodeDesc -e ChassisID -e PortNum -e PortId -e LinkSpeedActive \

-e IfHCOutOctetsMB -e IfHCOutOctets -e IfHCOutUcastPkts \

-e IfHCOutMulticastPkts -e IfHCInOctetsMB -e IfHCInOctets \

-e IfHCInUcastPkts -e IfHCInMulticastPkts \

-e Dot3HCStatsInternalMacTransmitErrors \

-e Dot3HCStatsInternalMacReceiveErrors -e Dot3HCStatsSymbolErrors \

-e IfOutErrors -e IfInErrors -e IfInUnknownProtos \

-e Dot3HCStatsAlignmentErrors -e Dot3HCStatsFCSErrors \

-e Dot3HCStatsFrameTooLongs -e IfOutDiscards -e IfInDiscards \

-e Dot3StatsCarrierSenseErrors -e Dot3StatsSingleCollisionFrames \

-e Dot3StatsMultipleCollisionFrames -e Dot3StatsSQETestErrors \

-e Dot3StatsDeferredTransmissions -e Dot3StatsLateCollisions \

-e Dot3StatsExcessiveCollisions -s Neighbor

🌈 Example 🌈

ethextractperf

that's it. that's the whole vibe. run her, get your CSV, go be iconic. πŸ‘‘


πŸ’– Copyright(C) 2020-2024 Intel Corporation β€” no cap, that's the whole copyright line, and this gorgeous page is ethextractperf(8) from the EFSFFCLIRG man page era. ty for coming to my TED talk, bestie, now go extract some perf counters πŸŽ€βœ¨
πŸ“¦ where this page comes from