From d47fe3833ea6880f5b131047986cc20a4f988511 Mon Sep 17 00:00:00 2001 From: Rob Lee Date: Thu, 9 Apr 2020 17:47:46 +0100 Subject: [PATCH] Added error handling --- huwawei_lte_exporter | 45 ++++++++++++++++++++++++++------------------ 1 file changed, 27 insertions(+), 18 deletions(-) diff --git a/huwawei_lte_exporter b/huwawei_lte_exporter index c4fc8bc..05e5e27 100755 --- a/huwawei_lte_exporter +++ b/huwawei_lte_exporter @@ -22,11 +22,9 @@ def prom_exporter(): # Initiatise client client = Client(connection) - #pprint.pprint(client.device.signal()) # Can be accessed without authorization + pprint.pprint(client.device.signal()) # Can be accessed without authorization #pprint.pprint(client.device.information()) # Needs valid authorization, will throw exception if invalid credentials are passed in URL - dev = 'deviceName="'+ client.device.information().get('DeviceName')+'",iccid="'+client.device.information().get('Iccid')+'"' - devband = dev+',band="'+client.device.signal().get('band')+'"' signal = { 'band' : client.device.signal().get('band'), 'rsrp' : client.device.signal().get('rsrp').replace("dBm", ""), 'rsrq' : client.device.signal().get('rsrq').replace("dB", ""), @@ -34,31 +32,42 @@ def prom_exporter(): 'sinr' : client.device.signal().get('sinr').replace("dB", "") } + dev = 'deviceName="'+ client.device.information().get('DeviceName')+'",iccid="'+client.device.information().get('Iccid')+'"' + devband=dev + if signal.get('band') is not None: + devband = dev+',band="'+signal.get('band')+'"' + # HELP ifInDiscards The number of inbound packets which were chosen to be discarded even though no errors had been detected to prevent their being deliverable to a higher-layer protocol - 1.3.6.1.2.1.2.2.1.13 # TYPE ifInDiscards counter #ifInDiscards{ifAlias="",ifDescr="atm0",ifIndex="7",ifName=""} 81 response=[] # Band - response.append('#HELP band The signal band the LTE connection is using') - response.append('#TYPE band gauge') - response.append('band{'+dev+'} '+signal.get('band')) + if signal.get('band') is not None: + response.append('#HELP band The signal band the LTE connection is using') + response.append('#TYPE band gauge') + response.append('band{'+dev+'} '+signal.get('band')) # rsrp - response.append('#HELP rsrp The average power received from a single Reference signal, and Its typical range is around -44dbm (good) to -140dbm(bad)') - response.append('#TYPE rsrp gauge') - response.append('rsrp{'+devband+'} '+signal.get('rsrp')) + if signal.get('rsrp') is not None: + response.append('#HELP rsrp The average power received from a single Reference signal, and Its typical range is around -44dbm (good) to -140dbm(bad)') + response.append('#TYPE rsrp gauge') + response.append('rsrp{'+devband+'} '+signal.get('rsrp')) # rsrq - response.append('#HELP rsrq Indicates quality of the received signal, and its range is typically -19.5dB(bad) to -3dB (good)') - response.append('#TYPE rsrq gauge') - response.append('rsrq{'+devband+'} '+signal.get('rsrq')) + if signal.get('rsrq') is not None: + response.append('#HELP rsrq Indicates quality of the received signal, and its range is typically -19.5dB(bad) to -3dB (good)') + response.append('#TYPE rsrq gauge') + response.append('rsrq{'+devband+'} '+signal.get('rsrq')) # rssi - response.append('#HELP rssi Represents the entire received power including the wanted power from the serving cell as well as all co-channel power and other sources of noise in dBm') - response.append('#TYPE rssi gauge') - response.append('rssi{'+devband+'} '+signal.get('rssi')) + if signal.get('rssi') is not None: + response.append('#HELP rssi Represents the entire received power including the wanted power from the serving cell as well as all co-channel power and other sources of noise in dBm') + response.append('#TYPE rssi gauge') + response.append('rssi{'+devband+'} '+signal.get('rssi')) # sinr - response.append('#HELP sinr The signal-to-noise ratio of the given signal in dB') - response.append('#TYPE sinr gauge') - response.append('sinr{'+devband+'} '+signal.get('sinr')) + if signal.get('sinr') is not None: + response.append('#HELP sinr The signal-to-noise ratio of the given signal in dB') + response.append('#TYPE sinr gauge') + response.append('sinr{'+devband+'} '+signal.get('sinr')) + s='\n' return s.join(response)