From f6a29e7801b4a71c175b14f46d28f4f7ab3dee48 Mon Sep 17 00:00:00 2001 From: "th.l" <thl-cmk@outlook.com> Date: Sat, 2 Dec 2023 20:43:37 +0100 Subject: [PATCH] update project --- README.md | 2 +- agent_based/squid.py | 123 +++++++++++++++--- agents/plugins/squid | 10 +- gui/metrics/squid.py | 48 +++++++ gui/wato/squid.py | 17 ++- .../cmk/base/cee/plugins/bakery/squid.py | 9 +- mkp/squid-2.1.0-20231202.mkp | Bin 0 -> 5543 bytes packages/squid | 4 +- 8 files changed, 186 insertions(+), 27 deletions(-) create mode 100644 mkp/squid-2.1.0-20231202.mkp diff --git a/README.md b/README.md index b848c4d..652b58e 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -[PACKAGE]: ../../raw/master/mkp/squid-2.0.4-2023-09-21.mkp "squid-2.0.4-2023-09-21.mkp" +[PACKAGE]: ../../raw/master/mkp/squid-2.1.0-20231202.mkp "squid-2.1.0-20231202.mkp" # Squid Web Proxy This CheckMK plugin monitors the performance of the _**Squid Web Proxy**_. This plugin is intended to use with the Agent Bakery of CheckMK. diff --git a/agent_based/squid.py b/agent_based/squid.py index 2fdd9c3..3ea9382 100644 --- a/agent_based/squid.py +++ b/agent_based/squid.py @@ -13,8 +13,9 @@ # # 2023-05-20: moved to ~/local/lib/check_mk/base/plugins/agent_based/utils # renamed from check_squid.include to squid.py -# - +# 2023-12-02: fixed crash on empty section or missing value +# added swap section +# added file descriptors section # !/usr/bin/env python3 # -*- coding: utf-8 -*- @@ -32,7 +33,7 @@ # ToDo: add support for multiple instances -from typing import Dict +from typing import Dict, Optional from cmk.base.plugins.agent_based.agent_based_api.v1 import ( register, check_levels, @@ -58,7 +59,6 @@ def parse_squid(string_table) -> Dict[str, float]: if 'kbytes' in entry: value = value * 1024 + 8 # change kbytes to bits section[entry] = value - return section @@ -68,10 +68,44 @@ register.agent_section( ) +def parse_squid_file_descriptors(string_table) -> Dict[str, float]: + """ + Maximum number of file descriptors: 1024 + Available number of file descriptors: 1018 + Reserved number of file descriptors: 100 + + Args: + string_table: + + Returns: + + """ + section = {} + for line in string_table: + entry, value = line[0].split(':') + entry = entry.lower().strip().replace(' ', '_') + try: + value = float(value.strip()) + except ValueError: + continue + section[entry] = value + return section + + +register.agent_section( + name='squid_file_descriptors', + parse_function=parse_squid_file_descriptors, +) + + def render_per_second(value: float) -> str: return f'{value:0.2f}/s' +def render_count(value: float) -> str: + return f'{int(value)}' + + squid_map = { 'Client': { 'client_http.requests': { @@ -152,36 +186,87 @@ squid_map = { 'metric_name': 'dns_median_svc_time', 'render_func': render.timespan, }}, + 'Swap': { + 'swap.outs': { + 'label': 'Out', + 'levels_upper': 'swap_out', + 'metric_name': 'swap_out', + 'render_func': render_per_second, + }, + 'swap.ins': { + 'label': 'In', + 'levels_upper': 'swap_in', + 'metric_name': 'swap_in', + 'render_func': render_per_second, + }, + 'swap.files_cleaned': { + 'label': 'Files cleaned', + 'levels_upper': 'swap_files_cleaned', + 'metric_name': 'swap_files_cleaned', + 'render_func': render_per_second, + }, + }, + 'File descriptors': { + 'maximum_number_of_file_descriptors': { + 'label': 'Maximum', + 'levels_upper': 'maximum_number_of_file_descriptors', + 'metric_name': 'maximum_number_of_file_descriptors', + 'render_func': render_count, + }, + 'available_number_of_file_descriptors': { + 'label': 'Available', + 'levels_upper': 'available_number_of_file_descriptors', + 'metric_name': 'available_number_of_file_descriptors', + 'render_func': render_count, + }, + 'reserved_number_of_file_descriptors': { + 'label': 'Reserved', + 'levels_upper': 'reserved_number_of_file_descriptors', + 'metric_name': 'reserved_number_of_file_descriptors', + 'render_func': render_count, + }, + } } -def discovery_squid(section: Dict[str, float]) -> DiscoveryResult: +def discovery_squid( + section_squid: Optional[Dict[str, float]], + section_squid_file_descriptors: Optional[Dict[str, float]] +) -> DiscoveryResult: for item in squid_map.keys(): yield Service(item=item) -def check_squid(item, params, section: Dict[str, float]) -> CheckResult: +def check_squid( + item, + params, + section_squid: Optional[Dict[str, float]], + section_squid_file_descriptors: Optional[Dict[str, float]], +) -> CheckResult: + section_squid.update(section_squid_file_descriptors) for value in squid_map[item].keys(): entry = squid_map[item][value] levels_upper = params.get(entry['levels_upper'], None) - yield from check_levels_predictive( - label=entry['label'], - value=section[value], - levels=levels_upper, - render_func=entry['render_func'], - metric_name=entry['metric_name'], - ) if isinstance(levels_upper, dict) else check_levels( - label=entry['label'], - value=section[value], - levels_upper=levels_upper, - render_func=entry['render_func'], - metric_name=entry['metric_name'], - ) + if section_squid.get(value) is not None: + yield from check_levels_predictive( + label=entry['label'], + value=section_squid[value], + levels=levels_upper, + render_func=entry['render_func'], + metric_name=entry['metric_name'], + ) if isinstance(levels_upper, dict) else check_levels( + label=entry['label'], + value=section_squid[value], + levels_upper=levels_upper, + render_func=entry['render_func'], + metric_name=entry['metric_name'], + ) register.check_plugin( name='squid', service_name='Squid %s', + sections=['squid', 'squid_file_descriptors'], discovery_function=discovery_squid, check_function=check_squid, check_default_parameters={ diff --git a/agents/plugins/squid b/agents/plugins/squid index d88aaf6..475c7a0 100755 --- a/agents/plugins/squid +++ b/agents/plugins/squid @@ -9,6 +9,7 @@ # 2023-05-20: changed separator to :sep(0) # changed section from check_squid to squid # 2023-05-22: fixed missing "<" in section name +# 2023-12-02: added -l "$ip_address" option # MK_CONFDIR="/etc/check_mk" @@ -21,12 +22,17 @@ if [ -z "$port" ]; then port=$(ss -tlpn | grep squid | tr -s ' ' | cut -d' ' -f 4 | cut -d':' -f 2) fi +if [ -z "$ip_address" ]; then + ip_address=localhost +fi if type squidclient > /dev/null 2>&1 ; then - echo "<<<squid:sep(0)>>>" + echo "<<<squid_file_descriptors:sep(0)>>>" + squidclient -p "$port" -l "$ip_address" -T2 mgr:info | grep "file descriptors" + echo "<<<squid:sep(0)>>>" # one squid instance - squidclient -p "$port" -T2 mgr:5min | grep = + squidclient -p "$port" -l "$ip_address" -T2 mgr:5min | grep = # multiple squid instances # instance names must be without spaces and with colon char at the end diff --git a/gui/metrics/squid.py b/gui/metrics/squid.py index 41df441..6a9d0e1 100644 --- a/gui/metrics/squid.py +++ b/gui/metrics/squid.py @@ -25,6 +25,12 @@ check_metrics['check_mk-squid'] = { 'predict_client_hits_per_second': {'auto_graph': False}, 'predict_server_all_requests': {'auto_graph': False}, 'predict_util': {'auto_graph': False}, + # 'swap_out': {'auto_graph': False}, + # 'swap_in': {'auto_graph': False}, + # 'swap_files_cleaned': {'auto_graph': False}, + # 'maximum_number_of_file_descriptors': {'auto_graph': False}, + # 'available_number_of_file_descriptors': {'auto_graph': False}, + # 'reserved_number_of_file_descriptors': {'auto_graph': False}, } metric_info['client_hits_per_second'] = {'title': _('Cache hits'), 'unit': '1/s', 'color': '11/a', } @@ -125,3 +131,45 @@ perfometer_info.append({ 'half_value': 2, 'exponent': 2, }) + + +metric_info['swap_out'] = {'title': _('Out'), 'unit': '1/s', 'color': '26/a', } +metric_info['swap_in'] = {'title': _('In'), 'unit': '1/s', 'color': '26/b', } +metric_info['swap_files_cleaned'] = {'title': _('Files cleaned'), 'unit': '1/s', 'color': '26/b', } + +graph_info['squid_swap'] = { + 'title': _('Squid Swap'), + 'metrics': [ + ('swap_out', 'line'), + ('swap_in', 'line'), + ('swap_files_cleaned', 'line'), + ], + # 'scalars': [ + # 'swap_files_cleaned:warn', + # 'swap_files_cleaned:crit', + # ], +} + +metric_info['maximum_number_of_file_descriptors'] = {'title': _('Maximum'), 'unit': 'count', 'color': '31/a', } +metric_info['available_number_of_file_descriptors'] = {'title': _('Available'), 'unit': 'count', 'color': '26/a', } +metric_info['reserved_number_of_file_descriptors'] = {'title': _('Reserved'), 'unit': 'count', 'color': '14/a', } + +graph_info['squid_file_descriptors'] = { + 'title': _('Squid File Descriptors'), + 'metrics': [ + ('maximum_number_of_file_descriptors', 'line'), + ('available_number_of_file_descriptors', 'line'), + ('reserved_number_of_file_descriptors', 'line'), + ], + 'scalars': [ + 'available_number_of_file_descriptors:warn', + 'available_number_of_file_descriptors:crit', + ], +} + +perfometer_info.append({ + 'type': 'logarithmic', + 'metric': 'available_number_of_file_descriptors', + 'half_value': 1000, + 'exponent': 2, +}) \ No newline at end of file diff --git a/gui/wato/squid.py b/gui/wato/squid.py index cf7e3f9..e7b4791 100644 --- a/gui/wato/squid.py +++ b/gui/wato/squid.py @@ -16,6 +16,8 @@ # changed client_reqps to client_requests # changed server_reqps to server_requests # changed cpu_time to cpu_usage +# 2023-12-02: add ip_address option for agent plugin +# add available_number_of_file_descriptors for check section from cmk.gui.i18n import _ from cmk.gui.valuespec import ( @@ -70,6 +72,12 @@ def _valuespec_squid(): Float(title=_('Warning at'), default_value=2.0, unit='seconds'), Float(title=_('Critical at'), default_value=4.0, unit='seconds'), ])), + ('available_number_of_file_descriptors', + Levels( + title=_('Set levels for Squid available file descriptors'), + unit='number of', + # default_levels=(60.0, 80.0) + )), ] ) @@ -93,13 +101,18 @@ def _valuespec_agent_squid(): help=_('The plugin <tt>squid</tt> allows monitoring of Squid Web Proxies.'), title=_('Squid Web Proxy (Linux)'), elements=[ + ('ip_address', + TextInput( + title=_('IP Address'), + help=_('Thi IP-Address squidclient connects to.'), + default_value='localhost', + )), ('port', Integer( title=_('Port number'), help=_('TCP port number that squidclient connects to.'), default_value=3128, - ) - ) + )), ] ) diff --git a/lib/python3/cmk/base/cee/plugins/bakery/squid.py b/lib/python3/cmk/base/cee/plugins/bakery/squid.py index 23c3d7c..05189f7 100644 --- a/lib/python3/cmk/base/cee/plugins/bakery/squid.py +++ b/lib/python3/cmk/base/cee/plugins/bakery/squid.py @@ -16,6 +16,7 @@ # renamed bakery plugin from squid to squid.py # 2023-09-21: moved file to ~/local/lib/check_mk/base/cee/plugins/bakery # fix crash if port not configured in wato +# 2023-12-02: added IP-Address option from pathlib import Path from cmk.base.cee.plugins.bakery.bakery_api.v1 import ( @@ -35,12 +36,18 @@ def get_squid_files(conf) -> FileGenerator: yield PluginConfig( base_os=OS.LINUX, - lines=[f'port={conf.get("port", 3128)}'], + lines=[f'{key}={value}' for key, value in conf.items()], + # lines=[ + # f'port={conf.get("port", 3128)}', + # f'ip_address={conf.get("ip_address", "localhost")}' + # ], target=Path('squid.cfg'), include_header=False, ) + + register.bakery_plugin( name='squid', files_function=get_squid_files, diff --git a/mkp/squid-2.1.0-20231202.mkp b/mkp/squid-2.1.0-20231202.mkp new file mode 100644 index 0000000000000000000000000000000000000000..94e873f08d61ff46db3f0cb7530ec6f9c899cbd8 GIT binary patch literal 5543 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 literal 0 HcmV?d00001 diff --git a/packages/squid b/packages/squid index 649e379..23522f2 100644 --- a/packages/squid +++ b/packages/squid @@ -13,7 +13,7 @@ 'lib': ['python3/cmk/base/cee/plugins/bakery/squid.py']}, 'name': 'squid', 'title': 'Squid3 Health Check', - 'version': '2.0.4-2023-09-21', + 'version': '2.1.0-20231202', 'version.min_required': '2.1.0b1', - 'version.packaged': '2.2.0p11', + 'version.packaged': '2.2.0p14', 'version.usable_until': None} -- GitLab