diff --git a/src/emuvim/cli/compute.py b/src/emuvim/cli/compute.py
index dcb499d..d01dfed 100755
--- a/src/emuvim/cli/compute.py
+++ b/src/emuvim/cli/compute.py
@@ -30,7 +30,6 @@
         nw_list = list()
         if args.get("network") is not None:
             nw_list = self._parse_network(args.get("network"))
-
         r = self.c.compute_action_start(
             args.get("datacenter"),
             args.get("name"),
diff --git a/src/emuvim/cli/monitor.py b/src/emuvim/cli/monitor.py
index 34853a6..79ff25b 100755
--- a/src/emuvim/cli/monitor.py
+++ b/src/emuvim/cli/monitor.py
@@ -5,20 +5,24 @@
 
 import argparse
 import pprint
-from tabulate import tabulate
 import zerorpc
-import time
-
+import prometheus
 
 pp = pprint.PrettyPrinter(indent=4)
 
 class ZeroRpcClient(object):
 
     def __init__(self):
+        # network zerorpc
         self.c = zerorpc.Client()
         # TODO connect to DCNetwork API
         #self.c.connect("tcp://127.0.0.1:4242")  # TODO hard coded for now. we'll change this later
         self.c.connect("tcp://127.0.0.1:5151")
+
+        # compute zerorpc
+        self.compute_api = zerorpc.Client(heartbeat=None, timeout=120)  # heartbeat=None, timeout=120
+        self.compute_api.connect("tcp://127.0.0.1:4242")  # TODO hard coded for now. we'll change this later
+
         self.cmds = {}
 
     def execute_command(self, args):
@@ -66,7 +70,7 @@
             args.get("cookie"))
         pp.pprint(r)
 
-    def prometheus(self, args):
+    def prometheus_zrpc(self, args):
         vnf_name = self._parse_vnf_name(args.get("vnf_name"))
         vnf_interface = self._parse_vnf_interface(args.get("vnf_name"))
         r = self.c.prometheus(
@@ -76,6 +80,18 @@
             args.get("query"))
         pp.pprint(r)
 
+    def prometheus(self, args):
+        vnf_name = self._parse_vnf_name(args.get("vnf_name"))
+        vnf_interface = self._parse_vnf_interface(args.get("vnf_name"))
+        dc_label = args.get("datacenter")
+        query = args.get("query")
+        vnf_status = self.compute_api.compute_status(dc_label, vnf_name)
+        uuid = vnf_status['id']
+        query = query.replace('<uuid>', uuid)
+
+        r = prometheus.query_Prometheus(query)
+        pp.pprint(r)
+
 
     def _parse_vnf_name(self, vnf_name_str):
         vnf_name = vnf_name_str.split(':')[0]
@@ -93,7 +109,7 @@
 parser.add_argument(
     "command",
     choices=['setup_metric', 'stop_metric', 'setup_flow', 'stop_flow','prometheus'],
-    help="setup/stop a metric/flow to be monitored or Prometheus query")
+    help="setup/stop a metric/flow to be monitored or query Prometheus")
 parser.add_argument(
     "--vnf_name", "-vnf", dest="vnf_name",
     help="vnf name:interface to be monitored")
diff --git a/src/emuvim/cli/prometheus.py b/src/emuvim/cli/prometheus.py
new file mode 100755
index 0000000..8d87d89
--- /dev/null
+++ b/src/emuvim/cli/prometheus.py
@@ -0,0 +1,28 @@
+"""
+Prometheus API helper functions
+(c) 2016 by Steven Van Rossem <steven.vanrossem@intec.ugent.be>
+"""
+
+import urllib2
+import ast
+
+prometheus_ip = '0.0.0.0'
+prometheus_port = '9090'
+prometheus_REST_api = 'http://{0}:{1}'.format(prometheus_ip, prometheus_port)
+
+
+def query_Prometheus(query):
+    url = prometheus_REST_api + '/' + 'api/v1/query?query=' + query
+    # logging.info('query:{0}'.format(url))
+    req = urllib2.Request(url)
+    ret = urllib2.urlopen(req).read()
+    ret = ast.literal_eval(ret)
+    if ret['status'] == 'success':
+        # logging.info('return:{0}'.format(ret))
+        try:
+            ret = ret['data']['result'][0]['value']
+        except:
+            ret = None
+    else:
+        ret = None
+    return ret
\ No newline at end of file
diff --git a/src/emuvim/dcemulator/monitoring.py b/src/emuvim/dcemulator/monitoring.py
index e663cae..8db10da 100755
--- a/src/emuvim/dcemulator/monitoring.py
+++ b/src/emuvim/dcemulator/monitoring.py
@@ -75,8 +75,8 @@
         self.monitor_flow_thread.start()
 
         # helper tools
-        self.pushgateway_process = self.start_PushGateway()
-        self.prometheus_process = self.start_Prometheus()
+        #self.pushgateway_process = self.start_PushGateway()
+        #self.prometheus_process = self.start_Prometheus()
         self.cadvisor_process = self.start_cadvisor()
 
     # first set some parameters, before measurement can start
@@ -496,6 +496,7 @@
         self.monitor_thread.join()
         self.monitor_flow_thread.join()
 
+        '''
         if self.prometheus_process is not None:
             logging.info('stopping prometheus container')
             self.prometheus_process.terminate()
@@ -507,6 +508,7 @@
             self.pushgateway_process.terminate()
             self.pushgateway_process.kill()
             self._stop_container('pushgateway')
+        '''
 
         if self.cadvisor_process is not None:
             logging.info('stopping cadvisor container')
diff --git a/src/emuvim/test/integrationtests/test_sdk_monitor.sh b/src/emuvim/test/integrationtests/test_sdk_monitor.sh
new file mode 100755
index 0000000..26f939f
--- /dev/null
+++ b/src/emuvim/test/integrationtests/test_sdk_monitor.sh
@@ -0,0 +1,15 @@
+#!/bin/bash
+# test if a vnf can be monitored and deployed
+
+cpu_load=$(son-emu-cli monitor prometheus -d datacenter1 -vnf vnf1 -q 'sum(rate(container_cpu_usage_seconds_total{id="/docker/<uuid>"}[10s]))')
+
+# test if prometheus query worked
+regex="[0-9.]+, [0-9.']+"
+if [[ $cpu_load =~ $regex ]] ; then
+	echo "OK"
+	exit 0
+else
+	echo $cpu_load
+	echo "not OK"
+	exit 1
+fi
