start prometheus and cadvisor with Dockernet
diff --git a/src/emuvim/dcemulator/monitoring.py b/src/emuvim/dcemulator/monitoring.py
index 1f7ff2e..d745069 100755
--- a/src/emuvim/dcemulator/monitoring.py
+++ b/src/emuvim/dcemulator/monitoring.py
@@ -7,6 +7,8 @@
import time
from prometheus_client import start_http_server, Summary, Histogram, Gauge, Counter
import threading
+from subprocess import Popen
+from os import getcwd
logging.basicConfig(level=logging.INFO)
@@ -61,12 +63,16 @@
mon_port = None
}
'''
- self.network_metrics=[]
+ self.network_metrics = []
# start monitoring thread
self.monitor_thread = threading.Thread(target=self.get_network_metrics)
self.monitor_thread.start()
+ # helper tools
+ self.prometheus_process = None
+ self.cAdvisor_process = None
+
# first set some parameters, before measurement can start
def setup_metric(self, vnf_name, vnf_interface=None, metric='tx_packets'):
@@ -244,4 +250,39 @@
url = self.REST_api + '/' + str(prefix) + '/' + str(dpid)
req = urllib2.Request(url)
ret = urllib2.urlopen(req).read()
- return ret
\ No newline at end of file
+ return ret
+
+ def start_Prometheus(self, port=9090):
+ cmd = ["docker",
+ "run",
+ "--rm",
+ "-p", "{0}:9090".format(port),
+ "-v", "{0}/prometheus.yml:/etc/prometheus/prometheus.yml".format(getcwd()),
+ "--name", "prometheus",
+ "prom/prometheus"
+ ]
+
+ self.prometheus_process = Popen(cmd)
+
+ def start_cAdvisor(self, port=8090):
+ cmd = ["docker",
+ "run",
+ "--rm",
+ "--volume=/:/rootfs:ro",
+ "--volume=/var/run:/var/run:rw",
+ "--volume=/sys:/sys:ro",
+ "--volume=/var/lib/docker/:/var/lib/docker:ro",
+ "--publish={0}:8080".format(port),
+ "--name=cadvisor",
+ "google/cadvisor:latest"
+ ]
+ self.cAdvisor_process = Popen(cmd)
+
+ def stop(self):
+ if self.prometheus_process is not None:
+ self.prometheus_process.terminate()
+ self.prometheus_process.kill()
+
+ if self.cAdvisor_process is not None:
+ self.cAdvisor_process.terminate()
+ self.cAdvisor_process.kill()