diff --git a/checks.d/docker_daemon.py b/checks.d/docker_daemon.py index 267a4994d5..474d28995e 100644 --- a/checks.d/docker_daemon.py +++ b/checks.d/docker_daemon.py @@ -806,6 +806,17 @@ def _parse_blkio_metrics(self, stats): metrics['io_write'] += int(line.split()[2]) return metrics + def _is_container_cgroup(self, line, selinux_policy): + if line[1] not in ('cpu,cpuacct', 'cpuacct,cpu', 'cpuacct') or line[2] == '/docker-daemon': + return False + if 'docker' in line[2]: # general case + return True + if 'docker' in selinux_policy: # selinux + return True + if line[2].startswith('/') and re.match(CONTAINER_ID_RE, line[2][1:]): # kubernetes + return True + return False + # proc files def _crawl_container_pids(self, container_dict): """Crawl `/proc` to find container PIDs and add them to `containers_by_id`.""" @@ -846,8 +857,7 @@ def _crawl_container_pids(self, container_dict): try: for line in content: - if line[1] in ('cpu,cpuacct', 'cpuacct,cpu', 'cpuacct') and \ - ('docker' in line[2] or 'docker' in selinux_policy): + if self._is_container_cgroup(line, selinux_policy): cpuacct = line[2] break else: