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
