Merge "Rework getting limits and requests for containers"

This commit is contained in:
Zuul 2018-01-05 23:40:21 +00:00 committed by Gerrit Code Review
commit 9f07c0d73d
1 changed files with 21 additions and 9 deletions

View File

@ -1,4 +1,4 @@
# (C) Copyright 2017 Hewlett Packard Enterprise Development LP
# (C) Copyright 2017,2018 Hewlett Packard Enterprise Development LP
import logging
import requests
@ -214,13 +214,21 @@ class Kubernetes(checks.AgentCheck):
for container in pod_containers:
container_name = container['name']
container_dimensions = container_dimension_map[name2id[container_name]]
try:
container_limits = container['resources']['limits']
if 'resources' not in container:
self.log.debug("Container {} does not have limits or requests set")
continue
container_resources = container['resources']
if 'limits' not in container_resources:
self.log.debug("Container {} does not have limits set", container_name)
else:
container_limits = container_resources['limits']
if 'cpu' in container_limits:
cpu_limit = container_limits['cpu']
cpu_value = self._convert_cpu_to_cores(cpu_limit)
if self.report_container_metrics:
self.gauge("container.cpu.limit", cpu_value, container_dimensions, hostname="SUPPRESS")
else:
self.log.debug("Container {} does not have cpu limit set", container_name)
if 'memory' in container_limits:
memory_limit = container_limits['memory']
memory_in_bytes = utils.convert_memory_string_to_bytes(memory_limit)
@ -231,23 +239,27 @@ class Kubernetes(checks.AgentCheck):
container_key = container_name + " " + container_dimensions["namespace"]
if container_key not in memory_limit_map:
memory_limit_map[container_key] = memory_in_bytes
except KeyError:
self.log.exception("Unable to report container limits for {}".format(container_name))
try:
container_requests = container['resources']['requests']
else:
self.log.debug("Container {} does not have memory limit set", container_name)
if 'requests' not in container_resources:
self.log.debug("Container {} does not have requests set", container_name)
else:
container_requests = container_resources['requests']
if 'cpu' in container_requests:
cpu_request = container_requests['cpu']
cpu_value = self._convert_cpu_to_cores(cpu_request)
if self.report_container_metrics:
self.gauge("container.request.cpu", cpu_value, container_dimensions, hostname="SUPPRESS")
else:
self.log.debug("Container {} does not have cpu request set", container_name)
if 'memory' in container_requests:
memory_request = container_requests['memory']
memory_in_bytes = utils.convert_memory_string_to_bytes(memory_request)
if self.report_container_metrics:
self.gauge("container.request.memory_bytes", memory_in_bytes, container_dimensions,
hostname="SUPPRESS")
except KeyError:
self.log.exception("Unable to report container requests for {}".format(container_name))
else:
self.log.debug("Container {} does not have memory request set", container_name)
def _convert_cpu_to_cores(self, cpu_string):
"""Kubernetes reports cores in millicores in some instances.