opaextractbadlinks(8)

πŸ’– NAME πŸ’–

opaextractbadlinks β€” okay bestie, this one spits out a CSV file listing all (or some!) of the links that blow past your opareport -o error thresholds. It's basically a glow-up front end for the opareport tool. And the best part? You can yeet that output straight into a spreadsheet or let other scripts parse it. obsessed πŸ’…


✨ Syntax ✨

opaextractbadlinks [opareport options]

πŸŽ€ Options πŸŽ€

  • --help β€” gives you the full help text, no cap. 🫢

opareport options

So these bad boys get passed straight through to opareport. The list below is the subset that's considered typical and useful for this command. And heads up β€” by design, this tool ignores the -o/--output report option. It's giving "we don't do that here". πŸ’€

  • -h/--hfi hfi β€” tells it which HFI, numbered 1..n. If you pass 0, that means the -p port is a system-wide port number. Default is 0.
  • -p/--port port β€” picks the port, numbered 1..n. Pass 0 and you get the first active port. Default is 0.
  • -X/--infile snapshot_input β€” builds a report from the data in the snapshot_input file. That file must have been generated during a previous -o snapshot run. When you use this, the -s, -i, -C, and -a options get ignored. And yes, you can use '-' as snapshot_input to mean stdin. πŸ¦‹
  • -T/--topology topology_input β€” uses the topology_input file to augment and verify fabric info. When it's used, various reports can get augmented with stuff that isn't available electronically (cable labels, for example). '-' also works here to specify stdin.
  • -i/--interval seconds β€” grabs performance stats over interval seconds. It clears all the stats, waits interval seconds, then generates the report. Implies -s.
  • -b / --begin date_time β€” pulls past performance stats over an interval starting at date_time. Implies -s. date_time can be a time entered as HH:MM[:SS], or a date as mm/dd/YYYY, dd.mm.YYYY, YYYY-mm-dd, or a date followed by a time β€” for example, "2016-07-04 14:40". Relative times get read as "x [second|minute|hour|day](s) ago.
  • -e / --end date_time β€” pulls past performance stats over an interval ending at date_time. Implies -s.

date_time can be a time entered as HH:MM[:SS], or a date as mm/dd/YYYY, dd.mm.YYYY, YYYY-mm-dd, or a date followed by a time β€” for example, "2016-07-04 14:40". Relative times get read as "x [second|minute|hour|day](s) ago.

  • -C/--clear β€” clears performance stats for all ports. Only stats with error thresholds get cleared, jsyk. And the clear happens after the report is generated.
  • -a/--clearall β€” nukes all performance stats for all ports. πŸ’€
  • -M/--pmadirect β€” accesses performance stats using direct PMA.
  • -A/--allports β€” gets PortInfo for down switch ports, using direct SMA to get that data. If you use it with -M, it also grabs PMA stats for down switch ports. Iconic multitasking.
  • -c/--config file β€” picks the error thresholds config file. Default is the /etc/opa/opamon.conf file.
  • -L/--limit β€” limits the operation to the exact specified focus with -F, for port error counters check (-o errors) and port counters clear (-C or -i). Normally, the neighbor of each selected port gets checked/cleared too. Doesn't affect other reports, periodt.
  • -F/--focus point β€” picks the focus area for the report. Used for all reports except route, to limit the scope of the report. Peep Point Syntax below for the deets. πŸ‘‘

🌸 -h and -p selections 🌸

The -h and -p options let you do a whole variety of selections, bestie:

  • -h 0 β€” first active port in system (Default).
  • -h 0 -p 0 β€” first active port in system.
  • -h x β€” first active port on HFI x.
  • -h x -p 0 β€” first active port on HFI x.
  • -h 0 -p y β€” port y within system (no matter which ports are active).
  • -h x -p y β€” HFI x, port y.

