From 45ca563416e0337c9f12fe68e641a584c2fc74d9 Mon Sep 17 00:00:00 2001
From: anima
Date: Sun, 23 Feb 2025 12:45:32 +0100
Subject: [PATCH] add check disk usage
---
checks/check_api_swarmpit.py | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)
diff --git a/checks/check_api_swarmpit.py b/checks/check_api_swarmpit.py
index b1294c2..5e64ab6 100644
--- a/checks/check_api_swarmpit.py
+++ b/checks/check_api_swarmpit.py
@@ -123,6 +123,26 @@ class DockerSwarmMemoryResource(nagiosplugin.Resource):
return nagiosplugin.Metric(name='memory', value=memory_usage_percent, uom='%', context='scalar_context')
+#
+# Check Swarm disk
+#
+class DockerSwarmDiskResource(nagiosplugin.Resource):
+ def __init__(self, api) -> None:
+ self.api = api
+
+ def probe(self) -> list:
+ """check disk usage of full swarm
+
+ Returns:
+ nagiosplugin.Metric: single metric element (return)
+ """
+ data = self.api.statistics()
+ disk = data['disk']
+ disk_usage_percent = round(disk['usage'], 2)
+
+ return nagiosplugin.Metric(name='disk', value=disk_usage_percent, uom='%', context='scalar_context')
+
+
#
# Check Swarm services
#
@@ -277,6 +297,7 @@ def parse_args() -> argparse.Namespace:
choices=[
'load',
'memory',
+ 'disk',
'service_states',
'service_updates'
],
@@ -322,6 +343,12 @@ def main():
nagiosplugin.ScalarContext(name='scalar_context', warning=args.warning, critical=args.critical),
nagiosplugin.Summary())
check.name = "swarm memory"
+ case 'disk':
+ check = nagiosplugin.Check(
+ DockerSwarmDiskResource(api=api),
+ nagiosplugin.ScalarContext(name='scalar_context', warning=args.warning, critical=args.critical),
+ nagiosplugin.Summary())
+ check.name = "swarm disk"
case 'service_states':
check = nagiosplugin.Check(
DockerSwarmServiceStatesResource(api=api),