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 16fd5af2 authored by thl-cmk's avatar thl-cmk :flag_na:
Browse files

update project

parent cf2f1ceb
No related branches found
No related tags found
No related merge requests found
......@@ -11,6 +11,7 @@
#
# 2021-03-03: rewrite for CMK 2.0
# 2021-09-10: changed render function to networkbandwidth
# 2021-09-11: added WTO options
#
# sample snmpwalk (for one interface)
# .1.3.6.1.4.1.2620.1.48.26.1.1.1.4.0 = Gauge32: 4
......@@ -47,7 +48,7 @@
import time
from typing import Mapping, Dict, List, Tuple, NamedTuple
from typing import Dict, List, NamedTuple
from cmk.base.plugins.agent_based.agent_based_api.v1.type_defs import (
DiscoveryResult,
......@@ -111,26 +112,6 @@ def parse_checkpoint_asg_interface(string_table: List[StringTable]) -> Dict[str,
def discovery_checkpoint_asg_interface(section: Dict[str, CheckPointASGInterface]) -> DiscoveryResult:
# sample section
#
# {
# 'bond2': CheckPointASGInterface(asgNetIfIPv4Addr='-', asgNetIfIPv6Addr='-', asgNetIfMACAddr='00:1c:7f:81:05:09', asgNetIfInfo='Bond Master', asgNetIfState='(up)/(up)', asgNetIfSpeed='20G', asgNetIfMTU='NA', asgNetIfDuplex='Full', asgNetIfRx=3373103274, asgNetIfTx=5007776301),
# 'eth1-05': CheckPointASGInterface(asgNetIfIPv4Addr='-', asgNetIfIPv6Addr='-', asgNetIfMACAddr='00:1c:7f:81:05:09', asgNetIfInfo='Bond slave', asgNetIfState='(up)/(up)', asgNetIfSpeed='10G', asgNetIfMTU='1500', asgNetIfDuplex='Full', asgNetIfRx=1014183605, asgNetIfTx=3291515315),
# 'eth2-05': CheckPointASGInterface(asgNetIfIPv4Addr='-', asgNetIfIPv6Addr='-', asgNetIfMACAddr='00:1c:7f:81:05:09', asgNetIfInfo='Bond slave', asgNetIfState='(up)/(up)', asgNetIfSpeed='10G', asgNetIfMTU='1500', asgNetIfDuplex='Full', asgNetIfRx=2358951560, asgNetIfTx=1716293763),
# 'bond2.602': CheckPointASGInterface(asgNetIfIPv4Addr='10.9.9.1/25', asgNetIfIPv6Addr='-', asgNetIfMACAddr='00:1c:7f:81:05:09', asgNetIfInfo='Vlan', asgNetIfState='(up)/(up)', asgNetIfSpeed='NA', asgNetIfMTU='1500', asgNetIfDuplex='Full', asgNetIfRx=355320533, asgNetIfTx=4673143507),
# 'bond2.3001': CheckPointASGInterface(asgNetIfIPv4Addr='10.0.100.49/27', asgNetIfIPv6Addr='-', asgNetIfMACAddr='00:1c:7f:81:05:09', asgNetIfInfo='Vlan', asgNetIfState='(up)/(up)', asgNetIfSpeed='NA', asgNetIfMTU='1500', asgNetIfDuplex='Full', asgNetIfRx=2910413426, asgNetIfTx=229216384),
# 'bond3': CheckPointASGInterface(asgNetIfIPv4Addr='-', asgNetIfIPv6Addr='-', asgNetIfMACAddr='00:1c:7f:81:06:09', asgNetIfInfo='Bond Master', asgNetIfState='(up)/(up)', asgNetIfSpeed='20G', asgNetIfMTU='NA', asgNetIfDuplex='Full', asgNetIfRx=1479928728, asgNetIfTx=133617791),
# 'eth1-06': CheckPointASGInterface(asgNetIfIPv4Addr='-', asgNetIfIPv6Addr='-', asgNetIfMACAddr='00:1c:7f:81:06:09', asgNetIfInfo='Bond slave', asgNetIfState='(up)/(up)', asgNetIfSpeed='10G', asgNetIfMTU='1500', asgNetIfDuplex='Full', asgNetIfRx=214459394, asgNetIfTx=131774843),
# 'eth2-06': CheckPointASGInterface(asgNetIfIPv4Addr='-', asgNetIfIPv6Addr='-', asgNetIfMACAddr='00:1c:7f:81:06:09', asgNetIfInfo='Bond slave', asgNetIfState='(up)/(up)', asgNetIfSpeed='10G', asgNetIfMTU='1500', asgNetIfDuplex='Full', asgNetIfRx=1265469477, asgNetIfTx=1843158),
# 'bond3.998': CheckPointASGInterface(asgNetIfIPv4Addr='xx.yy.zz.129/28', asgNetIfIPv6Addr='-', asgNetIfMACAddr='00:1c:7f:81:06:09', asgNetIfInfo='Vlan', asgNetIfState='(up)/(up)', asgNetIfSpeed='NA', asgNetIfMTU='1500', asgNetIfDuplex='Full', asgNetIfRx=1470381718, asgNetIfTx=124676073),
# 'magg1': CheckPointASGInterface(asgNetIfIPv4Addr='10.0.100.9/27', asgNetIfIPv6Addr='-', asgNetIfMACAddr='00:1c:7f:6e:9b:dc', asgNetIfInfo='Bond Master', asgNetIfState='(up)/(up)', asgNetIfSpeed='20G', asgNetIfMTU='NA', asgNetIfDuplex='Full', asgNetIfRx=200631796, asgNetIfTx=384654797),
# 'eth1-Mgmt1': CheckPointASGInterface(asgNetIfIPv4Addr='-', asgNetIfIPv6Addr='-', asgNetIfMACAddr='00:1c:7f:6e:9b:dc', asgNetIfInfo='Bond slave', asgNetIfState='(Up)/(Up)', asgNetIfSpeed='10G', asgNetIfMTU='1500', asgNetIfDuplex='Full', asgNetIfRx=61520991, asgNetIfTx=44776128),
# 'eth2-Mgmt1': CheckPointASGInterface(asgNetIfIPv4Addr='-', asgNetIfIPv6Addr='-', asgNetIfMACAddr='00:1c:7f:6e:9b:dc', asgNetIfInfo='Bond slave', asgNetIfState='(Up)/(Up)', asgNetIfSpeed='10G', asgNetIfMTU='1500', asgNetIfDuplex='Full', asgNetIfRx=139110651, asgNetIfTx=339878254),
# 'Sync': CheckPointASGInterface(asgNetIfIPv4Addr='192.0.2.1/24', asgNetIfIPv6Addr='-', asgNetIfMACAddr='00:1c:7f:01:04:fe', asgNetIfInfo='Bond Master', asgNetIfState='(up)/(up)', asgNetIfSpeed='20G', asgNetIfMTU='NA', asgNetIfDuplex='Full', asgNetIfRx=24549684703, asgNetIfTx=14214325659),
# 'eth1-Sync': CheckPointASGInterface(asgNetIfIPv4Addr='-', asgNetIfIPv6Addr='-', asgNetIfMACAddr='00:1c:7f:01:04:fe', asgNetIfInfo='Bond slave', asgNetIfState='(down)/(down)', asgNetIfSpeed='10G', asgNetIfMTU='1500', asgNetIfDuplex='Full', asgNetIfRx=1228171, asgNetIfTx=1511513),
# 'eth2-Sync': CheckPointASGInterface(asgNetIfIPv4Addr='-', asgNetIfIPv6Addr='-', asgNetIfMACAddr='00:1c:7f:01:04:fe', asgNetIfInfo='Bond slave', asgNetIfState='(up)/(up)', asgNetIfSpeed='10G', asgNetIfMTU='1500', asgNetIfDuplex='Full', asgNetIfRx=24548432877, asgNetIfTx=14212801896)
# }
#
for item in section.keys():
yield Service(item=item, parameters={'asgNetIfSpeed': section[item].asgNetIfSpeed})
......@@ -147,47 +128,53 @@ def check_checkpoint_asg_interface(item, params, section: Dict[str, CheckPointAS
now = time.time()
value_store = get_value_store()
try:
in_rate = get_rate(value_store, 'in', now, asg_interface.asgNetIfRx, raise_overflow=True, )
except GetRateError as exc:
yield IgnoreResults(str(exc))
else:
yield from check_levels(in_rate, metric_name='if_in_octets', render_func=render.networkbandwidth, label='In', )
out_rate = get_rate(value_store, 'out', now, asg_interface.asgNetIfTx, raise_overflow=True, )
yield from check_levels(out_rate, metric_name='if_out_octets', render_func=render.networkbandwidth, label='Out', )
for label, metric, value in [
('In', 'if_in_octets', asg_interface.asgNetIfRx),
('Out', 'if_out_octets', asg_interface.asgNetIfTx),
]:
try:
value = get_rate(value_store, label, now, value, raise_overflow=True, )
except GetRateError as exc:
yield IgnoreResults(str(exc))
else:
yield from check_levels(value, metric_name=metric, render_func=render.networkbandwidth, label=label, )
details = ''
details += '\nIPv4 Address: %s' % asg_interface.asgNetIfIPv4Addr
details += '\nIPv6 Address: %s' % asg_interface.asgNetIfIPv6Addr
details += '\nMAC Address: %s' % asg_interface.asgNetIfMACAddr
details += '\nType: %s' % asg_interface.asgNetIfInfo
details += '\nMTU: %s' % asg_interface.asgNetIfMTU
details += '\nDuplex: %s' % asg_interface.asgNetIfDuplex
details += f'\nIPv4 Address: {asg_interface.asgNetIfIPv4Addr}'
details += f'\nIPv6 Address: {asg_interface.asgNetIfIPv6Addr}'
details += f'\nMAC Address: {asg_interface.asgNetIfMACAddr}'
details += f'\nType: {asg_interface.asgNetIfInfo}'
details += f'\nMTU: {asg_interface.asgNetIfMTU}'
details += f'\nDuplex: {asg_interface.asgNetIfDuplex}'
if not asg_interface.asgNetIfIPv4Addr == '-':
summary = 'IPv4: %s' % asg_interface.asgNetIfIPv4Addr
summary = f'IPv4: {asg_interface.asgNetIfIPv4Addr}'
else:
summary = 'IPv4: N/A'
yield Result(state=State.OK, summary=summary, details=details)
yield_text = 'State: %s' % asg_interface.asgNetIfState
yield_text = f'State: {asg_interface.asgNetIfState}'
if not asg_interface.asgNetIfState.lower() == '(up)/(up)':
yield Result(state=State.CRIT, summary=yield_text)
yield Result(state=State(params['state_not_up_up']), summary=yield_text)
else:
yield Result(state=State.OK, summary=yield_text)
if not asg_interface.asgNetIfSpeed == inv_asgNetIfSpeed:
yield Result(state=State.WARN,
summary='Speed: %s (%s expected)' % (asg_interface.asgNetIfSpeed, inv_asgNetIfSpeed))
yield Result(
state=State(params['state_speed_changed']),
summary=f'Speed: {asg_interface.asgNetIfSpeed} ({inv_asgNetIfSpeed} expected)'
)
elif not asg_interface.asgNetIfSpeed == 'NA':
yield Result(state=State.OK, summary='Speed %s' % asg_interface.asgNetIfSpeed)
yield Result(state=State.OK, summary=f'Speed {asg_interface.asgNetIfSpeed}')
if not asg_interface.asgNetIfDuplex.lower():
yield Result(state=State.CRIT, summary='Duplex: %s (Full expected)' % asg_interface.asgNetIfDuplex)
if not asg_interface.asgNetIfDuplex.lower() == 'full':
yield Result(
state=State(params['state_not_full_duplex']),
summary=f'Duplex: {asg_interface.asgNetIfDuplex} (Full expected)'
)
else:
yield Result(state=State.OK, summary='Duplex: %s' % asg_interface.asgNetIfDuplex)
yield Result(state=State.OK, summary=f'Duplex: {asg_interface.asgNetIfDuplex}')
register.snmp_section(
......@@ -225,6 +212,10 @@ register.check_plugin(
service_name='ASG Interface %s',
discovery_function=discovery_checkpoint_asg_interface,
check_function=check_checkpoint_asg_interface,
check_default_parameters={},
check_default_parameters={
'state_not_full_duplex': 2,
'state_not_up_up': 2,
'state_speed_changed': 1,
},
check_ruleset_name='checkpoint_asg_interface',
)
\ No newline at end of file
)
No preview for this file type
......@@ -4,11 +4,12 @@
' - 2021-03-03: rewrite for CMK 2.x\n',
'download_url': 'http://thl-cmk.hopto.org/',
'files': {'agent_based': ['checkpoint_asg_interface.py'],
'checkman': ['checkpoint_asg_interface']},
'checkman': ['checkpoint_asg_interface'],
'web': ['plugins/wato/checkpoint_asg_interface.py']},
'name': 'checkpoint_asg_interface',
'num_files': 2,
'num_files': 3,
'title': 'Check Point Maestro SMO interfaces',
'version': '20201109.v0.1',
'version.min_required': '2.0.0b8',
'version': '20210911.v0.2',
'version.min_required': '2.0.0',
'version.packaged': '2021.07.14',
'version.usable_until': None}
\ No newline at end of file
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
#
from cmk.gui.i18n import _
from cmk.gui.valuespec import (
Dictionary,
TextAscii,
Tuple,
Integer,
Transform,
MonitoringState,
)
from cmk.gui.plugins.wato import (
CheckParameterRulespecWithItem,
rulespec_registry,
RulespecGroupCheckParametersNetworking,
)
def _parameter_valuespec_checkpoint_asg_interface():
return Transform(
Dictionary(elements=[
('state_not_full_duplex',
MonitoringState(
default_value=2,
title=_('State if not Full duplex'),
help=_('Monitoring state if interface not in Full duplex state'),
)),
('state_not_up_up',
MonitoringState(
default_value=2,
title=_('State if not Up/Up'),
help=_('Monitoring state if interface not in Up/Up state'),
)),
('state_speed_changed',
MonitoringState(
default_value=1,
title=_('State if speed changed'),
help=_('Monitoring state if interface is differs from discovery time'),
)),
]))
rulespec_registry.register(
CheckParameterRulespecWithItem(
check_group_name='checkpoint_asg_interface',
group=RulespecGroupCheckParametersNetworking,
match_type='dict',
parameter_valuespec=_parameter_valuespec_checkpoint_asg_interface,
title=lambda: _('Check Point ASG Cores'),
item_spec=lambda: TextAscii(title=_('Interface name'), ),
))
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