-
Notifications
You must be signed in to change notification settings - Fork 594
Expand file tree
/
Copy pathmemory_docker.py
More file actions
44 lines (32 loc) · 1.15 KB
/
memory_docker.py
File metadata and controls
44 lines (32 loc) · 1.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# coding=utf-8
"""
The MemoryDockerCollector collects memory statistics from docker containers
#### Dependencies
* docker
"""
import os
import sys
try:
import docker
except ImportError:
docker = None
sys.path.append(os.path.join(os.path.dirname(os.path.dirname(__file__)),
'memory_cgroup'))
from memory_cgroup import MemoryCgroupCollector
class MemoryDockerCollector(MemoryCgroupCollector):
def collect(self):
if docker is None:
self.log.error('Unable to import docker')
return
self.containers = dict(
(c['Id'], c['Names'][0][1:])
for c in docker.Client(version='auto').containers(all=True)
if c['Names'] is not None)
return super(MemoryDockerCollector, self).collect()
def publish(self, metric_name, value, metric_type):
for container_id, container_name in self.containers.items():
metric_name = metric_name.replace(
'docker.' + container_id + '.',
'docker.' + container_name + '.')
return super(MemoryDockerCollector, self).publish(
metric_name, value, metric_type)