add check memory usage

This commit is contained in:
2025-02-23 12:41:24 +01:00
parent 506f479f64
commit 1c33878b81

View File

@@ -6,7 +6,7 @@
- pip3 install requests - pip3 install requests
""" """
__version__ = '0.4.0' __version__ = '0.5.0'
__author__ = 'anima' __author__ = 'anima'
# imports # imports
@@ -97,10 +97,31 @@ class DockerSwarmCoresResource(nagiosplugin.Resource):
nagiosplugin.Metric: single metric element (return) nagiosplugin.Metric: single metric element (return)
""" """
data = self.api.statistics() data = self.api.statistics()
memory = data['memory']
memory_usage_percent = round(memory['usage'], 2)
return nagiosplugin.Metric(name='load', value=memory_usage_percent, uom='%', context='scalar_context')
#
# Check Swarm memory
#
class DockerSwarmMemoryResource(nagiosplugin.Resource):
def __init__(self, api) -> None:
self.api = api
def probe(self) -> list:
"""check memory usage of full swarm
Returns:
nagiosplugin.Metric: single metric element (return)
"""
data = self.api.statistics()
print(data)
cpu = data['cpu'] cpu = data['cpu']
cpu_usage_percent = round((cpu['usage'] / cpu['cores']) * 100, 2) cpu_usage_percent = round((cpu['usage'] / cpu['cores']) * 100, 2)
return nagiosplugin.Metric(name='load', value=cpu_usage_percent, uom='%', context='scalar_context') return nagiosplugin.Metric(name='memory', value=cpu_usage_percent, uom='%', context='scalar_context')
# #
@@ -256,6 +277,7 @@ def parse_args() -> argparse.Namespace:
argp.add_argument('-m', '--check_mode', argp.add_argument('-m', '--check_mode',
choices=[ choices=[
'load', 'load',
'memory',
'service_states', 'service_states',
'service_updates' 'service_updates'
], ],
@@ -295,6 +317,12 @@ def main():
nagiosplugin.ScalarContext(name='scalar_context', warning=args.warning, critical=args.critical), nagiosplugin.ScalarContext(name='scalar_context', warning=args.warning, critical=args.critical),
nagiosplugin.Summary()) nagiosplugin.Summary())
check.name = "swarm load" check.name = "swarm load"
case 'memory':
check = nagiosplugin.Check(
DockerSwarmMemoryResource(api=api),
nagiosplugin.ScalarContext(name='scalar_context', warning=args.warning, critical=args.critical),
nagiosplugin.Summary())
check.name = "swarm memory"
case 'service_states': case 'service_states':
check = nagiosplugin.Check( check = nagiosplugin.Check(
DockerSwarmServiceStatesResource(api=api), DockerSwarmServiceStatesResource(api=api),