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