diff --git a/agent_based/checkpoint_asg_smo_counters.py b/agent_based/checkpoint_asg_smo_counters.py deleted file mode 100644 index 752d24107227f99aac5169b529a06a52565a6ebf..0000000000000000000000000000000000000000 --- a/agent_based/checkpoint_asg_smo_counters.py +++ /dev/null @@ -1,224 +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-09 -# -# Monitor Check Point Maestro SMO SGM Counters -# -# 2021-09-10: rewritten for CMK 2.0 -# 2021-09-11: added metrics file -# -# sample snmpwalk -# .1.3.6.1.4.1.2620.1.48.20.1.0 = STRING: "111802" -# .1.3.6.1.4.1.2620.1.48.20.2.0 = STRING: "0" -# .1.3.6.1.4.1.2620.1.48.20.3.0 = STRING: "84" -# .1.3.6.1.4.1.2620.1.48.20.4.0 = STRING: "91" -# .1.3.6.1.4.1.2620.1.48.20.5.0 = STRING: "N/A" -# .1.3.6.1.4.1.2620.1.48.20.6.0 = STRING: "0" -# .1.3.6.1.4.1.2620.1.48.20.7.0 = STRING: "0" -# .1.3.6.1.4.1.2620.1.48.20.8.0 = STRING: "9" -# .1.3.6.1.4.1.2620.1.48.20.9.0 = STRING: "79" -# .1.3.6.1.4.1.2620.1.48.20.10.0 = STRING: "1" -# .1.3.6.1.4.1.2620.1.48.20.11.0 = STRING: "0" -# .1.3.6.1.4.1.2620.1.48.20.12.0 = STRING: "0" -# .1.3.6.1.4.1.2620.1.48.20.13.0 = STRING: "0" -# .1.3.6.1.4.1.2620.1.48.20.14.0 = STRING: "1" -# .1.3.6.1.4.1.2620.1.48.20.15.0 = STRING: "0" -# .1.3.6.1.4.1.2620.1.48.20.16.0 = STRING: "7" -# .1.3.6.1.4.1.2620.1.48.20.17.0 = STRING: "0" -# .1.3.6.1.4.1.2620.1.48.20.18.0 = STRING: "0" -# .1.3.6.1.4.1.2620.1.48.20.19.0 = STRING: "0" -# .1.3.6.1.4.1.2620.1.48.20.20.0 = STRING: "0" -# .1.3.6.1.4.1.2620.1.48.20.21.0 = STRING: "N/A" -# -# sample string_table -# [['111802', '0', '84', '91', 'N/A', '0', '0', '9', '79', '1', '0', '0', '0', '1', '0', '7', '0', '0', '0', '0', 'N/A']] -# - -from dataclasses import dataclass -from typing import Dict - -from cmk.base.plugins.agent_based.agent_based_api.v1 import ( - register, - Service, - Result, - Metric, - State, - SNMPTree, - all_of, - startswith, - any_of, - equals, -) -from cmk.base.plugins.agent_based.agent_based_api.v1.type_defs import ( - DiscoveryResult, - CheckResult, - StringTable, -) - - -@dataclass -class CheckpointAsgSmoCounters: - counters: Dict[str, int] - label: str - unit: str - text: str - - -def parse_checkpoint_asg_smo_counters(string_table: StringTable) -> Dict[str, CheckpointAsgSmoCounters]: - items = {} - for entry in string_table: - asgThroughput, asgConnectionRate, asgPacketRate, asgConcurrConn, asgClearConn, asgAccelConnectionRate, \ - asgNonAccelConnectionRate, asgAccelConcurrConn, asgNonAccelConcurrConn, asgLoad, asgAccelLoadAvg, \ - asgAccelLoadMin, asgAccelLoadMax, asgInstancesLoadAvg, asgInstancesLoadMin, asgInstancesLoadMax, \ - asgVpnThroughput, asgVpnConn, asgNatConnRate, asgNatConn, asgVsxCpu1MinAvg = entry - - items['Concurrent connections'] = CheckpointAsgSmoCounters( - counters={ - 'concurr_conn': int(asgConcurrConn), - 'accel_concurr_conn': int(asgAccelConcurrConn), - 'non_accel_concurr_conn': int(asgNonAccelConcurrConn), - }, - label='all/accelerated/non accelerated', - unit=' connections', - text=f'{int(asgConcurrConn):d}/{int(asgAccelConcurrConn):d}/{int(asgNonAccelConcurrConn):d}', - ) - items['Connection rate'] = CheckpointAsgSmoCounters( - counters={ - 'connection_rate': int(asgConnectionRate), - 'accel_connection_rate': int(asgAccelConnectionRate), - 'non_accel_connection_rate': int(asgNonAccelConnectionRate), - }, - label='current/average/min/max', - unit=' connections/s', - text=f'{int(asgLoad):d}/{int(asgAccelLoadAvg):d}/{int(asgAccelLoadMin):d}/{int(asgAccelLoadMax):d}', - ) - items['Load'] = CheckpointAsgSmoCounters( - counters={ - 'load': int(asgLoad), - 'accel_load_avg': int(asgAccelLoadAvg), - 'accel_load_min': int(asgAccelLoadMin), - 'accel_load_max': int(asgAccelLoadMax), - }, - label='current/average/min/max', - unit='%', - text=f'{int(asgLoad):d}/{int(asgAccelLoadAvg):d}/{int(asgAccelLoadMin):d}/{int(asgAccelLoadMax):d}', - ) - items['Instances load'] = CheckpointAsgSmoCounters( - counters={ - 'instances_load_avg': int(asgInstancesLoadAvg), - 'instances_load_min': int(asgInstancesLoadMin), - 'instances_load_max': int(asgInstancesLoadMax), - }, - label='average/min/max', - unit='%', - text=f'{int(asgInstancesLoadAvg):d}/{int(asgInstancesLoadMin):d}/{int(asgInstancesLoadMax):d}', - ) - items['NAT'] = CheckpointAsgSmoCounters( - counters={ - 'nat_conn_rate': int(asgNatConnRate), - 'nat_conn': int(asgNatConn), - }, - label='NAT Connections/NAT connection rate', - unit=' connections', - text=f'{int(asgNatConn):d}/{int(asgNatConn):d}', - ) - items['VPN'] = CheckpointAsgSmoCounters( - counters={ - 'vpn_throughput': int(asgVpnThroughput), - 'vpn_conn': int(asgVpnConn), - }, - label='VPN Connections/VPN Throughput', - unit='', - text=f'{int(asgVpnConn):d}/{int(asgVpnThroughput):d}', - ) - items['Throughput'] = CheckpointAsgSmoCounters( - counters={ - 'throughput': int(asgThroughput), - }, - label='Throughput', - unit=' Bytes/s', - text=f'{int(asgThroughput):d}' - ) - items['Packet rate'] = CheckpointAsgSmoCounters( - counters={ - 'packet_rate': int(asgPacketRate), - }, - label='Packet Rate', - unit=' Packets/s', - text=f'{int(asgPacketRate):d}', - ) - if items: - return items - - -def discovery_checkpoint_asg_smo_counters(section:Dict[str, CheckpointAsgSmoCounters]) -> DiscoveryResult: - for item in section.keys(): - yield Service(item=item) - - -def check_checkpoint_asg_smo_counters(item, params, section: Dict[str, CheckpointAsgSmoCounters]) -> CheckResult: - try: - entry = section[item] - except KeyError: - yield Result(state=State.UNKNOWN, notice='Item not found in SNMP data') - return - - for key in entry.counters.keys(): - yield Metric(value=entry.counters[key], name=f'checkpoint_asg_smo_counters_{key}') - - yield Result(state=State.OK, summary=f'{entry.label}: {entry.text}{entry.unit}') - - - - -register.snmp_section( - name='checkpoint_asg_smo_counters', - parse_function=parse_checkpoint_asg_smo_counters, - fetch=SNMPTree( - base='.1.3.6.1.4.1.2620.1.48.20', # CHECKPOINT-MIB::asgIPv4PerformanceCounters - oids=[ - '1', # asgThroughput - '2', # asgConnectionRate - '3', # asgPacketRate - '4', # asgConcurrConn - '5', # asgClearConn - '6', # asgAccelConnectionRate - '7', # asgNonAccelConnectionRate - '8', # asgAccelConcurrConn - '9', # asgNonAccelConcurrConn - '10', # asgLoad - '11', # asgAccelLoadAvg - '12', # asgAccelLoadMin - '13', # asgAccelLoadMax - '14', # asgInstancesLoadAvg - '15', # asgInstancesLoadMin - '16', # asgInstancesLoadMax - '17', # asgVpnThroughput - '18', # asgVpnConn - '19', # asgNatConnRate - '20', # asgNatConn - '21', # asgVsxCpu1MinAvg - ] - ), - 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_smo_counters', - service_name='ASG SMO counters %s', - discovery_function=discovery_checkpoint_asg_smo_counters, - check_function=check_checkpoint_asg_smo_counters, - check_ruleset_name='checkpoint_asg_smo_counters', - check_default_parameters={}, -)