🧚 Point Syntax 🧚

  • gid:value β€” value is the numeric port GID of the form: subnet:guid.
  • lid:value β€” value is the numeric LID.
  • lid:value:node β€” value is the numeric LID; selects the entire node with the given LID.
  • lid:value:port:value2 β€” value is the numeric LID of the node, value2 is the port number.
  • portguid:value β€” value is the numeric port GUID.
  • nodeguid:value β€” value is the numeric node GUID.
  • nodeguid:value1:port:value2 β€” value1 is the numeric node GUID, value2 is the port number.
  • iocguid:value β€” value is the numeric IOC GUID.
  • iocguid:value1:port:value2 β€” value1 is the numeric IOC GUID, value2 is the port number.
  • systemguid:value β€” value is the numeric system image GUID.
  • systemguid:value1:port:value2 β€” value1 is the numeric system image GUID, value2 is the port number.
  • ioc:value β€” value is the IOC Profile ID String (IOC Name).
  • ioc:value1:port:value2 β€” value1 is the IOC Profile ID String (IOC Name), value2 is the port number.
  • iocpat:value β€” value is a glob pattern for the IOC Profile ID String (IOC Name).
  • iocpat:value1:port:value2 β€” value1 is a glob pattern for the IOC Profile ID String (IOC Name), value2 is the port number.
  • ioctype:value β€” value is the IOC type (SRP or OTHER).
  • ioctype:value1:port:value2 β€” value1 is the IOC type (SRP or OTHER); value2 is the port number.
  • node:value β€” value is the node description (node name).
  • node:value1:port:value2 β€” value1 is the node description (node name), value2 is the port number.
  • nodepat:value β€” value is a glob pattern for the node description (node name).
  • nodepat:value1:port:value2 β€” value1 is the glob pattern for the node description (node name), value2 is the port number.
  • 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 the port number.
  • nodetype:value β€” value is the node type (SW or FI).
  • nodetype:value1:port:value2 β€” value1 is the node type (SW or FI), value2 is the port number.
  • 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 (down, init, armed, active, notactive, initarmed).
  • portphysstate:value β€” value is a string for PHYs state (polling, disabled, training, linkup, recovery, offline, test).
  • mtucap:value β€” value is the MTU size (2048, 4096, 8192, 10240); omits switch mgmt port 0.
  • labelpat:value β€” value is a glob pattern for the cable label.
  • lengthpat:value β€” value is a glob pattern for the cable length.
  • cabledetpat:value β€” value is a glob pattern for cable details.
  • cabinflenpat:value β€” value is a glob pattern for cable info length.
  • cabinfvendnamepat:value β€” value is a glob pattern for cable info vendor name.
  • cabinfvendpnpat:value β€” value is a glob pattern for cable info vendor part number.
  • cabinfvendrevpat:value β€” value is a glob pattern for cable info vendor revision.
  • cabinfvendsnpat:value β€” value is a glob pattern for cable info vendor serial number.
  • cabinftype:value β€” value is either optical, passive_copper, active_copper, or unknown.
  • linkdetpat:value β€” value is a glob pattern for link details.
  • portdetpat:value β€” value is a glob pattern for port details.
  • sm β€” specifies the master subnet manager (SM). πŸ‘‘
  • smdetpat:value β€” value is a glob pattern for SM details.
  • route:point1:point2 β€” specifies all ports along the routes between the two given points.
  • led:value β€” value is either on or off for the LED port beacon.
  • linkqual:value β€” specifies the ports with a link quality equal to value.
  • linkqualLE:value β€” specifies the ports with a link quality less than or equal to value.
  • linkqualGE:value β€” specifies the ports with a link quality greater than or equal to value.
  • nodepatfile:FILENAME β€” specifies the name of the file with the list of nodepats or node descriptions.
  • nodepairpatfile:FILENAME β€” specifies the name of the file with 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.

🌈 Examples 🌈

# List all the bad links in the fabric:
opaextractbadlinks

# List all the bad links to a switch named "coresw1":
opaextractbadlinks -F "node:coresw1"

# List all the bad links to end-nodes:
opaextractbadlinks -F "nodetype:FI"

# List all the bad links on the 2nd HFI's fabric of a multi-plane fabric:
opaextractbadlinks -h 2

And that's a wrap, bestie! πŸ’– This lil masterpiece is copyright Copyright(C) 2015-2019 Intel Corporation, it lives in the IFSFFCLIRG man page collection, and you're looking at opaextractbadlinks(8). Go find those bad links and slay. βœ¨πŸ¦‹πŸ’