From 75148184fdc54aeb724c81f8173389b0f6801737 Mon Sep 17 00:00:00 2001
From: "Th.L" <thl-cmk@outlook.com>
Date: Wed, 24 Mar 2021 17:55:26 +0100
Subject: [PATCH] update project

---
 agent_based/cisco_asa_connections.py         |   6 +-
 cisco_asa_connections.mkp                    | Bin 2468 -> 2785 bytes
 packages/cisco_asa_connections               |   5 +-
 web/plugins/metrics/cisco_asa_connections.py |  79 +++++--------------
 web/plugins/wato/cisco_fw_connections.py     |  52 ++++++++++++
 5 files changed, 77 insertions(+), 65 deletions(-)
 create mode 100644 web/plugins/wato/cisco_fw_connections.py

diff --git a/agent_based/cisco_asa_connections.py b/agent_based/cisco_asa_connections.py
index d6be45d..99c0818 100644
--- a/agent_based/cisco_asa_connections.py
+++ b/agent_based/cisco_asa_connections.py
@@ -18,7 +18,7 @@
 #             more specific "1.3.6.1.4.1.9.9.147.1.2.2.2.1.5.40"
 # 2020-02-24: added support for Cisco Firepower Threat Defense
 # 2020-04-28: changed item from Cisco ASA connections to Firewall connections --> more clear, with cisco_asa_conn check
-# 2021-03-24: rewrite for CMK 2.0 Check API
+# 2021-03-24: rewrite for CMK 2.0 Check API, added lower levels
 #
 # sample snmp walk
 #
@@ -70,7 +70,7 @@ def discovery_cisco_asa_connections(section: CiscoAsaFwConnections) -> Discovery
 def check_cisco_asa_connections(params, section: CiscoAsaFwConnections) -> CheckResult:
     yield from check_levels(
         section.current,
-        levels_lower=params.get('lower', None),
+        levels_lower=params.get('connections_lower', None),
         levels_upper=params.get('connections', None),
         metric_name='fw_connections_active',
         render_func=lambda v: '%s' % str(v),
@@ -79,7 +79,7 @@ def check_cisco_asa_connections(params, section: CiscoAsaFwConnections) -> Check
     yield from check_levels(
         section.peak,
         label='Max. since system startup',
-        metric_name='peak_connections',
+        metric_name='fw_connections_peak',
         render_func=lambda v: '%s' % str(v),
     )
 
diff --git a/cisco_asa_connections.mkp b/cisco_asa_connections.mkp
index 84f04cfc5cbc3059b0951346203c46a360bd8eb0..4bb7115c46edc6d269ff923a840d6fef5a40bcda 100644
GIT binary patch
delta 2758
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
E1+cSXUjP6A

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

diff --git a/packages/cisco_asa_connections b/packages/cisco_asa_connections
index 19c2cb7..b081f15 100644
--- a/packages/cisco_asa_connections
+++ b/packages/cisco_asa_connections
@@ -10,9 +10,10 @@
                 'connections\n',
  'download_url': 'https://thl-cmk.hopto.org',
  'files': {'agent_based': ['cisco_asa_connections.py'],
-           'web': ['plugins/metrics/cisco_asa_connections.py']},
+           'web': ['plugins/metrics/cisco_asa_connections.py',
+                   'plugins/wato/cisco_fw_connections.py']},
  'name': 'cisco_asa_connections',
- 'num_files': 2,
+ 'num_files': 3,
  'title': 'Monitor Cisco ASA connections',
  'version': '20210324.v.0.4',
  'version.min_required': '2.0.0',
diff --git a/web/plugins/metrics/cisco_asa_connections.py b/web/plugins/metrics/cisco_asa_connections.py
index 7c33f9e..779627f 100644
--- a/web/plugins/metrics/cisco_asa_connections.py
+++ b/web/plugins/metrics/cisco_asa_connections.py
@@ -1,77 +1,36 @@
-#!/usr/bin/python
-# -*- encoding: utf-8; py-indent-offset: 4 -*-
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
 #
 # Cisco ASA connections metrics plugin
 #
-# Author: Th.L.
-# Date  : 2018-01-09
-#
-
-#####################################################################################################################
-#
-# define units
-#
-#####################################################################################################################
 
+from cmk.gui.i18n import _
 
