diff --git a/agent_based/checkpoint_ia_adquery.py b/agent_based/checkpoint_ia_adquery.py new file mode 100644 index 0000000000000000000000000000000000000000..c5d225b6e357f945504d83695c7abb0fb0a16e1f --- /dev/null +++ b/agent_based/checkpoint_ia_adquery.py @@ -0,0 +1,192 @@ +#!/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 : 2017-17-05 +# +# Check Point Identity Awareness status +# +# 2020-06-08: changed snmp-scan function +# +# snmpwalk sample +# .1.3.6.1.4.1.2620.1.38.25.1.1.1.0 = Counter32: 1 +# .1.3.6.1.4.1.2620.1.38.25.1.1.2.0 = Counter32: 2 +# .1.3.6.1.4.1.2620.1.38.25.1.1.3.0 = Counter32: 3 +# .1.3.6.1.4.1.2620.1.38.25.1.1.4.0 = Counter32: 4 +# .1.3.6.1.4.1.2620.1.38.25.1.1.5.0 = Counter32: 5 +# .1.3.6.1.4.1.2620.1.38.25.1.2.1.0 = Counter32: 0 +# .1.3.6.1.4.1.2620.1.38.25.1.2.2.0 = Counter32: 0 +# .1.3.6.1.4.1.2620.1.38.25.1.2.3.0 = Counter32: 0 +# .1.3.6.1.4.1.2620.1.38.25.1.2.4.0 = Counter32: 0 +# .1.3.6.1.4.1.2620.1.38.25.1.2.5.0 = Counter32: 0 +# .1.3.6.1.4.1.2620.1.38.25.1.3.1.0 = STRING: "doamin1.de" +# .1.3.6.1.4.1.2620.1.38.25.1.3.2.0 = STRING: "doamin1.de" +# .1.3.6.1.4.1.2620.1.38.25.1.3.3.0 = STRING: "domain1.de" +# .1.3.6.1.4.1.2620.1.38.25.1.3.4.0 = STRING: "domain2.de" +# .1.3.6.1.4.1.2620.1.38.25.1.3.5.0 = STRING: "domain2.de" +# .1.3.6.1.4.1.2620.1.38.25.1.4.1.0 = IpAddress: 10.1.1.13 +# .1.3.6.1.4.1.2620.1.38.25.1.4.2.0 = IpAddress: 10.1.1.14 +# .1.3.6.1.4.1.2620.1.38.25.1.4.3.0 = IpAddress: 10.1.1.31 +# .1.3.6.1.4.1.2620.1.38.25.1.4.4.0 = IpAddress: 10.1.1.16 +# .1.3.6.1.4.1.2620.1.38.25.1.4.5.0 = IpAddress: 10.1.1.17 +# .1.3.6.1.4.1.2620.1.38.25.1.5.1.0 = Counter32: 77462 +# .1.3.6.1.4.1.2620.1.38.25.1.5.2.0 = Counter32: 85917 +# .1.3.6.1.4.1.2620.1.38.25.1.5.3.0 = Counter32: 58378 +# .1.3.6.1.4.1.2620.1.38.25.1.5.4.0 = Counter32: 4810 +# .1.3.6.1.4.1.2620.1.38.25.1.5.5.0 = Counter32: 6256 +# +# sample info +# [[u'1', u'0', u'domain1.de', u'10.1.1.13', u'77462'], +# [u'2', u'0', u'domain1.de', u'10.1.1.14', u'85917'], +# [u'3', u'0', u'domain1.de', u'10.1.1.31', u'58378'], +# [u'4', u'0', u'domain2.de', u'10.1.1.16', u'4810'], +# [u'5', u'0', u'domain2.de', u'10.1.1.17', u'6256']] +# +import time +from dataclasses import dataclass +from typing import Optional, Dict + +from cmk.base.plugins.agent_based.agent_based_api.v1 import ( + register, + Service, + check_levels, + SNMPTree, + all_of, + startswith, + any_of, + equals, + get_rate, + GetRateError, + get_value_store, + Result, + State, +) +from cmk.base.plugins.agent_based.agent_based_api.v1.type_defs import ( + DiscoveryResult, + CheckResult, + StringTable, +) + + +@dataclass +class CheckpointIaDc: + status_code: int + status_str: str + events: int + + +_dcstatus = { + '0': 'Ok', + '1': 'Bad Credentials', + '2': 'Connectivity Error', + '3': 'Internal Error', + '4': 'Connection Time Out' +} + + +def parse_checkpoint_ia_adquery(string_table: StringTable) -> Optional[Dict[str, Dict[str, CheckpointIaDc]]]: + domains = {} + for entry in string_table: + try: + status, domain, ipaddr, events = entry + except ValueError: + return + + if len(ipaddr.split('.')) == 4: + if not domains.get(domain): + domains[domain] = {} + + domains[domain].update({ + ipaddr: CheckpointIaDc( + status_code=int(status), + status_str=_dcstatus.get(status, f'unknown: {status}'), + events=int(events) + ) + }) + return domains + + +def discovery_checkpoint_ia_adquery(section: Dict[str, Dict[str, CheckpointIaDc]]) -> DiscoveryResult: + for key in section.keys(): + yield Service(item=key) + + +def check_checkpoint_ia_adquery(item, params, section: Dict[str, Dict[str, CheckpointIaDc]]) -> CheckResult: + try: + dcs = section[item] + except KeyError: + return + + events_sum = 0 + now_time = time.time() + value_store = get_value_store() + + for key in dcs.keys(): + dc = dcs[key] + events_sum += dc.events + + dc_ip_address = key.replace('.', '_') + try: + value = get_rate(value_store, f'checkpoint_ia_adquery_{dc_ip_address}', now_time, dc.events, raise_overflow=True) + except GetRateError: + value = 0 + yield from check_levels( + value=value, + label=f'DC {key} Events', + metric_name=f'checkpoint_ia_adquery_{dc_ip_address}', + render_func=lambda v: f'{v:.2f}/s', + notice_only=True + ) + + if not dc.status_code == 0: + yield Result(state=State.CRIT, notice=f'DC {key} connection status: {dc.status_str}') + #else: + # yield Result(state=State.OK, notice=f'DC {key} connection status: {dc.status_str}') + + yield Result(state=State.OK, summary=f'# of DCs: {len(dcs)}', details=' ') + + try: + value = get_rate(value_store, f'checkpoint_ia_adquery_events_sum', now_time, events_sum, raise_overflow=True) + except GetRateError: + value = 0 + yield from check_levels( + value=value, + label='Events (sum)', + metric_name=f'checkpoint_ia_adquery_events_sum', + render_func=lambda v: f'{v:.2f}/s', + ) + + +register.snmp_section( + name='checkpoint_ia_adquery', + parse_function=parse_checkpoint_ia_adquery, + fetch=SNMPTree( + base='.1.3.6.1.4.1.2620.1.38.25.1', # CHECKPOINT-MIB::identityAwarenessADQueryStatusEntry + oids=[ + '2', # identityAwarenessADQueryStatusCurrStatus + '3', # identityAwarenessADQueryStatusDomainName + '4', # identityAwarenessADQueryStatusDomainIP + '5', # identityAwarenessADQueryStatusEvents + ] + ), + 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_ia_adquery', + service_name='Identity Awareness AD Domain %s', + discovery_function=discovery_checkpoint_ia_adquery, + check_function=check_checkpoint_ia_adquery, + check_default_parameters={ + }, + check_ruleset_name='checkpoint_ia_adquery', +) diff --git a/agent_based/checkpoint_identity_awareness.py b/agent_based/checkpoint_identity_awareness.py new file mode 100644 index 0000000000000000000000000000000000000000..0c8c79947c98c482e0e99d84e860dee708e31f64 --- /dev/null +++ b/agent_based/checkpoint_identity_awareness.py @@ -0,0 +1,233 @@ +#!/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 : 2017-17-05 +# +# Check Point Identity Awareness status +# +# 2018-03-15 : code cleanup, added identity counters 39-44 +# 2020-06-08 : changed snmp-scan function +# +# snmpwalk sample +# +# .1.3.6.1.4.1.2620.1.38.1.0 = STRING: "Identity Awareness" +# .1.3.6.1.4.1.2620.1.38.2.0 = Gauge32: 149 +# .1.3.6.1.4.1.2620.1.38.3.0 = Gauge32: 0 +# .1.3.6.1.4.1.2620.1.38.4.0 = Gauge32: 0 +# .1.3.6.1.4.1.2620.1.38.5.0 = Gauge32: 0 +# .1.3.6.1.4.1.2620.1.38.6.0 = Gauge32: 0 +# .1.3.6.1.4.1.2620.1.38.7.0 = Gauge32: 149 +# .1.3.6.1.4.1.2620.1.38.8.0 = Gauge32: 188 +# .1.3.6.1.4.1.2620.1.38.9.0 = Gauge32: 0 +# .1.3.6.1.4.1.2620.1.38.10.0 = Gauge32: 0 +# .1.3.6.1.4.1.2620.1.38.11.0 = Gauge32: 337 +# .1.3.6.1.4.1.2620.1.38.12.0 = Gauge32: 0 +# .1.3.6.1.4.1.2620.1.38.13.0 = Gauge32: 0 +# .1.3.6.1.4.1.2620.1.38.14.0 = Gauge32: 0 +# .1.3.6.1.4.1.2620.1.38.15.0 = Gauge32: 0 +# .1.3.6.1.4.1.2620.1.38.16.0 = Gauge32: 221 +# .1.3.6.1.4.1.2620.1.38.17.0 = Gauge32: 44 +# .1.3.6.1.4.1.2620.1.38.18.0 = Gauge32: 0 +# .1.3.6.1.4.1.2620.1.38.19.0 = Gauge32: 0 +# .1.3.6.1.4.1.2620.1.38.20.0 = Gauge32: 0 +# .1.3.6.1.4.1.2620.1.38.21.0 = Gauge32: 2272 +# .1.3.6.1.4.1.2620.1.38.22.0 = Gauge32: 68786 +# .1.3.6.1.4.1.2620.1.38.23.0 = Gauge32: 0 +# .1.3.6.1.4.1.2620.1.38.39.0 = Gauge32: 0 +# .1.3.6.1.4.1.2620.1.38.40.0 = Gauge32: 0 +# .1.3.6.1.4.1.2620.1.38.41.0 = Gauge32: 0 +# .1.3.6.1.4.1.2620.1.38.42.0 = Gauge32: 0 +# .1.3.6.1.4.1.2620.1.38.43.0 = Gauge32: 0 +# .1.3.6.1.4.1.2620.1.38.44.0 = Gauge32: 0 +# .1.3.6.1.4.1.2620.1.38.101.0 = Gauge32: 0 +# .1.3.6.1.4.1.2620.1.38.102.0 = STRING: "OK" +# .1.3.6.1.4.1.2620.1.38.103.0 = STRING: "OK" +# +# sample info +# [[u'Identity Awareness', u'149', u'0', u'0', u'0', u'0', u'149', u'188', u'0', u'0', u'337', u'0', u'0', u'0', u'0', +# u'221', u'44', u'0', u'0', u'0', u'2272', u'68786', u'0', u'0', u'0', u'0', u'0', u'0', u'0', u'0', u'OK', u'OK']] +# + +import time +from dataclasses import dataclass +from typing import Optional, Dict + +from cmk.base.plugins.agent_based.agent_based_api.v1 import ( + register, + Service, + SNMPTree, + all_of, + startswith, + any_of, + equals, + get_rate, + GetRateError, + get_value_store, + Result, + State, + Metric, +) +from cmk.base.plugins.agent_based.agent_based_api.v1.type_defs import ( + DiscoveryResult, + CheckResult, + StringTable, +) + + +@dataclass +class CheckpointIaStatus: + iaStatus: int + iaStatusShortDesc: str + iaStatusLongDesc: str + metrics_count: Dict[str, int] + metrics_rate: Dict[str, int] + + +def parse_checkpoint_identity_awareness(string_table: StringTable) -> Optional[CheckpointIaStatus]: + try: + iaAuthUsers, iaUnAuthUsers, iaAuthUsersKerberos, iaAuthMachKerberos, iaAuthUsersPass, \ + iaAuthUsersADQuery, iaAuthMachADQuery, iaLoggedInAgent, iaLoggedInCaptivePortal, iaLoggedInADQuery, \ + iaAntiSpoffProtection, iaSuccUserLoginKerberos, iaSuccMachLoginKerberos, iaSuccUserLoginPass, \ + iaSuccUserLoginADQuery, iaSuccMachLoginADQuery, iaUnSuccUserLoginKerberos, iaUnSuccMachLoginKerberos, \ + iaUnSuccUserLoginPass, iaSuccUserLDAP, iaUnSuccUserLDAP, iaDataTrans, iaRADIUSAccounting, \ + iaIdentityCollectorActiveDirectory, iaIdentityCollectorCiscoISE, iaTerminalServer, iaRemoteAccess, \ + iaIdentityWebAPI, iaStatus, iaStatusShortDesc, iaStatusLongDesc = string_table[0] + except IndexError: + return + + return CheckpointIaStatus( + iaStatus=int(iaStatus), + iaStatusShortDesc=iaStatusShortDesc, + iaStatusLongDesc=iaStatusLongDesc, + metrics_count={ + 'iaAuthUsers': int(iaAuthUsers), + 'iaUnAuthUsers': int(iaUnAuthUsers), + 'iaAuthUsersKerberos': int(iaAuthUsersKerberos), + 'iaAuthMachKerberos': int(iaAuthMachKerberos), + 'iaAuthUsersPass': int(iaAuthUsersPass), + 'iaAuthUsersADQuery': int(iaAuthUsersADQuery), + 'iaAuthMachADQuery': int(iaAuthMachADQuery), + 'iaLoggedInAgent': int(iaLoggedInAgent), + 'iaLoggedInCaptivePortal': int(iaLoggedInCaptivePortal), + 'iaLoggedInADQuery': int(iaLoggedInADQuery), + 'iaAntiSpoffProtection': int(iaAntiSpoffProtection), + 'iaSuccUserLoginKerberos': int(iaSuccUserLoginKerberos), + 'iaSuccMachLoginKerberos': int(iaSuccMachLoginKerberos), + 'iaSuccUserLoginPass': int(iaSuccUserLoginPass), + 'iaSuccUserLoginADQuery': int(iaSuccUserLoginADQuery), + 'iaSuccMachLoginADQuery': int(iaSuccMachLoginADQuery), + 'iaUnSuccUserLoginKerberos': int(iaUnSuccUserLoginKerberos), + 'iaUnSuccMachLoginKerberos': int(iaUnSuccMachLoginKerberos), + 'iaUnSuccUserLoginPass': int(iaUnSuccUserLoginPass), + 'iaDataTrans': int(iaDataTrans), + 'iaRADIUSAccounting': int(iaRADIUSAccounting) if iaRADIUSAccounting.isdigit() else None, + 'iaIdentityCollectorActiveDirectory': int(iaIdentityCollectorActiveDirectory) if iaIdentityCollectorActiveDirectory.isdigit() else None, + 'iaIdentityCollectorCiscoISE': int(iaIdentityCollectorCiscoISE) if iaIdentityCollectorCiscoISE.isdigit() else None, + 'iaTerminalServer': int(iaTerminalServer) if iaTerminalServer.isdigit() else None, + 'iaRemoteAccess': int(iaRemoteAccess) if iaRemoteAccess.isdigit() else None, + 'iaIdentityWebAPI': int(iaIdentityWebAPI) if iaIdentityWebAPI.isdigit() else None, + }, + metrics_rate={ + 'iaSuccUserLDAP': int(iaSuccUserLDAP), + 'iaUnSuccUserLDAP':int(iaUnSuccUserLDAP), + }, + ) + + +def discovery_checkpoint_identity_awareness(section: CheckpointIaStatus) -> DiscoveryResult: + yield Service() + + +def check_checkpoint_identity_awareness(params, section: CheckpointIaStatus) -> CheckResult: + + yield Result(state=State.OK, summary=f'Authenticated users: {section.metrics_count["iaAuthUsers"]}') + yield Result(state=State.OK, summary=f'Unauthenticated users: {section.metrics_count["iaUnAuthUsers"]}') + + if not section.iaStatus == 0: + yield Result(state=State.WARN, notice=section.iaStatusLongDesc) + + for key, value in section.metrics_count.items(): + if value is not None and key not in params['ignore_counters']: + yield Metric( + value=value, + name=f'checkpoint_identity_awareness_{key}', + ) + + now_time = time.time() + value_store = get_value_store() + for key, value in section.metrics_rate.items(): + if value is not None and key not in params['ignore_counters']: + try: + value = get_rate(value_store, f'checkpoint_identity_awareness_{key}', now_time, value, raise_overflow=True) + except GetRateError: + value = 0 + yield Metric( + value=value, + name=f'checkpoint_identity_awareness_{key}', + ) + + +register.snmp_section( + name='checkpoint_identity_awareness', + parse_function=parse_checkpoint_identity_awareness, + fetch=SNMPTree( + base='.1.3.6.1.4.1.2620.1.38', # CHECKPOINT-MIB::identityAwareness + oids=[ + '2', # identityAwarenessAuthUsers + '3', # identityAwarenessUnAuthUsers + '4', # identityAwarenessAuthUsersKerberos + '5', # identityAwarenessAuthMachKerberos + '6', # identityAwarenessAuthUsersPass + '7', # identityAwarenessAuthUsersADQuery + '8', # identityAwarenessAuthMachADQuery + '9', # identityAwarenessLoggedInAgent + '10', # identityAwarenessLoggedInCaptivePortal + '11', # identityAwarenessLoggedInADQuery + '12', # identityAwarenessAntiSpoffProtection + '13', # identityAwarenessSuccUserLoginKerberos + '14', # identityAwarenessSuccMachLoginKerberos + '15', # identityAwarenessSuccUserLoginPass + '16', # identityAwarenessSuccUserLoginADQuery + '17', # identityAwarenessSuccMachLoginADQuery + '18', # identityAwarenessUnSuccUserLoginKerberos + '19', # identityAwarenessUnSuccMachLoginKerberos + '20', # identityAwarenessUnSuccUserLoginPass + '21', # identityAwarenessSuccUserLDAP + '22', # identityAwarenessUnSuccUserLDAP + '23', # identityAwarenessDataTrans + + '39', # identityAwarenessRADIUSAccounting + '40', # identityAwarenessIdentityCollectorActiveDirectory + '41', # identityAwarenessIdentityCollectorCiscoISE + '42', # identityAwarenessTerminalServer + '43', # identityAwarenessRemoteAccess + '44', # identityAwarenessIdentityWebAPI + + '101', # identityAwarenessStatus + '102', # identityAwarenessStatusShortDesc + '103', # identityAwarenessStatusLongDesc + ] + ), + 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_identity_awareness', + service_name='Identity Awareness status', + discovery_function=discovery_checkpoint_identity_awareness, + check_function=check_checkpoint_identity_awareness, + check_default_parameters={ + 'ignore_counters' : [], + }, + check_ruleset_name='checkpoint_identity_awareness', +) diff --git a/checkpoint_identity_awareness.mkp b/checkpoint_identity_awareness.mkp index c418891959721aec540ef31b364c218367a9e62a..8e50f8e104fdea023967752f890c35cbd86705fb 100644 Binary files a/checkpoint_identity_awareness.mkp and b/checkpoint_identity_awareness.mkp differ diff --git a/packages/checkpoint_identity_awareness b/packages/checkpoint_identity_awareness index 31f53e2cf5f0c3f8f3f25e052fad54a2d4ffecfd..a6cd71955c4ec119f35277393b335cf16f1eda97 100644 --- a/packages/checkpoint_identity_awareness +++ b/packages/checkpoint_identity_awareness @@ -1,14 +1,17 @@ -{'author': u'Th.L. (thl-cmk[at]outlook[dot]com)', - 'description': u'Monitors status of Check Point Identity Awareness.\nCreates one check for the global IA status and one check for each AD Query (LDAP) domain.\n', +{'author': 'Th.L. (thl-cmk[at]outlook[dot]com)', + 'description': 'Monitors status of Check Point Identity Awareness.\n' + 'Creates one check for the global IA status and one check for ' + 'each AD Query (LDAP) domain.\n', 'download_url': 'https://thl-cmk.hopto.org', - 'files': {'checks': ['checkpoint_ia_adquery', - 'checkpoint_identity_awareness'], + 'files': {'agent_based': ['checkpoint_ia_adquery.py', + 'checkpoint_identity_awareness.py'], 'web': ['plugins/wato/checkpoint_identity_awareness.py', 'plugins/metrics/checkpoint_identity_awareness.py', 'plugins/metrics/checkpoint_ia_adquery.py']}, 'name': 'checkpoint_identity_awareness', 'num_files': 5, - 'title': u'Check Point Identity Awareness checks', - 'version': '20200608.v.0.1d', - 'version.min_required': '1.2.8b8', - 'version.packaged': '1.4.0p38'} \ No newline at end of file + 'title': 'Check Point Identity Awareness checks', + 'version': '20210825.v.0.2', + 'version.min_required': '2.0.0', + 'version.packaged': '2021.07.14', + 'version.usable_until': None} \ No newline at end of file diff --git a/web/plugins/metrics/checkpoint_ia_adquery.py b/web/plugins/metrics/checkpoint_ia_adquery.py index cc9811a0b32b7c72c658f76d88a8356c6502a7a9..0aaf9e1cb2b2bf48c7db5f4440883491add6d855 100644 --- a/web/plugins/metrics/checkpoint_ia_adquery.py +++ b/web/plugins/metrics/checkpoint_ia_adquery.py @@ -1,5 +1,5 @@ -#!/usr/bin/python -# -*- encoding: utf-8; py-indent-offset: 4 -*- +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- # # License: GNU General Public License v2 # @@ -10,6 +10,15 @@ # Check Point Identity Awareness AD Query metrics plugin # checkpoint_ia_query # + +from cmk.gui.i18n import _ + +from cmk.gui.plugins.metrics import ( + metric_info, + graph_info, + perfometer_info, +) + metric_info['checkpoint_ia_adquery_summary'] = { 'title': _('Events summary'), 'unit': '1/s', @@ -56,51 +65,45 @@ metric_info['checkpoint_ia_adquery_dc_10_250_1_113'] = { # # # -check_metrics['check_mk-checkpoint_ia_adquery'] = { - 'events_sum': {'name': 'checkpoint_ia_adquery_summary', }, - 'dc_10_140_110_1': {'name': 'checkpoint_ia_adquery_dc_10_140_110_1', }, - 'dc_10_140_110_2': {'name': 'checkpoint_ia_adquery_dc_10_140_110_2', }, - 'dc_10_215_2_252': {'name': 'checkpoint_ia_adquery_dc_10_215_2_252', }, - 'dc_10_215_2_253': {'name': 'checkpoint_ia_adquery_dc_10_215_2_253', }, - 'dc_10_225_110_240': {'name': 'checkpoint_ia_adquery_dc_10_225_110_240', }, - 'dc_10_250_1_112': {'name': 'checkpoint_ia_adquery_dc_10_250_1_112', }, - 'dc_10_250_1_113': {'name': 'checkpoint_ia_adquery_dc_10_250_1_113', }, -} -# igepa graph -graph_info.append({ + +graph_info['checkpoint_ia_adquery_dc'] = { 'title': _('Check Point Identity Awareness AD queries'), 'metrics': [ ('checkpoint_ia_adquery_summary', 'line'), ('checkpoint_ia_adquery_dc_10_250_1_112', 'stack'), ('checkpoint_ia_adquery_dc_10_250_1_113', 'stack'), ], -}) - -# hri graph -graph_info.append({ - 'title': _('Check Point Identity Awareness AD queries'), - 'metrics': [ - ('checkpoint_ia_adquery_summary', 'line'), - ('checkpoint_ia_adquery_dc_10_140_110_1', 'stack'), - ('checkpoint_ia_adquery_dc_10_140_110_2', 'stack'), + 'optional_metrics': [ + 'checkpoint_ia_adquery_dc_10_250_1_112', + 'checkpoint_ia_adquery_dc_10_250_1_113', ], -}) +} -# h&r graph -graph_info.append({ - 'title': _('Check Point Identity Awareness AD queries'), - 'metrics': [ - ('checkpoint_ia_adquery_summary', 'line'), - ('checkpoint_ia_adquery_dc_10_215_2_252', 'stack'), - ('checkpoint_ia_adquery_dc_10_215_2_253', 'stack'), - ('checkpoint_ia_adquery_dc_10_225_110_240', 'stack'), - ], -}) + +# graph_info.append({ +# 'title': _('Check Point Identity Awareness AD queries'), +# 'metrics': [ +# ('checkpoint_ia_adquery_summary', 'line'), +# ('checkpoint_ia_adquery_dc_10_140_110_1', 'stack'), +# ('checkpoint_ia_adquery_dc_10_140_110_2', 'stack'), +# ], +# }) + +# graph_info.append({ +# 'title': _('Check Point Identity Awareness AD queries'), +# 'metrics': [ +# ('checkpoint_ia_adquery_summary', 'line'), +# ('checkpoint_ia_adquery_dc_10_215_2_252', 'stack'), +# ('checkpoint_ia_adquery_dc_10_215_2_253', 'stack'), +# ('checkpoint_ia_adquery_dc_10_225_110_240', 'stack'), +# ], +# }) perfometer_info.append({ 'type': 'linear', - 'segments': ['checkpoint_ia_adquery_summary', - ], + 'segments': [ + 'checkpoint_ia_adquery_summary', + ], 'total': 100, }) diff --git a/web/plugins/metrics/checkpoint_identity_awareness.py b/web/plugins/metrics/checkpoint_identity_awareness.py index 3f37f854ddd08f4eefa9138eaec1e206932ae691..e3cde3d22bfc2141ec3cfdd1d81d2cd0a3827b7e 100644 --- a/web/plugins/metrics/checkpoint_identity_awareness.py +++ b/web/plugins/metrics/checkpoint_identity_awareness.py @@ -1,5 +1,5 @@ -#!/usr/bin/python -# -*- encoding: utf-8; py-indent-offset: 4 -*- +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- # # License: GNU General Public License v2 # @@ -11,6 +11,14 @@ # checkpoint_identity_awareness # +from cmk.gui.i18n import _ + +from cmk.gui.plugins.metrics import ( + metric_info, + graph_info, + perfometer_info, +) + metric_info['checkpoint_identity_awareness_iaSuccUserLoginADQuery'] = { 'title': _('Successfull ADQuery user login attempts'), 'unit': 'count', @@ -157,44 +165,7 @@ metric_info['checkpoint_identity_awareness_iaDataTrans'] = { 'color': '42/a', } - -check_metrics['check_mk-checkpoint_identity_awareness'] = { - 'iaSuccUserLoginADQuery': {'name': 'checkpoint_identity_awareness_iaSuccUserLoginADQuery', 'auto_graph': False }, - 'iaSuccMachLoginADQuery': {'name': 'checkpoint_identity_awareness_iaSuccMachLoginADQuery', 'auto_graph': False }, - 'iaSuccUserLoginKerberos': {'name': 'checkpoint_identity_awareness_iaSuccUserLoginKerberos', 'auto_graph': False }, - 'iaSuccMachLoginKerberos': {'name': 'checkpoint_identity_awareness_iaSuccMachLoginKerberos', 'auto_graph': False }, - 'iaSuccUserLoginPass': {'name': 'checkpoint_identity_awareness_iaSuccUserLoginPass', 'auto_graph': False }, - 'iaUnSuccUserLoginKerberos': {'name': 'checkpoint_identity_awareness_iaUnSuccUserLoginKerberos', 'auto_graph': False }, - 'iaUnSuccMachLoginKerberos': {'name': 'checkpoint_identity_awareness_iaUnSuccMachLoginKerberos', 'auto_graph': False }, - 'iaUnSuccUserLoginPass': {'name': 'checkpoint_identity_awareness_iaUnSuccUserLoginPass', 'auto_graph': False }, - - 'iaSuccUserLDAP': {'name': 'checkpoint_identity_awareness_iaSuccUserLDAP', 'auto_graph': False }, - 'iaUnSuccUserLDAP': {'name': 'checkpoint_identity_awareness_iaUnSuccUserLDAP', 'auto_graph': False }, - - 'iaAuthUsers': {'name': 'checkpoint_identity_awareness_iaAuthUsers', 'auto_graph': False }, - 'iaAuthUsersADQuery': {'name': 'checkpoint_identity_awareness_iaAuthUsersADQuery', 'auto_graph': False }, - 'iaAuthUsersKerberos': {'name': 'checkpoint_identity_awareness_iaAuthUsersKerberos', 'auto_graph': False }, - 'iaAuthMachADQuery': {'name': 'checkpoint_identity_awareness_iaAuthMachADQuery', 'auto_graph': False }, - 'iaAuthMachKerberos': {'name': 'checkpoint_identity_awareness_iaAuthMachKerberos', 'auto_graph': False }, - 'iaAuthUsersPass': {'name': 'checkpoint_identity_awareness_iaAuthUsersPass', 'auto_graph': False }, - 'iaUnAuthUsers': {'name': 'checkpoint_identity_awareness_iaUnAuthUsers', 'auto_graph': False }, - - 'iaLoggedInADQuery': {'name': 'checkpoint_identity_awareness_iaLoggedInADQuery', 'auto_graph': False }, - 'iaLoggedInAgent': {'name': 'checkpoint_identity_awareness_iaLoggedInAgent', 'auto_graph': False }, - 'iaTerminalServer': {'name': 'checkpoint_identity_awareness_iaTerminalServer', 'auto_graph': False}, - 'iaRemoteAccess': {'name': 'checkpoint_identity_awareness_iaRemoteAccess', 'auto_graph': False}, - 'iaLoggedInCaptivePortal': {'name': 'checkpoint_identity_awareness_iaLoggedInCaptivePortal', 'auto_graph': False }, - 'iaIdentityCollectorCiscoISE': {'name': 'checkpoint_identity_awareness_iaIdentityCollectorCiscoISE', 'auto_graph': False}, - 'iaIdentityWebAPI': {'name': 'checkpoint_identity_awareness_iaIdentityWebAPI', 'auto_graph': False}, - 'iaRADIUSAccounting': {'name': 'checkpoint_identity_awareness_iaRADIUSAccounting', 'auto_graph': False}, - 'iaIdentityCollectorActiveDirectory': {'name': 'checkpoint_identity_awareness_iaIdentityCollectorActiveDirectory', 'auto_graph': False}, - - 'iaAntiSpoffProtection': {'name': 'checkpoint_identity_awareness_iaAntiSpoffProtection', 'auto_graph': False}, - - 'iaDataTrans': {'name': 'checkpoint_identity_awareness_iaDataTrans', 'auto_graph': False}, -} - -graph_info.append({ +graph_info['checkpoint_identity_awareness_login_attempts'] = { 'title': _('Check Point Identity Awareness login attempts'), 'metrics': [ ('checkpoint_identity_awareness_iaUnSuccUserLoginPass', '-stack'), @@ -206,17 +177,31 @@ graph_info.append({ ('checkpoint_identity_awareness_iaSuccMachLoginADQuery', 'stack'), ('checkpoint_identity_awareness_iaSuccUserLoginADQuery', 'stack'), ], -}) + 'optional_metrics': [ + 'checkpoint_identity_awareness_iaUnSuccUserLoginPass', + 'checkpoint_identity_awareness_iaUnSuccMachLoginKerberos', + 'checkpoint_identity_awareness_iaUnSuccUserLoginKerberos', + 'checkpoint_identity_awareness_iaSuccUserLoginPass', + 'checkpoint_identity_awareness_iaSuccMachLoginKerberos', + 'checkpoint_identity_awareness_iaSuccUserLoginKerberos', + 'checkpoint_identity_awareness_iaSuccMachLoginADQuery', + 'checkpoint_identity_awareness_iaSuccUserLoginADQuery', + ], +} -graph_info.append({ +graph_info['checkpoint_identity_awareness_ldap_queries'] = { 'title': _('Check Point Identity Awareness LDAP queries'), 'metrics': [ ('checkpoint_identity_awareness_iaUnSuccUserLDAP', '-area'), ('checkpoint_identity_awareness_iaSuccUserLDAP', 'area'), ], -}) + 'optional_metrics': [ + 'checkpoint_identity_awareness_iaUnSuccUserLDAP', + 'checkpoint_identity_awareness_iaSuccUserLDAP', + ] +} -graph_info.append({ +graph_info['checkpoint_identity_awareness_auth_user_machine'] = { 'title': _('Check Point Identity Awareness authenticated/unauthenticated users/machines'), 'metrics': [ ('checkpoint_identity_awareness_iaUnAuthUsers', 'stack'), @@ -227,9 +212,18 @@ graph_info.append({ ('checkpoint_identity_awareness_iaAuthUsersADQuery', 'stack'), ('checkpoint_identity_awareness_iaAuthUsers', 'line'), ], -}) + 'optional_metrics': [ + 'checkpoint_identity_awareness_iaUnAuthUsers', + 'checkpoint_identity_awareness_iaAuthUsersPass', + 'checkpoint_identity_awareness_iaAuthMachKerberos', + 'checkpoint_identity_awareness_iaAuthMachADQuery', + 'checkpoint_identity_awareness_iaAuthUsersKerberos', + 'checkpoint_identity_awareness_iaAuthUsersADQuery', + 'checkpoint_identity_awareness_iaAuthUsers', + ] +} -graph_info.append({ +graph_info['checkpoint_identity_awareness_loggid_in_users'] = { 'title': _('Check Point Identity Awareness logged in users with'), 'metrics': [ ('checkpoint_identity_awareness_iaLoggedInCaptivePortal', 'stack'), @@ -242,7 +236,18 @@ graph_info.append({ ('checkpoint_identity_awareness_iaLoggedInAgent', 'stack'), ('checkpoint_identity_awareness_iaLoggedInADQuery', 'stack'), ], -}) + 'optional_metrics': [ + 'checkpoint_identity_awareness_iaLoggedInCaptivePortal', + 'checkpoint_identity_awareness_iaRADIUSAccounting', + 'checkpoint_identity_awareness_iaIdentityWebAPI', + 'checkpoint_identity_awareness_iaIdentityCollectorActiveDirectory', + 'checkpoint_identity_awareness_iaIdentityCollectorCiscoISE', + 'checkpoint_identity_awareness_iaRemoteAccess', + 'checkpoint_identity_awareness_iaTerminalServer', + 'checkpoint_identity_awareness_iaLoggedInAgent', + 'checkpoint_identity_awareness_iaLoggedInADQuery', + ], +} #graph_info.append({ # 'title': _('Check Point Identity Awareness users with an active Traffic Anti-Spoffing protection'), diff --git a/web/plugins/wato/checkpoint_identity_awareness.py b/web/plugins/wato/checkpoint_identity_awareness.py index f75fd95c79d6efea99f410e8361fff41f942dff1..1c3dc7c705c327cb3acebb2b4fa28a229ddef614 100644 --- a/web/plugins/wato/checkpoint_identity_awareness.py +++ b/web/plugins/wato/checkpoint_identity_awareness.py @@ -1,5 +1,5 @@ -#!/usr/bin/python -# -*- encoding: utf-8; py-indent-offset: 4 -*- +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- # # License: GNU General Public License v2 # @@ -9,7 +9,27 @@ # # Check_MK checkpoint_identity_awareness WATO plugin # -ignorecounters = [ + +from cmk.gui.i18n import _ +from cmk.gui.valuespec import ( + Dictionary, + Integer, + TextAscii, + FixedValue, + ListChoice, + ListOf, + Tuple, + TextUnicode, + MonitoringState, +) + +from cmk.gui.plugins.wato import ( + CheckParameterRulespecWithItem, + rulespec_registry, + RulespecGroupCheckParametersNetworking, +) + +_ignorecounters = [ # ('iaAuthUsers', 'Authenticated users and machines'), # will be used in perf-o-meter ('iaAuthUsersPass', 'Authenticated users by name and password'), ('iaAuthUsersADQuery', 'Authenticated users by ADQuery'), @@ -42,24 +62,27 @@ ignorecounters = [ ('iaDataTrans', 'How much data did the gateway transmitted'), ] -register_check_parameters(subgroup_applications, - 'checkpoint_identity_awareness', - _('Check Point Identity Awareness'), - Dictionary( - title=_('Check Point Identity Awareness status'), - elements=[ - ('ignore_counters', - ListChoice( - title=_('list of counters to ignore'), - label=_('list of counters to ignore'), - help=_('Counters to remove from performance data. ' - 'Metrics file (~/local/share/check_mk/web/plugins/metrics/checkpoint_identity_awareness.py) ' - 'graph definition needs to be adjusted.'), - choices=ignorecounters, - default_value=[], - )), - ], - ), - None, - match_type='dict', - ) + +def _parameter_valuespec_checkpoint_identity_awareness(): + return Dictionary( + title=_('Check Point Identity Awareness status'), + elements=[ + ('ignore_counters', + ListChoice( + title=_('list of counters to ignore'), + help=_('Counters to remove from performance data.'), + choices=_ignorecounters, + default_value=[], + )), + ], + ) + + +rulespec_registry.register( + CheckParameterRulespecWithItem( + check_group_name='checkpoint_identity_awareness', + group=RulespecGroupCheckParametersNetworking, + match_type='dict', + parameter_valuespec=_parameter_valuespec_checkpoint_identity_awareness, + title=lambda: _('Check Point Identity Awareness'), + ))