From 367990268feb24e1c4239595fa8e3adb6ae087e6 Mon Sep 17 00:00:00 2001 From: Florian N Date: Tue, 4 Feb 2014 21:06:51 -0500 Subject: [PATCH] cpu usage graph --- main/views.py | 16 +++++++++++++ pydash/urls.py | 1 + templates/main.html | 35 ++++++++++++++++++++++++++- usage/views.py | 58 ++++++++++----------------------------------- 4 files changed, 64 insertions(+), 46 deletions(-) diff --git a/main/views.py b/main/views.py index 1ef0766..01049e3 100755 --- a/main/views.py +++ b/main/views.py @@ -177,6 +177,22 @@ def get_mem(): data = str(err) return data + +def get_cpu_usage(): + try: + pipe = os.popen("ps aux |" + "awk {'sum+=$3;print sum'} |" + "tail -n 1") + data = pipe.read().strip() + pipe.close() + + cpu_free = (100 - float(data)) + cpu_used = {'free': cpu_free, 'used': float(data)} + data = cpu_used + + except Exception,err: + data = str(err) + + return data + def get_load(): try: diff --git a/pydash/urls.py b/pydash/urls.py index 3bce43c..7baa2f2 100644 --- a/pydash/urls.py +++ b/pydash/urls.py @@ -17,6 +17,7 @@ urlpatterns = patterns('', url(r'^info/uptime/$', 'usage.views.uptime', name='uptime'), url(r'^info/memory/$', 'usage.views.memusage', name='memusage'), url(r'^info/users/$', 'usage.views.getusers', name='getusers'), + url(r'^info/cpuusage/$', 'usage.views.cpuusage', name='cpuusage'), url(r'^info/loadaverage/$', 'usage.views.loadaverage', name='loadaverage') ) diff --git a/templates/main.html b/templates/main.html index 42683b0..7b411a9 100644 --- a/templates/main.html +++ b/templates/main.html @@ -55,7 +55,7 @@
-
+

General Info

@@ -80,6 +80,24 @@
+
+
+
+

CPU Usage %

+
+ +
+
+ +
+

+ +
+ +
+ +
+
@@ -156,6 +174,7 @@
+
@@ -288,6 +307,19 @@ var mem_ctx = $("#memoryChart").get(0).getContext("2d"); memChart.Line(data, options); }); } + + +var cpu_ctx = $("#cpuuChart").get(0).getContext("2d"); + var cpuChart = new Chart(cpu_ctx); + function cpuu_usage(){ + $.getJSON('/info/cpuusage/{{ cpuusage }}', function(data) { + var options = { + percentageInnerCutout : 50, + segmentStrokeWidth : 1 + } + cpuChart.Doughnut(data, options); + }); + } var load_ctx = $("#loadChart").get(0).getContext("2d"); var loadChart = new Chart(load_ctx); @@ -306,6 +338,7 @@ var load_ctx = $("#loadChart").get(0).getContext("2d"); window.setInterval('memory_usage()', {{ time_refresh }}); window.setInterval('load_average()', {{ time_refresh }}); window.setInterval('dashboard.getOs()', {{ time_refresh }}); + window.setInterval('cpuu_usage()', {{ time_refresh }}); }); diff --git a/usage/views.py b/usage/views.py index 10e0bf1..a52d39a 100755 --- a/usage/views.py +++ b/usage/views.py @@ -51,57 +51,26 @@ def cpuusage(request): if not request.user.is_authenticated(): return HttpResponseRedirect('/login') - datasets = [] - try: cpu_usage = get_cpu_usage() + except Exception: cpu_usage = 0 - - try: - cookies = request._cookies['cpu_usage'] - except Exception: - cookies = None - - if not cookies: - datasets.append(0) - else: - datasets = eval(cookies) - if len(datasets) > 10: - while datasets: - del datasets[0] - if len(datasets) == 10: - break - if len(datasets) <= 9: - datasets.append(int(cpu_usage['usage'])) - if len(datasets) == 10: - datasets.append(int(cpu_usage['usage'])) - del datasets[0] - - # Some fix division by 0 Chart.js - if len(datasets) == 10: - if sum(datasets) == 0: - datasets[9] += 0.1 - if sum(datasets) / 10 == datasets[0]: - datasets[9] += 0.1 - - cpu = { - 'labels': [""] * 10, - 'datasets': [ - { - "fillColor": "rgba(241,72,70,0.5)", - "strokeColor": "rgba(241,72,70,1)", - "pointColor": "rgba(241,72,70,1)", - "pointStrokeColor": "#fff", - "data": datasets - } - ] - } + + cpu = [ + { + "value": cpu_usage['free'], + "color": "#0AD11B" + }, + { + "value": cpu_usage['used'], + "color": "#F7464A" + } + ] data = simplejson.dumps(cpu) response = HttpResponse() response['Content-Type'] = "text/javascript" - response.cookies['cpu_usage'] = datasets response.write(data) return response @@ -225,5 +194,4 @@ def loadaverage(request): response['Content-Type'] = "text/javascript" response.cookies['load_average'] = datasets response.write(data) - return response - + return response \ No newline at end of file