Browse Source

cpu usage graph

windows
Florian N 12 years ago
parent
commit
367990268f
  1. 16
      main/views.py
  2. 1
      pydash/urls.py
  3. 35
      templates/main.html
  4. 58
      usage/views.py

16
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:

1
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')
)

35
templates/main.html

@ -55,7 +55,7 @@
<div class="row">
<div class="span6">
<div class="span3">
<div class="widget widget-table action-table">
<div class="widget-header"> <i class="icon-info-sign"></i>
<h3>General Info</h3>
@ -80,6 +80,24 @@
<!-- /widget -->
</div>
<div class="span3">
<div class="widget widget-table action-table">
<div class="widget-header"> <i class="icon-info-sign"></i>
<h3>CPU Usage %</h3>
<div id="refresh-cpu">
</div>
</div>
<!-- /widget-header -->
<div class="widget-content">
<p></p>
<canvas id="cpuuChart" width="250" height="230"></canvas>
</div>
<!-- /widget-content -->
</div>
<!-- /widget -->
</div>
<div class="span6">
<div class="widget widget-nopad">
<div class="widget-header">
@ -156,6 +174,7 @@
<div class="widget-content">
<table id="whereis_dashboard" class="table table-hover table-condensed table-bordered" >
</table>
</div>
<!-- /widget-content -->
@ -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 }});
});
</script>

58
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
Loading…
Cancel
Save