Module: check_mk
Branch: master
Commit: 005c489760efee1b4d5b2e19d95a49c4bcad502d
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=005c489760efeeā¦
Author: Tom Baerwinkel <tb(a)mathias-kettner.de>
Date: Fri Mar 22 09:45:13 2019 +0100
agent_kubernetes, k8s_resources: return resources for individual pods
CMK-1893
Change-Id: I9158f9cf6d74950c74f6639215fe7eca7ff49717
---
checks/k8s_resources | 10 ++++++----
cmk/gui/plugins/metrics/check_mk.py | 4 ++--
cmk/special_agents/agent_kubernetes.py | 10 ++++++++++
.../checks/generictests/datasets/k8s_resources_regression.py | 2 +-
4 files changed, 19 insertions(+), 7 deletions(-)
diff --git a/checks/k8s_resources b/checks/k8s_resources
index 47c482a..45b6161 100644
--- a/checks/k8s_resources
+++ b/checks/k8s_resources
@@ -27,7 +27,7 @@
def get_k8s_resources_inventory_function(name):
def inventory_function(parsed):
- if parsed.get('capacity', {}).get(name):
+ if parsed.get('requests', {}).get(name) is not None:
return [(None, {})]
return inventory_function
@@ -46,11 +46,13 @@ def get_k8s_resources_check_function(name, default, readable):
yield 0, 'Limit: %s' % readable(limit), [('k8s_%s_limit'
% name, limit)]
allocatable = parsed.get('allocatable', {}).get(name, default)
- yield 0, 'Allocatable: %s' % readable(allocatable),
[('k8s_%s_allocatable' % name,
- allocatable)]
+ if allocatable:
+ yield 0, 'Allocatable: %s' % readable(allocatable),
[('k8s_%s_allocatable' % name,
+ allocatable)]
capacity = parsed.get('capacity', {}).get(name, default)
- yield 0, 'Capacity: %s' % readable(capacity), [('k8s_%s_capacity'
% name, capacity)]
+ if capacity:
+ yield 0, 'Capacity: %s' % readable(capacity),
[('k8s_%s_capacity' % name, capacity)]
if allocatable:
usage = 100.0 * request / allocatable
diff --git a/cmk/gui/plugins/metrics/check_mk.py b/cmk/gui/plugins/metrics/check_mk.py
index 794fc92..0dd85b1 100644
--- a/cmk/gui/plugins/metrics/check_mk.py
+++ b/cmk/gui/plugins/metrics/check_mk.py
@@ -8929,7 +8929,7 @@ graph_info["k8s_resources.cpu"] = {
("k8s_cpu_limit", "area"),
("k8s_cpu_request", "area"),
],
- "optional_metrics": ["k8s_cpu_limit"],
+ "optional_metrics": ["k8s_cpu_capacity",
"k8s_cpu_allocatable", "k8s_cpu_limit"],
}
graph_info["k8s_resources.memory"] = {
@@ -8940,7 +8940,7 @@ graph_info["k8s_resources.memory"] = {
("k8s_memory_limit", "area"),
("k8s_memory_request", "area"),
],
- "optional_metrics": ["k8s_memory_limit"],
+ "optional_metrics": ["k8s_memory_capacity",
"k8s_memory_allocatable", "k8s_memory_limit"],
}
graph_info["used_cpu_time"] = {
diff --git a/cmk/special_agents/agent_kubernetes.py
b/cmk/special_agents/agent_kubernetes.py
index f6b6bbe..1dee77f 100644
--- a/cmk/special_agents/agent_kubernetes.py
+++ b/cmk/special_agents/agent_kubernetes.py
@@ -440,6 +440,9 @@ class PodList(ListLike[Pod]):
def pods_in_cluster(self):
return {'requests': {'pods': len(self)}}
+ def resources(self):
+ return {pod.name: pod.resources for pod in self}
+
def resources_per_node(self):
# type: () -> Dict[str, Dict[str, Dict[str, float]]]
"""
@@ -769,6 +772,12 @@ class ApiData(object):
e.get('k8s_pods_%s' % c_metric).insert(self.pods_Metrics[c_metric])
return '\n'.join(e.output())
+ def pod_sections(self):
+ logging.info('Output pod sections')
+ g = Group()
+ g.join('k8s_resources', self.pods.resources())
+ return '\n'.join(g.output())
+
def get_api_client(arguments):
# type: (argparse.Namespace) -> client.ApiClient
@@ -810,6 +819,7 @@ def main(args=None):
print(api_data.cluster_sections())
print(api_data.node_sections())
print(api_data.custom_metrics_section())
+ print(api_data.pod_sections())
except Exception as e:
if arguments.debug:
raise
diff --git a/tests/unit/checks/generictests/datasets/k8s_resources_regression.py
b/tests/unit/checks/generictests/datasets/k8s_resources_regression.py
index 71e9cd5..5854c08 100644
--- a/tests/unit/checks/generictests/datasets/k8s_resources_regression.py
+++ b/tests/unit/checks/generictests/datasets/k8s_resources_regression.py
@@ -2,7 +2,7 @@
checkname = 'k8s_resources'
info = [[
- u'{"allocatable": {"pods": 110, "cpu":
0.9400000000000001, "memory": 609845248.0}, "capacity":
{"pods": 110, "cpu": 1.0, "memory": 609845248.0},
"requests": {"cpu": 0.2, "memory": 0.0}, "limits":
{"cpu": 0.5, "memory": Infinity}, "allocations": {}}'
+ u'{"allocatable": {"pods": 110, "cpu":
0.9400000000000001, "memory": 609845248.0}, "capacity":
{"pods": 110, "cpu": 1.0, "memory": 609845248.0},
"requests": {"pods": 0, "cpu": 0.2, "memory":
0.0}, "limits": {"cpu": 0.5, "memory": Infinity},
"allocations": {}}'
]]
discovery = {