05-23-2023 02:04 AM - edited 06-22-2023 10:54 AM
Just had an some year old 10G-ER-Transceiver dropping below the rx-level warning threshold.
* this is called "warning"-threshold
* but unfortunately NXOS doesn't generate a "warning"
* NXOS is quiet, you have to look manually using "show interface transceiver detail"
Cisco Catalyst/IOS had an warning-message for transceiver-stuff for years:
%SFF8472-5-THRESHOLD_VIOLATION: Te1/1/15: Voltage low warning; Operating value: 3.09 V, Threshold value: 3.10 V.
Cisco ASR has DOM capability, too
But NXOS still lacks this functionality?
NXOS-Users have to wait until the link goes down or they have to poll their transceiver attentuation values and compare them manually with warning- or alarm-thresholds?
Unfortunately CSCvf02855 has been terminated without result.
06-22-2023 10:41 AM
I've been writing a tiny Python-Script
nxos_dom.py
#!/bin/env python
#
import re
#
#
def get_shutdown():
result = []
cli_result = cli('show int status | inc disabled | cut -d " " -f 1')
#
for l in cli_result.split("\n"):
result.append(l)
#
return result
#
#
def get_dom_alarm(shutdown):
#
cli_result = cli('show int transceiver details | xml | inc "(<interface|flag)" | excl "> <" | sed "s/Ethernet/Eth/g"')
#
#
result = {}
#
int_name = ""
int_flags = {}
#
for l in cli_result.split("\n"):
lm=re.match(".*\<interface\>(.*)\<.*", l)
if lm:
if int_name and int_flags and int_name not in shutdown:
for k,v in int_flags.items():
kv='{}{}'.format(k,v)
if not kv in result:
result[kv]=[]
result[kv].append(int_name)
#
int_name = lm.groups()[0]
int_flags = {}
#
lm=re.match(".*\<(.*)_flag\>(.*)\<.*", l)
if lm:
int_flags[lm.groups()[0]] = lm.groups()[1]
#
kvs = ";".join('{}:{}'.format(k,",".join(v)) for k,v in result.items())
return kvs
#
#
down = get_shutdown()
dom_alarm = get_dom_alarm(down)
#
# rx_pwr--:Eth1/16,Eth1/22,Eth1/23,Eth1/26,Eth1/34,Eth1/35,Eth2/19
#
print dom_alarm,
this EEM-Applet runs it once a day:
event manager applet NXOS_DOM
event snmp oid 1.3.6.1.4.1.9.9.305.1.1.1.0 get-type exact entry-op ge entry-val 0 poll-interval 86400
action 10 cli command "source nxos_dom.py"
action 11 regexp "DOM [ -~]+" "$_cli_result" "cli_result_printable"
action 20 syslog priority warnings msg "$cli_result_printable"
action 30 exit 0
generating Syslog-Messages like this:
2023 Jun 21 11:52:06.364 <HOSTNAME> eem_policy_dir: %EEM_ACTION-4-WARN: DOM rx_pwr--:Eth1/17
Discover and save your favorite ideas. Come back to expert answers, step-by-step guides, recent topics, and more.
New here? Get started with these tips. How to use Community New member guide