Skip to content

Commit e9b43e0

Browse files
Displaying individual Pod metrics (CPU and Memory) (#1429)
1 parent 9788607 commit e9b43e0

File tree

1 file changed

+21
-7
lines changed

1 file changed

+21
-7
lines changed

plugins/crmetrics.py

+21-7
Original file line numberDiff line numberDiff line change
@@ -386,6 +386,7 @@ def _parse_persistentvolumeclaims(self, pod_list, kubecfg=''):
386386
def _get_cpu_memory_usage_kubelet(self, pod_list, kubecfg=''):
387387
total_cpu = 0
388388
total_mem = 0
389+
individual_pod_metrics = {}
389390

390391
platf = platform.system()
391392
kubeplus_home = os.getenv('KUBEPLUS_HOME', '/')
@@ -442,14 +443,18 @@ def _get_cpu_memory_usage_kubelet(self, pod_list, kubecfg=''):
442443
#print("MEMORY:" + str(memoryInBytes))
443444
total_cpu = total_cpu + cpuInNanoCores
444445
total_mem = total_mem + memoryInBytes
446+
cpu_mem_dict = {}
447+
cpu_mem_dict["cpu"] = float(cpuInNanoCores) / 1000000
448+
cpu_mem_dict["memory"] = float(memoryInBytes) / (1024*1024)
449+
individual_pod_metrics[podName1] = cpu_mem_dict
445450

446451
total_cpu_milli_cores = float(total_cpu) / 1000000
447452
total_mem_mib = float(total_mem) / (1024*1024)
448453

449454
#print("TOTAL CPU:" + str(total_cpu_milli_cores) + " mi")
450455
#print("TOTAL MEM:" + str(total_mem_mib) + " Mib")
451456

452-
return total_cpu_milli_cores, total_mem_mib
457+
return total_cpu_milli_cores, total_mem_mib, individual_pod_metrics
453458

454459
def _get_cpu_memory_usage_kubectl_top(self, pod_list):
455460
pod_usage_map = {}
@@ -504,7 +509,7 @@ def _get_cpu_memory_usage_rootres(self, kind, cmd, instance, namespace, account)
504509
count = count + 1
505510
composition = self._get_composition(kind, instance, namespace)
506511
pod_list = self._parse_number_of_pods(composition)
507-
cpu, memory = self._get_cpu_memory_usage_kubelet(pod_list)
512+
cpu, memory, _ = self._get_cpu_memory_usage_kubelet(pod_list)
508513
return cpu, memory, count
509514

510515
def _get_metrics_cr_instances(self, account):
@@ -623,7 +628,7 @@ def _get_metrics_pods(self, account):
623628
pod_list = self._get_pods_for_account(account)
624629
#print("Pods:")
625630
#print(pod_list)
626-
cpu, mem = self._get_cpu_memory_usage_kubelet(pod_list)
631+
cpu, mem, _ = self._get_cpu_memory_usage_kubelet(pod_list)
627632
return cpu, mem, len(pod_list)
628633

629634
def _get_metrics_kind(self, kind, account):
@@ -975,7 +980,7 @@ def _get_metrics_creator_account_with_connections(self, account):
975980
print(" " + pod['Name'])
976981
#print(pod_list_for_metrics)
977982

978-
cpu, mem = self._get_cpu_memory_usage_kubelet(pod_list_for_metrics)
983+
cpu, mem, _ = self._get_cpu_memory_usage_kubelet(pod_list_for_metrics)
979984
storage = 0
980985
for p in pod_list_for_metrics:
981986
stor = self._parse_persistentvolumeclaims([p])
@@ -1006,7 +1011,7 @@ def get_metrics_cr(self, custom_resource, custom_res_instance, opformat, kubecon
10061011
num_of_containers_conn = self._parse_number_of_containers(pod_list, kubecfg=kubeconfig)
10071012
total_storage_conn = self._parse_persistentvolumeclaims(pod_list, kubecfg=kubeconfig)
10081013
num_of_hosts_conn = self._parse_number_of_hosts(pod_list, kubecfg=kubeconfig)
1009-
cpu_conn, memory_conn = self._get_cpu_memory_usage_kubelet(pod_list, kubecfg=kubeconfig)
1014+
cpu_conn, memory_conn, individual_pod_metrics = self._get_cpu_memory_usage_kubelet(pod_list, kubecfg=kubeconfig)
10101015
networkReceiveBytesTotal, networkTransmitBytesTotal, oom_events = self._get_cadvisor_metrics(pod_list, kubecfg=kubeconfig)
10111016

10121017
num_of_not_running_pods = self._num_of_not_running_pods(pod_list, kubecfg=kubeconfig)
@@ -1049,8 +1054,17 @@ def get_metrics_cr(self, custom_resource, custom_res_instance, opformat, kubecon
10491054
numOfNotRunningPods = 'not_running_pods{custom_resource="'+fq_instance+'"} ' + str(num_of_not_running_pods) + ' ' + timeInMillis
10501055

10511056
oomEvents = 'oom_events{custom_resource="'+fq_instance+'"} ' + str(oom_events) + ' ' + timeInMillis
1052-
1053-
metricsToReturn = cpuMetrics + "\n" + memoryMetrics + "\n" + storageMetrics + "\n" + numOfPods + "\n" + numOfContainers + "\n" + networkReceiveBytes + "\n" + networkTransmitBytes + "\n" + numOfNotRunningPods + "\n" + oomEvents
1057+
1058+
podMetrics = ""
1059+
for key, val in individual_pod_metrics.items():
1060+
pod_cpu_mem = ""
1061+
pod_cpu = val["cpu"]
1062+
pod_mem = val["memory"]
1063+
pod_cpu_mem = key + "_" + 'cpu{custom_resource="'+fq_instance+'"} ' + str(pod_cpu) + ' ' + timeInMillis + "\n"
1064+
pod_cpu_mem = pod_cpu_mem + key + "_" + 'memory{custom_resource="'+fq_instance+'"} ' + str(pod_mem) + ' ' + timeInMillis + "\n"
1065+
podMetrics = podMetrics + pod_cpu_mem
1066+
1067+
metricsToReturn = cpuMetrics + "\n" + memoryMetrics + "\n" + storageMetrics + "\n" + numOfPods + "\n" + numOfContainers + "\n" + networkReceiveBytes + "\n" + networkTransmitBytes + "\n" + numOfNotRunningPods + "\n" + oomEvents + "\n" + podMetrics
10541068
print(metricsToReturn)
10551069
elif opformat == 'pretty':
10561070
print("---------------------------------------------------------- ")

0 commit comments

Comments
 (0)