From 554905ad503c0ca09a65fcf142f207fa4e9f5cf4 Mon Sep 17 00:00:00 2001 From: "Th.L" <thl-cmk@outlook.com> Date: Mon, 22 Mar 2021 13:54:46 +0100 Subject: [PATCH] update project --- agent_based/cisco_asa_sensors.py | 175 ++++++++++++++++--------------- cisco_asa_sensors.mkp | Bin 3383 -> 3560 bytes packages/cisco_asa_sensors | 2 +- 3 files changed, 92 insertions(+), 85 deletions(-) diff --git a/agent_based/cisco_asa_sensors.py b/agent_based/cisco_asa_sensors.py index 03e7c20..fb528a4 100644 --- a/agent_based/cisco_asa_sensors.py +++ b/agent_based/cisco_asa_sensors.py @@ -1,7 +1,8 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- -# -# License: GNU General Public License v2 +# Copyright (C) 2019 tribe29 GmbH - License: GNU General Public License v2 +# This file is part of Checkmk (https://checkmk.com). It is subject to the terms and +# conditions defined in the file COPYING, which is part of this source code package. # # Author: thl-cmk[at]outlook[dot]com # URL : https://thl-cmk.hopto.org @@ -10,7 +11,7 @@ # Monitor Cisco ASA Sensors (Temperature, Fan and Power supply) # # 2021-03-21: fixed params in cisco_asa_fan, removed params from cisco_asa_power -# +# 2021-03-22: code improvements # # sample snmpwalk # .1.3.6.1.2.1.47.1.1.1.1.7.1 = STRING: "Chassis" @@ -117,7 +118,8 @@ # 'power': {}} # -from typing import Dict, List, NamedTuple + +from typing import Dict, List, NamedTuple, Mapping from .agent_based_api.v1.type_defs import ( DiscoveryResult, @@ -135,6 +137,12 @@ from .agent_based_api.v1 import ( startswith, ) +from .utils.temperature import ( + check_temperature, + TempParamType, + to_celsius, +) + # ################################################################################################## # @@ -145,61 +153,70 @@ from .agent_based_api.v1 import ( class CiscoAsaSensor(NamedTuple): value: float - status: State + state: State state_readable: str unit: str -def parse_cisco_asa_sensors(string_table: List[StringTable]) -> Dict: - def get_state_readable(st: str) -> str: - states = { - '1': 'Ok', - '2': 'unavailable', - '3': 'nonoperational', - } - return states.get(st, st) - - def get_sensor_status(st: str) -> State: - states = { - '1': State.OK, - '2': State.WARN, - '3': State.CRIT - } - return states.get(st, State.CRIT) - - sensors: dict = { - 'fan': {}, - 'temp': {}, - 'power': {}, +class CiscoAsaPowerSensor(NamedTuple): + state: State + state_readable: str + + +class CiscoasaSensors(NamedTuple): + fan: Mapping[str, CiscoAsaSensor] + temp: Mapping[str, CiscoAsaSensor] + power: Mapping[str, CiscoAsaPowerSensor] + + +def get_state_readable(st: str) -> str: + states = { + '1': 'Ok', + '2': 'unavailable', + '3': 'nonoperational', + } + return states.get(st, st) + + +def get_sensor_state(st: str) -> State: + states = { + '1': State.OK, + '2': State.WARN, + '3': State.CRIT } + return states.get(st, State.CRIT) + + +def parse_cisco_asa_sensors(string_table: List[StringTable]) -> CiscoasaSensors: + temp = {} + fan = {} + power = {} for sensorname, sensortype, sensorvalue, sensorstatus, sensorunits in string_table[0]: if sensorname != '': # for asa context, there are no real sensors. if sensortype == '8': # Temperature - sensors['temp'].update({sensorname.replace('Temperature ', ''): CiscoAsaSensor( + temp.update({sensorname.replace('Temperature ', ''): CiscoAsaSensor( value=to_celsius(float(sensorvalue), sensorunits), unit=sensorunits, - status=get_sensor_status(sensorstatus), + state=get_sensor_state(sensorstatus), state_readable=get_state_readable(sensorstatus), )}) if sensortype == '10': # Fan - sensors['fan'].update({sensorname.replace('Fan ', ''): CiscoAsaSensor( + fan.update({sensorname.replace('Fan ', ''): CiscoAsaSensor( value=int(sensorvalue), unit=sensorunits, - status=get_sensor_status(sensorstatus), + state=get_sensor_state(sensorstatus), state_readable=get_state_readable(sensorstatus), )}) if sensortype == '12': # Power supply - sensors['power'].update({sensorname.replace('Power ', ''): CiscoAsaSensor( - value=0, - unit='', - status=get_sensor_status(sensorstatus), + power.update({sensorname.replace('Power ', ''): CiscoAsaPowerSensor( + state=get_sensor_state(sensorstatus), state_readable=get_state_readable(sensorstatus), )}) - return sensors + return CiscoasaSensors(temp=temp, fan=fan, power=power) register.snmp_section( @@ -220,40 +237,34 @@ register.snmp_section( detect=startswith('.1.3.6.1.2.1.1.1.0', 'cisco adaptive security appliance') ) + # ################################################################################################## # # ASA SENSORS TEMPERATURE # # ################################################################################################## -from .utils.temperature import ( - check_temperature, - TempParamType, - to_celsius, -) - -def discovery_cisco_asa_temp(section: Dict) -> DiscoveryResult: - for key in section['temp']: - yield Service(item=key) +def discovery_cisco_asa_temp(section: CiscoasaSensors) -> DiscoveryResult: + yield from (Service(item=item) for item in section.temp.keys()) -def check_cisco_asa_temp(item, params: TempParamType, section) -> CheckResult: +def check_cisco_asa_temp(item, params: TempParamType, section: CiscoasaSensors) -> CheckResult: try: - sensor = section['temp'][item] - - yield Result(state=sensor.status, summary='Status: %s' % sensor.state_readable) - - yield from check_temperature( - sensor.value, - dev_unit=sensor.unit, - dev_status=sensor.status, - dev_status_name=sensor.state_readable, - params=params, - unique_name='check_cisco_asa_temp.%s' % item, - ) + sensor = section.temp[item] except KeyError: - pass + return + + yield Result(state=sensor.state, summary='Status: %s' % sensor.state_readable) + + yield from check_temperature( + sensor.value, + dev_unit=sensor.unit, + dev_status=sensor.state, + dev_status_name=sensor.state_readable, + params=params, + unique_name='check_cisco_asa_temp.%s' % item, + ) register.check_plugin( @@ -274,28 +285,26 @@ register.check_plugin( # ################################################################################################## -def discovery_cisco_asa_fan(section: Dict) -> DiscoveryResult: - for key in section['fan']: - yield Service(item=key) +def discovery_cisco_asa_fan(section: CiscoasaSensors) -> DiscoveryResult: + yield from (Service(item=item) for item in section.fan.keys()) -def check_cisco_asa_fan(item, params, section) -> CheckResult: +def check_cisco_asa_fan(item, params, section: CiscoasaSensors) -> CheckResult: try: - sensor = section['fan'][item] - - yield Result(state=sensor.status, summary='Status: %s' % sensor.state_readable) + sensor = section.fan[item] + except KeyError: + return - yield from check_levels( - sensor.value, - label='Speed', - levels_lower=params.get('lower', None), - levels_upper=params.get('upper', None), - metric_name='fan' if params.get('output_metrics') else None, - render_func=lambda v: '%s RPM' % str(v), - ) + yield Result(state=sensor.state, summary='Status: %s' % sensor.state_readable) - except KeyError: - pass + yield from check_levels( + sensor.value, + label='Speed', + levels_lower=params.get('lower', None), + levels_upper=params.get('upper', None), + metric_name='fan' if params.get('output_metrics') else None, + render_func=lambda v: '%s RPM' % str(v), + ) register.check_plugin( @@ -315,19 +324,17 @@ register.check_plugin( # # ################################################################################################## -def discovery_cisco_asa_power(section: Dict) -> DiscoveryResult: - for key in section['power']: - yield Service(item=key) +def discovery_cisco_asa_power(section: CiscoasaSensors) -> DiscoveryResult: + yield from (Service(item=item) for item in section.power.keys()) -def check_cisco_asa_power(item, section) -> CheckResult: +def check_cisco_asa_power(item, section: CiscoasaSensors) -> CheckResult: try: - sensor = section['power'][item] - - yield Result(state=sensor.status, summary='Status: %s' % sensor.state_readable) - + sensor = section.power[item] except KeyError: - pass + return + + yield Result(state=sensor.state, summary='Status: %s' % sensor.state_readable) register.check_plugin( diff --git a/cisco_asa_sensors.mkp b/cisco_asa_sensors.mkp index f84efb0826041f01037723c2bd8b620005c11066..58899b6953a29e18fb52a3e31257d12667aeab09 100644 GIT binary patch literal 3560 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 E03G%MdH?_b literal 3383 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 diff --git a/packages/cisco_asa_sensors b/packages/cisco_asa_sensors index c4b310d..7ac90b0 100644 --- a/packages/cisco_asa_sensors +++ b/packages/cisco_asa_sensors @@ -7,7 +7,7 @@ 'name': 'cisco_asa_sensors', 'num_files': 4, 'title': 'Cisco ASA Sensors', - 'version': '20210318_v0.0.1', + 'version': '20210322_v0.0.2', 'version.min_required': '2.0.0', 'version.packaged': '2.0.0p1', 'version.usable_until': None} \ No newline at end of file -- GitLab