X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=src%2Femuvim%2Fdcemulator%2Fmonitoring.py;h=d7450698f2f1a92d8649e36773652c888a13a72b;hb=8675d09a5488f60a856145f92380db6066200484;hp=1f7ff2ed8d3b1121e9cac3e3d7ddc5ee5a43e1af;hpb=a24b437787696be1285d631f8bcd361c4a54a95e;p=osm%2Fvim-emu.git 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 ast 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 @@ class DCNetworkMonitor(): 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 @@ class DCNetworkMonitor(): 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()