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

update project

parent de9c0e7c
No related branches found
No related tags found
No related merge requests found
......@@ -10,8 +10,8 @@
# Monitor Check Point Maestro SMO SGM Counters
#
# 2021-09-10: rewrtitten for CMK 2.0
# 2021-09-11: added metrics
#
# ToDo: add metrics file
# ToDo: add WATO options
#
# sample snmpwalk (for one existing SGM)
......@@ -100,65 +100,57 @@ from cmk.base.plugins.agent_based.agent_based_api.v1.type_defs import (
)
def parse_checkpoint_asg_counters(string_table: StringTable) -> Dict[str, Dict]:
@dataclass
class CheckpointAsgCounter:
label:str
metric: str
unit: str
value: float
notice: bool
def parse_checkpoint_asg_counters(string_table: StringTable) -> Dict[str, List[CheckpointAsgCounter]]:
items = {}
for sgm in string_table:
asgBladeId, asgThroughput, asgConnRate, asgPacketRate, asgConcurrConnNum, asgAccelLoadAverage, \
asgAccelLoadMin, asgAccelLoadMax, asgInstanceLoadAverage, asgInstanceLoadMin, asgInstanceLoadMax = sgm
if not asgThroughput == asgConnRate == 'N/A': # do not add blades without data
items[asgBladeId] = {
'asgThroughput': int(asgThroughput),
'asgConnRate': int(asgConnRate),
'asgPacketRate': int(asgPacketRate),
'asgConcurrConnNum': int(asgConcurrConnNum),
'asgAccelLoadAverage': int(asgAccelLoadAverage),
'asgAccelLoadMin': int(asgAccelLoadMin),
'asgAccelLoadMax': int(asgAccelLoadMax),
'asgInstanceLoadAverage': int(asgInstanceLoadAverage),
'asgInstanceLoadMin': int(asgInstanceLoadMin),
'asgInstanceLoadMax': int(asgInstanceLoadMax)
}
items[asgBladeId] = [
CheckpointAsgCounter(metric='throughput', value=int(asgThroughput), label='Throughput', unit=' Bytes/s', notice=False),
CheckpointAsgCounter(metric='packet_rate', value= int(asgPacketRate), label='Packet rate', unit='/s', notice=False),
CheckpointAsgCounter(metric='conn_rate', value= int(asgConnRate), label='Connection rate', unit='/s', notice=False),
CheckpointAsgCounter(metric='concurr_conn_num', value=int(asgConcurrConnNum), label='Connections', unit='', notice=False),
CheckpointAsgCounter(metric='accel_load_average', value=int(asgAccelLoadAverage), label='Accel load', unit='', notice=True),
CheckpointAsgCounter(metric='instance_load_average', value=int(asgInstanceLoadAverage), label='Instance load', unit='', notice=True),
CheckpointAsgCounter(metric='accel_load_min', value=int(asgAccelLoadMin), label='Accel load min', unit='', notice=True),
CheckpointAsgCounter(metric='accel_load_max', value=int(asgAccelLoadMax), label='Accel load max', unit='', notice=True),
CheckpointAsgCounter(metric='instance_load_min', value=int(asgInstanceLoadMin), label='Instance load min', unit='', notice=True),
CheckpointAsgCounter(metric='instance_load_max', value=int(asgInstanceLoadMax), label='Instance load mox', unit='', notice=True),
]
return items
def discovery_checkpoint_asg_counters(section: Dict[str, Dict]) -> DiscoveryResult:
# sample section
# {
# '1_01': {'asgAccelLoadMax': 0, 'asgPacketRate': 76, 'asgInstanceLoadMin': 0, 'asgConnRate': 0,
# 'asgInstanceLoadAverage': 2, 'asgAccelLoadAverage': 0, 'asgThroughput': 72609, 'asgConcurrConnNum': 37,
# 'asgInstanceLoadMax': 9, 'asgAccelLoadMin': 0},
# '1_02': {'asgAccelLoadMax': 1, 'asgPacketRate': 8, 'asgInstanceLoadMin': 0, 'asgConnRate': 0,
# 'asgInstanceLoadAverage': 1, 'asgAccelLoadAverage': 0, 'asgThroughput': 39193, 'asgConcurrConnNum': 29,
# 'asgInstanceLoadMax': 7, 'asgAccelLoadMin': 0},
# '2_01': {'asgAccelLoadMax': 0, 'asgPacketRate': 0, 'asgInstanceLoadMin': 0, 'asgConnRate': 0,
# 'asgInstanceLoadAverage': 1, 'asgAccelLoadAverage': 0, 'asgThroughput': 0, 'asgConcurrConnNum': 25,
# 'asgInstanceLoadMax': 5, 'asgAccelLoadMin': 0}
# }
#
def discovery_checkpoint_asg_counters(section: Dict[str, List[CheckpointAsgCounter]]) -> DiscoveryResult:
for item in section.keys():
yield Service(item=item)
def check_checkpoint_asg_counters(item, params, section: Dict[str, Dict]) -> CheckResult:
def check_checkpoint_asg_counters(item, params, section: Dict[str, List[CheckpointAsgCounter]]) -> CheckResult:
try:
sgm = section[item]
counters = section[item]
except KeyError:
yield Result(state=State.UNKNOWN, notice='Item not found in SNMP data')
return
yield Result(state=State.OK, summary=f'Throughput (bytes/s): {sgm["asgThroughput"]:d}')
yield Result(state=State.OK, summary=f'Connections/s: {sgm["asgConnRate"]:d}')
yield Result(state=State.OK, summary=f'Packets/s: {sgm["asgPacketRate"]:d}')
yield Result(state=State.OK, summary=f'Concurrent connections: {sgm["asgConcurrConnNum"]:d}')
yield Result(state=State.OK, summary=f'AccelLoadAverage: {sgm["asgAccelLoadAverage"]:d}')
yield Result(state=State.OK, summary=f'InstanceLoadAverage: {sgm["asgInstanceLoadAverage"]:d}')
for metric, value in sgm.items():
yield Metric(
value=value,
name=f'checkpoint_asg_counters_{metric}'
for counter in counters:
yield from check_levels(
value=counter.value,
label=counter.label,
metric_name=f'checkpoint_asg_counters_{counter.metric}',
render_func=lambda v: f'{v:.0f}{counter.unit}',
notice_only=counter.notice,
)
......
No preview for this file type
{'author': 'Th.L. (thl-cmk[at]outlook[dot]com)',
'description': 'Monitor Check Point Maestro SMO counters\n',
'download_url': 'http://thl-cmk.hopto.org/',
'files': {'agent_based': ['checkpoint_asg_counters.py']},
'files': {'agent_based': ['checkpoint_asg_counters.py'],
'web': ['plugins/metrics/checkpoint_asg_counters.py']},
'name': 'checkpoint_asg_counters',
'num_files': 1,
'num_files': 2,
'title': 'Check Point Maestro SMO counters',
'version': '202100910.v0.2',
'version.min_required': '2.0.0',
......
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
from cmk.gui.i18n import _
from cmk.gui.plugins.metrics import (
metric_info,
graph_info,
perfometer_info,
)
metric_info['checkpoint_asg_counters_throughput'] = {
'title': _('Throughput'),
'unit': 'bytes/s',
'color': '26/a',
}
metric_info['checkpoint_asg_counters_packet_rate'] = {
'title': _('Packet Rate'),
'unit': '1/s',
'color': '32/a',
}
metric_info['checkpoint_asg_counters_conn_rate'] = {
'title': _('Connection Rate'),
'unit': '1/s',
'color': '23/a',
}
metric_info['checkpoint_asg_counters_concurr_conn_num'] = {
'title': _('Connections'),
'unit': 'count',
'color': '14/a',
}
metric_info['checkpoint_asg_counters_accel_load_average'] = {
'title': _('Accellerator load (ave)'),
'unit': 'count',
'color': '11/a',
}
metric_info['checkpoint_asg_counters_accel_load_min'] = {
'title': _('Accellerator load (min)'),
'unit': 'count',
'color': '21/a',
}
metric_info['checkpoint_asg_counters_accel_load_max'] = {
'title': _('Accellerator load (max)'),
'unit': 'count',
'color': '31/a',
}
metric_info['checkpoint_asg_counters_instance_load_average'] = {
'title': _('Instance load (ave)'),
'unit': 'count',
'color': '22/a',
}
metric_info['checkpoint_asg_counters_instance_load_min'] = {
'title': _('Instance load (min)'),
'unit': 'count',
'color': '32/a',
}
metric_info['checkpoint_asg_counters_instance_load_max'] = {
'title': _('Instance load (max)'),
'unit': 'count',
'color': '42/a',
}
graph_info['checkpoint_asg_counters_throughput'] = {
'title': _('Check Point SGM Counter Throughput'),
'metrics': [
('checkpoint_asg_counters_throughput', 'area'),
],
'range': (0, 'checkpoint_asg_counters_throughput:max'),
}
graph_info['checkpoint_asg_counters_packet_rate'] = {
'title': _('Check Point SGM Counter Packet Rate'),
'metrics': [
('checkpoint_asg_counters_packet_rate', 'area'),
],
'range': (0, 'checkpoint_asg_counters_packet_rate:max'),
}
graph_info['checkpoint_asg_counters_conn_rate'] = {
'title': _('Check Point SGM Counter Connection Rate'),
'metrics': [
('checkpoint_asg_counters_conn_rate', 'area'),
],
'range': (0, 'checkpoint_asg_counters_conn_rate:max'),
}
graph_info['checkpoint_asg_counters_concurr_conn_num'] = {
'title': _('Check Point SGM Counter Current Connections'),
'metrics': [
('checkpoint_asg_counters_concurr_conn_num', 'area'),
],
'range': (0, 'checkpoint_asg_counters_concurr_conn_num:max'),
}
graph_info['checkpoint_asg_counters_accel_load'] = {
'title': _('Check Point SGM Counter Accell Load'),
'metrics': [
('checkpoint_asg_counters_accel_load_min', 'line'),
('checkpoint_asg_counters_accel_load_average', 'line'),
('checkpoint_asg_counters_accel_load_max', 'line'),
],
'range': (0, 'checkpoint_asg_counters_accel_load_max:max'),
'optional_metrics': [
'checkpoint_asg_counters_accel_load_min',
'checkpoint_asg_counters_accel_load_max',
],
}
graph_info['checkpoint_asg_counters_instance_load'] = {
'title': _('Check Point SGM Counter Instance Load'),
'metrics': [
('checkpoint_asg_counters_instance_load_min', 'line'),
('checkpoint_asg_counters_instance_load_average', 'line'),
('checkpoint_asg_counters_instance_load_max', 'line'),
],
'range': (0, 'checkpoint_asg_counters_instance_load_max:max'),
'optional_metrics': [
'checkpoint_asg_counters_instance_load_min',
'checkpoint_asg_counters_instance_load_max',
],
}
perfometer_info.append(('stacked', [
{
'type': 'logarithmic',
'metric': 'checkpoint_asg_counters_throughput',
'half_value': 2592000.0,
'exponent': 2,
},
{
'type': 'logarithmic',
'metric': 'checkpoint_asg_counters_concurr_conn_num',
'half_value': 100000.0,
'exponent': 2,
},
]))
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