Collection of CheckMK checks (see https://checkmk.com/). All checks and plugins are provided as is. Absolutely no warranty. Send any comments to thl-cmk[at]outlook[dot]com

Skip to content
Snippets Groups Projects
Commit fe0fa7fc authored by thl-cmk's avatar thl-cmk :flag_na:
Browse files

Delete checkpoint_asg_vsls.py

parent eea76693
No related branches found
No related tags found
No related merge requests found
#!/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',
)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment