Index: /branches/rel_apv_10_7_3/usr/click/tools/prometheus_client/prometheus_client_service.py
===================================================================
--- /branches/rel_apv_10_7_3/usr/click/tools/prometheus_client/prometheus_client_service.py	(revision 39298)
+++ /branches/rel_apv_10_7_3/usr/click/tools/prometheus_client/prometheus_client_service.py	(working copy)
@@ -14,6 +14,8 @@
 import ssl
 import threading
 import time
+import subprocess
+import re
 import update_client_config
 import update_tokens_table
 import prometheus_logger
@@ -70,8 +72,6 @@
 bytes_per_mb = 1024 ** 2
 bytes_per_gb = 1024 ** 3
 
-cpu_usage_result = []
-
 net_io_new, net_io_old = None, None
 throughput_time = 3.0
 
@@ -123,7 +123,7 @@
     """
     @brief Update the Prometheus CPU metrics
     """
-    global cpu_usage_result
+    cpu_usage_result = get_cpu_usage()
     if len(cpu_usage_result) > 0:
         for i in range(len(cpu_usage_result)):
             cpu_usage.labels(core=f'core_{i}').set(round(cpu_usage_result[i], 2))
@@ -131,12 +131,18 @@
 
 def get_cpu_usage():
     """
-    @brief Regularly retrieve cpu_usage data
+    @brief get cpu_usage data from APV CLI
     """
-    global cpu_usage_result
-    while True:
-        cpu_usage_result = psutil.cpu_percent(interval=2, percpu=True)
-        time.sleep(2)
+    cmd = "/ca/bin/backend -c \"show debug usage cpu\"`echo -e \"\\0374\"`"
+    try:
+        output_byte = subprocess.check_output(cmd, shell=True)
+    except Exception as e:
+        return []
+    output_byte = output_byte.replace(b'\xfc', b'')
+    output_str = output_byte.decode('utf-8')
+    usage = re.findall(r'core\d+\s+([\d.]+)%', output_str)
+    usage = [float(cpu) for cpu in usage]
+    return usage
 
 def update_disk_status():
     """
@@ -253,10 +259,6 @@
     network_throughput_thread.daemon = True
     network_throughput_thread.start()
 
-    cpu_thread = threading.Thread(target=get_cpu_usage)
-    cpu_thread.daemon = True
-    cpu_thread.start()
-
     http_server.serve_forever()
 
 if __name__ == '__main__':
