diff --git a/agent_based/checkpoint_asg_vsls.py b/agent_based/checkpoint_asg_vsls.py deleted file mode 100644 index 43ce98e5f83cc9469e02a64323956ef659f3e281..0000000000000000000000000000000000000000 --- a/agent_based/checkpoint_asg_vsls.py +++ /dev/null @@ -1,189 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -# -# License: GNU General Public License v2 -# -# Author: thl-cmk[at]outlook[dot]com -# URL : https://thl-cmk.hopto.org -# Date : 2020-11-07 -# -# Monitor Check Point Maestro SMO Vsls Chassis status -# -# 2021-09-11: rewritten for CMK 2.0 -# -# sample snmpwalk -# .1.3.6.1.4.1.2620.1.48.30.20.1.0 = Gauge32: 50 -# .1.3.6.1.4.1.2620.1.48.30.20.2.0 = STRING: "1 2 " -# .1.3.6.1.4.1.2620.1.48.30.20.10.1.1.1.0 = Gauge32: 0 -# .1.3.6.1.4.1.2620.1.48.30.20.10.1.2.1.0 = STRING: "k01001s11-017500009" -# .1.3.6.1.4.1.2620.1.48.30.20.10.1.3.1.0 = Gauge32: 1 -# .1.3.6.1.4.1.2620.1.48.30.20.10.1.4.1.0 = Gauge32: 1 -# .1.3.6.1.4.1.2620.1.48.30.20.10.1.5.1.0 = STRING: "OK" -# .1.3.6.1.4.1.2620.1.48.30.20.10.1.6.1.0 = STRING: "Primary chassis health is good." -# .1.3.6.1.4.1.2620.1.48.30.20.10.1.7.1.0 = Gauge32: 0 -# .1.3.6.1.4.1.2620.1.48.30.20.10.1.8.1.0 = Gauge32: 0 -# .1.3.6.1.4.1.2620.1.48.30.20.10.1.9.1.0 = Gauge32: 2 -# .1.3.6.1.4.1.2620.1.48.30.20.10.1.10.1.0 = Gauge32: 2 -# .1.3.6.1.4.1.2620.1.48.30.20.10.1.21.1.0 = Gauge32: 0 -# .1.3.6.1.4.1.2620.1.48.30.20.10.1.22.1.0 = Gauge32: 0 -# .1.3.6.1.4.1.2620.1.48.30.20.10.1.23.1.0 = Gauge32: 1 -# .1.3.6.1.4.1.2620.1.48.30.20.10.1.24.1.0 = Gauge32: 1 -# -# sample string_table -# [ -# [ -# ['50', '1 2'] -# ], -# [ -# ['0', 'k01001s11-017500009', '1', '1', 'OK', 'Primary chassis health is good.', '2', '2', '1', '1', '', ''] -# ] -# ] -# -# -# sample section -# CheckpointAsgVsls(SgmRatio='50', SystemPrimaryChassis='1 2 ', Vsid='0', VsName='k01001s11-017500009', -# VsPrimaryChassis='1', VsActiveChassis='1', VsHealth='OK', -# VsReason='Primary chassis health is good.', ChassisState=[(2, 2), (1, 1)]) - -from typing import List, Tuple, Optional -from dataclasses import dataclass -from cmk.base.plugins.agent_based.agent_based_api.v1.type_defs import ( - DiscoveryResult, - CheckResult, - StringTable, -) - -from cmk.base.plugins.agent_based.agent_based_api.v1 import ( - register, - Service, - equals, - Result, - State, - SNMPTree, - startswith, - all_of, - any_of, -) - - -@dataclass -class CheckpointAsgVsls: - SgmRatio: str - SystemPrimaryChassis: str - Vsid: str - VsName: str - VsPrimaryChassis: str - VsActiveChassis: str - VsHealth: str - VsReason: str - ChassisState: List[Tuple[int, int]] - - -def parse_checkpoint_asg_vsls(string_table: List[StringTable]) -> Optional[CheckpointAsgVsls]: - chassis_info, chassis_state = string_table - try: - SgmRatio, SystemPrimaryChassis = chassis_info[0] - except (IndexError, ValueError): - return - - try: - Vsid, VsName, VsPrimaryChassis, VsActiveChassis, VsHealth, VsReason, VsChassis1FwksUp, VsChassis1FwksTotal, \ - VsChassis2FwksUp, VsChassis2FwksTotal, VsChassis3FwksUp, VsChassis3FwksTotal = chassis_state[0] - except (IndexError, ValueError): - return - - return CheckpointAsgVsls( - SgmRatio=SgmRatio, - SystemPrimaryChassis=SystemPrimaryChassis, - Vsid=Vsid, - VsName=VsName, - VsPrimaryChassis=VsPrimaryChassis, - VsActiveChassis=VsActiveChassis, - VsHealth=VsHealth, - VsReason=VsReason, - ChassisState=[ - (int(VsChassis1FwksUp), int(VsChassis1FwksTotal)), - (int(VsChassis2FwksUp), int(VsChassis2FwksTotal)), - # (int(VsChassis3FwksUp), int(VsChassis3FwksTotal)), - ] - ) - - -def discovery_checkpoint_asg_vsls(section: CheckpointAsgVsls) -> DiscoveryResult: - yield Service(parameters={'discovery_active_chassis': section.VsActiveChassis}) - - -def check_checkpoint_asg_vsls(params, section: CheckpointAsgVsls) -> CheckResult: - SystemPrimaryChassis = section.SystemPrimaryChassis.strip().split(' ') - inv_asgVslsVsActiveChassis = params['discovery_active_chassis'] - - longoutput = '' - longoutput += f'\nSystem name: {section.VsName}' - longoutput += f'\nHealth status: {section.VsHealth}' - longoutput += f'\nHealth reason: {section.VsReason}' - yield Result(state=State.OK, notice=longoutput) - - if section.VsHealth != 'OK': - yield Result(state=State.WARN, notice=f'Health: {section.VsHealth}, Reason: {section.VsReason}') - - yield_text = f'Primary/Active chassis: {section.VsPrimaryChassis}/{section.VsActiveChassis}' - if inv_asgVslsVsActiveChassis != section.VsActiveChassis: - yield Result(state=State.WARN, notice=yield_text) - else: - yield Result(state=State.OK, notice=yield_text) - - for chassis in SystemPrimaryChassis: - VsChassisFwksUp, VsChassisFwksTotal = section.ChassisState[int(chassis) - 1] - yield_text = f'Chassis {chassis}: {VsChassisFwksUp}/{VsChassisFwksTotal} SGMs UP' - if VsChassisFwksUp != VsChassisFwksTotal: - yield Result(state=State.CRIT, notice=yield_text) - else: - yield Result(state=State.OK, summary=yield_text) - - -register.snmp_section( - name='checkpoint_asg_vsls', - parse_function=parse_checkpoint_asg_vsls, - fetch=[ - SNMPTree( - base='.1.3.6.1.4.1.2620.1.48.30.20', # CHECKPOINT-MIB::asgVslsInfo - oids=[ - '1', # asgVslsSgmRatio - '2', # asgVslsSystemPrimaryChassis - ] - ), - SNMPTree( - base='.1.3.6.1.4.1.2620.1.48.30.20.10.1', # CHECKPOINT-MIB::asgVslsStateEntry - oids=[ - '1', # asgVslsVsid - '2', # asgVslsVsName - '3', # asgVslsVsPrimaryChassis - '4', # asgVslsVsActiveChassis - '5', # asgVslsVsHealth - '6', # asgVslsVsReason - '9', # asgVslsVsChassis1FwksUp - '10', # asgVslsVsChassis1FwksTotal - '23', # asgVslsVsChassis2FwksUp - '24', # asgVslsVsChassis2FwksTotal - '33', # asgVslsVsChassis3FwksUp - '34', # asgVslsVsChassis3FwksTotal - ] - ), - ], - detect=any_of( - startswith('.1.3.6.1.2.1.1.2.0', '.1.3.6.1.4.1.2620'), - all_of( - equals('.1.3.6.1.2.1.1.2.0', '.1.3.6.1.4.1.8072.3.2.10'), - equals('.1.3.6.1.4.1.2620.1.6.1.0', 'SVN Foundation'), - ) - ) -) - -register.check_plugin( - name='checkpoint_asg_vsls', - service_name='ASG VSLS', - discovery_function=discovery_checkpoint_asg_vsls, - check_function=check_checkpoint_asg_vsls, - check_default_parameters={}, - check_ruleset_name='checkpoint_asg_vsls', -)