From c3b84a51779cdc46b83acadad2121b716156d21b Mon Sep 17 00:00:00 2001
From: "th.l" <thl-cmk@outlook.com>
Date: Fri, 10 Sep 2021 12:19:05 +0200
Subject: [PATCH] update project

---
 agent_based/checkpoint_asg_smo_counters.py | 235 +++++++++++++++++++++
 checkpoint_asg_smo_counters.mkp            | Bin 2227 -> 2558 bytes
 packages/checkpoint_asg_smo_counters       |  14 +-
 3 files changed, 242 insertions(+), 7 deletions(-)
 create mode 100644 agent_based/checkpoint_asg_smo_counters.py

diff --git a/agent_based/checkpoint_asg_smo_counters.py b/agent_based/checkpoint_asg_smo_counters.py
new file mode 100644
index 0000000..f67256f
--- /dev/null
+++ b/agent_based/checkpoint_asg_smo_counters.py
@@ -0,0 +1,235 @@
+#!/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
+#
+#
+# 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 info
+# [[u'111802', u'0', u'84', u'91', u'N/A', u'0', u'0', u'9', u'79', u'1', u'0', u'0', u'0', u'1', u'0', u'7', u'0', u'0', u'0', u'0', u'N/A']]
+#
+import time
+from dataclasses import dataclass
+from typing import List, Dict, NamedTuple, Optional
+
+from cmk.base.plugins.agent_based.agent_based_api.v1 import (
+    register,
+    Service,
+    Result,
+    Metric,
+    State,
+    SNMPTree,
+    all_of,
+    startswith,
+    any_of,
+    equals,
+    check_levels,
+    render,
+)
+from cmk.base.plugins.agent_based.agent_based_api.v1.type_defs import (
+    DiscoveryResult,
+    CheckResult,
+    StringTable,
+)
+
+
+def parse_checkpoint_asg_smo_counters(string_table: StringTable) -> Dict[str, Dict[str, int]]:
+    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'] = {
+            'asgConcurrConn': int(asgConcurrConn),
+            'asgAccelConcurrConn': int(asgAccelConcurrConn),
+            'asgNonAccelConcurrConn': int(asgNonAccelConcurrConn),
+        }
+        items['Connection rate'] = {
+            'asgConnectionRate': int(asgConnectionRate),
+            'asgAccelConnectionRate': int(asgAccelConnectionRate),
+            'asgNonAccelConnectionRate': int(asgNonAccelConnectionRate),
+        }
+
+        items['Load'] = {
+            'asgLoad': int(asgLoad),
+            'asgAccelLoadAvg': int(asgAccelLoadAvg),
+            'asgAccelLoadMin': int(asgAccelLoadMin),
+            'asgAccelLoadMax': int(asgAccelLoadMax),
+        }
+
+        items['Instances load'] = {
+            'asgInstancesLoadAvg': int(asgInstancesLoadAvg),
+            'asgInstancesLoadMin': int(asgInstancesLoadMin),
+            'asgInstancesLoadMax': int(asgInstancesLoadMax),
+        }
+        items['NAT'] = {
+            'asgNatConnRate': int(asgNatConnRate),
+            'asgNatConn': int(asgNatConn),
+        }
+        items['VPN'] = {
+            'asgVpnThroughput': int(asgVpnThroughput),
+            'asgVpnConn': int(asgVpnConn),
+        }
+        items['Throughput'] = {
+            'asgThroughput': int(asgThroughput),
+        }
+        items['Packet rate'] = {
+            'asgPacketRate': int(asgPacketRate),
+        }
+    return items
+
+
+def discovery_checkpoint_asg_smo_counters(section:Dict[str, Dict[str, int]]) -> DiscoveryResult:
+    # sample parsed
+    # {
+    #  'Load': {'asgAccelLoadAvg': 0, 'asgAccelLoadMin': 0, 'asgLoad': 1, 'asgAccelLoadMax': 0},
+    #  'Connection rate': {'asgConnectionRate': 0, 'asgNonAccelConnectionRate': 0, 'asgAccelConnectionRate': 0},
+    #  'Instances load': {'asgInstancesLoadMin': 0, 'asgInstancesLoadMax': 7, 'asgInstancesLoadAvg': 1},
+    #  'Throughput': {'asgThroughput': 111802},
+    #  'Concurrent connections': {'asgAccelConcurrConn': 9, 'asgNonAccelConcurrConn': 79, 'asgConcurrConn': 91},
+    #  'NAT': {'asgNatConn': 0, 'asgNatConnRate': 0},
+    #  'VPN': {'asgVpnConn': 0, 'asgVpnThroughput': 0},
+    #  'Packet rate': {'asgPacketRate': 84}}
+    #
+
+    for item in section.keys():
+        yield Service(item=item)
+
+
+def check_checkpoint_asg_smo_counters(item, params, section:Dict[str, Dict[str, int]]) -> CheckResult:
+    try:
+        entry = section[item]
+    except KeyError:
+        yield Result(state=State.UNKNOWN, notice='Item not found in SNMP data')
+        return
+
+    for key in entry.keys():
+        yield Metric(value=entry[key], name=f'checkpoint_asg_mso_counters_{key}')
+
+    if item.lower() == 'concurrent connections':
+        yield Result(
+            state=State.OK,
+            summary=f'all/accelerated/non accelerated: {entry["asgConcurrConn"]:d}/{entry["asgAccelConcurrConn"]:d}/{entry["asgNonAccelConcurrConn"]:d}'
+        )
+
+    elif item.lower() == 'load':
+        yield Result(
+            state=State.OK,
+            summary=f'current/average/min/max: {entry["asgLoad"]:d}/{entry["asgAccelLoadAvg"]:d}/{entry["asgAccelLoadMin"]:d}/{entry["asgAccelLoadMax"]:d}'
+        )
+
+    elif item.lower() == 'connection rate':
+        yield Result(
+            state=State.OK,
+            summary=f'all/accelerated/non accelerated: {entry["asgConnectionRate"]:d}/{entry["asgAccelConnectionRate"]:d}/{entry["asgNonAccelConnectionRate"]:d}'
+        )
+
+    elif item.lower() == 'instances load':
+        yield Result(
+            state=State.OK,
+            summary=f'average/min/max: {entry["asgInstancesLoadAvg"]:d}/{entry["asgInstancesLoadMin"]:d}/{entry["asgInstancesLoadMax"]:d}'
+        )
+
+    elif item.lower() == 'throughput':
+        yield Result(
+            state=State.OK,
+            summary=f'Throughput: {entry["asgThroughput"]:d}'
+        )
+
+    elif item.lower() == 'packet rate':
+        yield Result(
+            state=State.OK,
+            summary=f'Packet Rate: {entry["asgPacketRate"]:d}'
+        )
+
+    elif item.lower() == 'nat':
+        yield Result(
+            state=State.OK,
+            summary=f'NAT Connections/NAT connection rate: {entry["asgNatConn"]:d}/{entry["asgNatConn"]:d}'
+        )
+
+    elif item.lower() == 'vpn':
+        yield Result(
+            state=State.OK,
+            summary=f'VPN Connections/VPN Throughput: {entry["asgVpnConn"]:d}/{entry["asgVpnThroughput"]:d}'
+        )
+
+
+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={},
+)
diff --git a/checkpoint_asg_smo_counters.mkp b/checkpoint_asg_smo_counters.mkp
index 8da2e24319a8daf55b64a9d9934c86bdf0132650..12a3e8c8a121b008617504a9f0b1343b8d0323d2 100644
GIT binary patch
delta 2553
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
Pe@XuZosfGX08jt`q(b<q

delta 2220
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

diff --git a/packages/checkpoint_asg_smo_counters b/packages/checkpoint_asg_smo_counters
index eb3414b..aa77ead 100644
--- a/packages/checkpoint_asg_smo_counters
+++ b/packages/checkpoint_asg_smo_counters
@@ -1,11 +1,11 @@
-{'author': u'Th.L. (thl-cmk[at]outlook[dot]com)',
- 'description': u'Monitor Check Point Maestro SMO performance counters',
+{'author': 'Th.L. (thl-cmk[at]outlook[dot]com)',
+ 'description': 'Monitor Check Point Maestro SMO performance counters\n',
  'download_url': 'http://thl-cmk.hopto.org/',
- 'files': {'checks': ['checkpoint_asg_smo_counters']},
+ 'files': {'agent_based': ['checkpoint_asg_smo_counters.py']},
  'name': 'checkpoint_asg_smo_counters',
  'num_files': 1,
- 'title': u'Check Point Maestro SMO performance counters',
- 'version': '20201110.v0.1',
- 'version.min_required': '1.4.0p38',
- 'version.packaged': '1.6.0p15',
+ 'title': 'Check Point Maestro SMO performance counters',
+ 'version': '20210910.v0.2',
+ 'version.min_required': '2.0.0',
+ 'version.packaged': '2021.07.14',
  'version.usable_until': None}
\ No newline at end of file
-- 
GitLab