network_metric['metric_key'] = metric\r
\r
self.monitor_lock.acquire()\r
-\r
self.network_metrics.append(network_metric)\r
self.monitor_lock.release()\r
\r
return 'Error stopping monitoring metric: {0} on {1}:{2}'.format(metric, vnf_name, vnf_interface)\r
\r
\r
-\r
-\r
-\r
# get all metrics defined in the list and export it to Prometheus\r
def get_flow_metrics(self):\r
while self.start_monitoring:\r
metric_dict['previous_measurement'] = int(port_stat[metric_key])\r
metric_dict['previous_monitor_time'] = port_uptime\r
# do first measurement\r
- time.sleep(1)\r
- self.monitor_lock.release()\r
-\r
- metric_rate = self.get_network_metrics()\r
- return metric_rate\r
+ #time.sleep(1)\r
+ #self.monitor_lock.release()\r
+ # rate cannot be calculated yet (need a first measurement)\r
+ metric_rate = None\r
\r
else:\r
time_delta = (port_uptime - metric_dict['previous_monitor_time'])\r
\r
metric_dict['previous_measurement'] = this_measurement\r
metric_dict['previous_monitor_time'] = port_uptime\r
- return metric_rate\r
+ return\r
\r
logging.exception('metric {0} not found on {1}:{2}'.format(metric_key, vnf_name, vnf_interface))\r
+ logging.exception('monport:{0}, dpid:{1}'.format(mon_port, switch_dpid))\r
+ logging.exception('port dict:{0}'.format(port_stat_dict))\r
return 'metric {0} not found on {1}:{2}'.format(metric_key, vnf_name, vnf_interface)\r
\r
def set_flow_metric(self, metric_dict, flow_stat_dict):\r
elif 'packet' in metric_key:\r
counter += flow_stat['packet_count']\r
\r
- flow_stat = flow_stat_dict[str(switch_dpid)][0]\r
- flow_uptime = flow_stat['duration_sec'] + flow_stat['duration_nsec'] * 10 ** (-9)\r
+ # flow_uptime disabled for now (can give error)\r
+ #flow_stat = flow_stat_dict[str(switch_dpid)][0]\r
+ #flow_uptime = flow_stat['duration_sec'] + flow_stat['duration_nsec'] * 10 ** (-9)\r
\r
self.prom_metrics[metric_dict['metric_key']]. \\r
labels({'vnf_name': vnf_name, 'vnf_interface': vnf_interface, 'flow_id': cookie}). \\r
"-d",\r
"-p", "{0}:9091".format(port),\r
"--name", "pushgateway",\r
+ "--label", 'com.containernet=""',\r
"prom/pushgateway"\r
]\r
\r
"--volume=/var/lib/docker/:/var/lib/docker:ro",\r
"--publish={0}:8080".format(port),\r
"--name=cadvisor",\r
+ "--label",'com.containernet=""',\r
"google/cadvisor:latest"\r
]\r
logging.info('Start cAdvisor container {0}'.format(cmd))\r
'''\r
if self.pushgateway_process is not None:\r
logging.info('stopping pushgateway container')\r
- self.pushgateway_process.terminate()\r
- self.pushgateway_process.kill()\r
+ #self.pushgateway_process.terminate()\r
+ #self.pushgateway_process.kill()\r
self._stop_container('pushgateway')\r
\r
if self.cadvisor_process is not None:\r
logging.info('stopping cadvisor container')\r
- self.cadvisor_process.terminate()\r
- self.cadvisor_process.kill()\r
+ #self.cadvisor_process.terminate()\r
+ #self.cadvisor_process.kill()\r
self._stop_container('cadvisor')\r
\r
def switch_tx_rx(self,metric=''):\r
return metric\r
\r
def _stop_container(self, name):\r
- cmd = ["docker",\r
- "stop",\r
- name]\r
- Popen(cmd).wait()\r
\r
cmd = ["docker",\r
"rm",\r
+ "-f",\r
name]\r
Popen(cmd).wait()\r
\r