X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=src%2Femuvim%2Fdcemulator%2Fmonitoring.py;h=78b8007ad8265276fc0d890d9d7689622ceac777;hb=ca164cf8efbc5d76c7c8ae25f4a3bffcb983c364;hp=de96e37e9fdbb230620ab8714deb8f9fc3f06f5d;hpb=a7f601c1121f467de22cd024d543672980533a2d;p=osm%2Fvim-emu.git diff --git a/src/emuvim/dcemulator/monitoring.py b/src/emuvim/dcemulator/monitoring.py index de96e37..78b8007 100755 --- a/src/emuvim/dcemulator/monitoring.py +++ b/src/emuvim/dcemulator/monitoring.py @@ -34,7 +34,7 @@ import time from prometheus_client import start_http_server, Summary, Histogram, Gauge, Counter, REGISTRY, CollectorRegistry, \ pushadd_to_gateway, push_to_gateway, delete_from_gateway import threading -from subprocess import Popen +from subprocess import Popen, check_call import os import docker import json @@ -202,7 +202,7 @@ class DCNetworkMonitor(): network_metric = {} # check if port is specified (vnf:port) - if vnf_interface is None: + if vnf_interface is None or vnf_interface == '': # take first interface by default connected_sw = self.net.DCNetwork_graph.neighbors(vnf_name)[0] link_dict = self.net.DCNetwork_graph[vnf_name][connected_sw] @@ -404,8 +404,10 @@ class DCNetworkMonitor(): previous_measurement = metric_dict['previous_measurement'] previous_monitor_time = metric_dict['previous_monitor_time'] mon_port = metric_dict['mon_port'] - for port_stat in port_stat_dict[str(switch_dpid)]: + # ovs output also gives back 'LOCAL' port + if port_stat['port_no'] == 'LOCAL': + continue if int(port_stat['port_no']) == int(mon_port): port_uptime = port_stat['duration_sec'] + port_stat['duration_nsec'] * 10 ** (-9) this_measurement = int(port_stat[metric_key]) @@ -502,7 +504,11 @@ class DCNetworkMonitor(): "--publish={0}:8080".format(port), "--name=cadvisor", "--label",'com.containernet=""', - "google/cadvisor:latest" + "--detach=true", + "google/cadvisor:latest", + #"--storage_duration=1m0s", + #"--allow_dynamic_housekeeping=true", + #"--housekeeping_interval=1s", ] logging.info('Start cAdvisor container {0}'.format(cmd)) return Popen(cmd) @@ -535,8 +541,15 @@ class DCNetworkMonitor(): def _stop_container(self, name): - container = self.dockercli.containers.get(name) - container.remove(force=True) + #container = self.dockercli.containers.get(name) + #container.stop() + #container.remove(force=True) + + # the only robust way to stop these containers is via Popen, it seems + time.sleep(1) + cmd = ['docker', 'rm', '-f', name] + Popen(cmd) + def update_skewmon(self, vnf_name, resource_name, action): @@ -606,6 +619,7 @@ class DCNetworkMonitor(): while not started: list1 = self.dockercli.containers.list(filters={'status': 'running', 'name': 'prometheus'}) if len(list1) >= 1: + time.sleep(1) started = True if wait_time > 5: return 'skewmon not started'