-#####################################################################################################################
-#
-# define metrics
-#
-#####################################################################################################################
+from cmk.gui.plugins.metrics import (
+    metric_info,
+    graph_info,
+)
 
-metric_info['cisco_asa_connections_current_connections'] = {
-    'title': _('current conections'),
+metric_info['fw_connections_active'] = {
+    'title': _('Active conections'),
     'unit': 'count',
     'color': '26/a',
 }
 
-
-metric_info['cisco_asa_connections_max_connections'] = {
-    'title': _('max conections'),
+metric_info['fw_connections_peak'] = {
+    'title': _('Peak conections'),
     'unit': 'count',
-    'color': '11/a',
+    'color': '16/a',
 }
 
-######################################################################################################################
-#
-# map perfdata to metric
-#
-######################################################################################################################
-
-check_metrics['check_mk-cisco_asa_connections'] = {
-    'current_connections': {'name': 'cisco_asa_connections_current_connections', },
-    'max_connections': {'name': 'cisco_asa_connections_max_connections',}
-}
-
-######################################################################################################################
-#
-# how to graph perdata
-#
-######################################################################################################################
-
-graph_info.append({
-    'title': _('connections'),
+graph_info['cisco_asa_connections'] = {
+    'title': _('Firewall connections'),
     'metrics': [
-        ('cisco_asa_connections_max_connections', 'line'),
-        ('cisco_asa_connections_current_connections', 'area'),
+        ('fw_connections_active', 'line'),
+        ('fw_connections_peak', 'area'),
     ],
     'scalars': [
-        ('cisco_asa_connections_current_connections:crit', _('crit level')),
-        ('cisco_asa_connections_current_connections:warn', _('warn level')),
+        ('fw_connections_active:crit', _('crit level')),
+        ('fw_connections_active:warn', _('warn level')),
     ],
-})
-
-######################################################################################################################
-#
-# define perf-o-meter
-#
-######################################################################################################################
-
-
-perfometer_info.append({
-    'type': 'logarithmic',
-    'metric': 'cisco_asa_connections_current_connections',
-    'half_value': 50000.0,
-    'exponent': 2,
-})
\ No newline at end of file
+}
diff --git a/web/plugins/wato/cisco_fw_connections.py b/web/plugins/wato/cisco_fw_connections.py
new file mode 100644
index 0000000..69a1391
--- /dev/null
+++ b/web/plugins/wato/cisco_fw_connections.py
@@ -0,0 +1,52 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# Copyright (C) 2019 tribe29 GmbH - License: GNU General Public License v2
+# This file is part of Checkmk (https://checkmk.com). It is subject to the terms and
+# conditions defined in the file COPYING, which is part of this source code package.
+
+from cmk.gui.i18n import _
+from cmk.gui.valuespec import (
+    Dictionary,
+    Integer,
+    Tuple,
+)
+
+from cmk.gui.plugins.wato import (
+    CheckParameterRulespecWithoutItem,
+    rulespec_registry,
+    RulespecGroupCheckParametersApplications,
+)
+
+
+def _parameter_valuespec_cisco_fw_connections():
+    return Dictionary(elements=[
+        ('connections',
+         Tuple(
+             help=_('This rule sets ipper limits to the current number of connections through a Cisco firewall.'),
+             title=_('Maximum number of firewall connections'),
+             elements=[
+                 Integer(title=_('Warning at'), unit='connections'),
+                 Integer(title=_('Critical at'), unit='connections'),
+             ],
+         )),
+        ('connections_lower',
+         Tuple(
+             help=_('This rule sets lower limits to the current number of connections through a Cisco firewall.'),
+             title=_('Minimum number of firewall connections'),
+             elements=[
+                 Integer(title=_('Warning if below'), unit='connections'),
+                 Integer(title=_('Critical if below'), unit='connections'),
+             ],
+         )),
+
+    ],)
+
+
+rulespec_registry.register(
+    CheckParameterRulespecWithoutItem(
+        check_group_name='cisco_fw_connections',
+        group=RulespecGroupCheckParametersApplications,
+        match_type='dict',
+        parameter_valuespec=_parameter_valuespec_cisco_fw_connections,
+        title=lambda: _('Cisco Firewall Connections'),
+    ))
\ No newline at end of file
-- 
GitLab