You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

438 lines
15 KiB

12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
  1. {% load i18n %}{% load staticfiles %}<!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1">
  6. <meta name="apple-mobile-web-app-capable" content="yes">
  7. <link rel="icon" href="{% static "img/favicon.ico" %}">
  8. <title>{% block title %}PyDash v{{ version }}{% endblock %}</title>
  9. <link href="{% static "css/bootstrap.min.css" %}" rel="stylesheet">
  10. <link href="{% static "css/bootstrap-responsive.min.css" %}" rel="stylesheet">
  11. <link href="{% static "css/fonts.css" %}" rel="stylesheet">
  12. <link href="{% static "css/font-awesome.css" %}" rel="stylesheet">
  13. <link href="{% static "css/style.css" %}" rel="stylesheet">
  14. <link href="{% static "css/dashboard.css" %}" rel="stylesheet">
  15. {% block style %}{% endblock %}
  16. <script>
  17. /* Get pydash relative url that will be used to find the endpoints of the
  18. server. This is necessary because a user can change the url prefix
  19. of pydash in urls.py. */
  20. window.pydashUrls = {{ pydashUrls | safe }};
  21. </script>
  22. </head>
  23. <body>
  24. <!-- Had a hard time pressing the logout button :(
  25. <a href="https://github.com/k3oni/pydash"><img style="position: absolute; top: 0; right: 0; border: 0;z-index:99999999;" src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png" alt="Fork me on GitHub"></a>
  26. -->
  27. <div class="navbar navbar-fixed-top" style="">
  28. <div class="navbar-inner">
  29. <div class="container">
  30. <a class="brand" href="/">pyDash v{{ version }}</a>
  31. <ul class="btn btn-mini">
  32. {% if request.user.is_authenticated or user.is_authenticated %}
  33. <a href="{% url 'logout' %}">{% trans "Sign out" %}</a>
  34. {% else %}
  35. <a href="{% url 'login' %}">{% trans "Sign in" %}</a>
  36. {% endif %}
  37. </ul>
  38. <div class="nav-collapse">
  39. </div>
  40. </div>
  41. </div>
  42. </div>
  43. <div class="subnavbar visible-desktop visible-tablet">
  44. <div class="subnavbar-inner">
  45. <div class="container">
  46. <ul class="mainnav">
  47. <li><a href="#refresh-os"><i class="fa fa-dashboard"></i><span>General</span> </a> </li>
  48. <li><a href="#refresh-df"><i class="fa fa-hdd-o"></i><span>Disk</span> </a> </li>
  49. <li><a href="#refresh-cpu"><i class="fa fa-check"></i><span>CPU</span> </a> </li>
  50. <li><a href="#refresh-ram"><i class="fa fa-list-alt"></i><span>RAM</span> </a> </li>
  51. <li><a href="#refresh-load"><i class="fa fa-bolt"></i><span>Load</span> </a> </li>
  52. <li><a href="#refresh-online"><i class="fa fa-user"></i><span>Users</span> </a> </li>
  53. <li><a href="#refresh-netstat"><i class="fa fa-angle-down"></i><span>Netstat</span> </a> </li>
  54. <li><a href="#refresh-ispeed"><i class="fa fa-exchange"></i><span>Network</span> </a> </li>
  55. <li><a href="#refresh-ps"><i class="fa fa-list-alt"></i><span>Processes</span> </a> </li>
  56. <li></li>
  57. </ul>
  58. </div>
  59. <!-- /container -->
  60. </div>
  61. <!-- /subnavbar-inner -->
  62. </div>
  63. <div class="main">
  64. <div class="main-inner">
  65. <div class="container">
  66. {% block content %}
  67. <div class="row">
  68. <div class="span3">
  69. <div class="widget widget-table action-table">
  70. <div class="widget-header"> <i class="fa fa-dashboard"></i>
  71. <h3>General Info</h3><i class="fa fa-minus"></i>
  72. <div id="refresh-os">
  73. </div>
  74. </div>
  75. <!-- /widget-header -->
  76. <div class="widget-content">
  77. <br>
  78. <div style="text-align:center;">
  79. <b>OS:</b> <span class="" id="get-osname"></span><br>
  80. <b>Uptime:</b> <span class="" id="get-uptime"></span> Hours<br>
  81. <b>Hostname:</b> <span class="" id="get-hostname"></span><br>
  82. <b>Kernel:</b> <span class="" id="get-kernel"></span><br>
  83. <b>CPU(s):</b> <span class="" id="get-cpucount"></span> x <span class="" id="get-cputype"></span>
  84. <br><br>
  85. </div>
  86. </div>
  87. <!-- /widget-content -->
  88. </div>
  89. <!-- /widget -->
  90. </div>
  91. <div class="span3">
  92. <div class="widget widget-table action-table">
  93. <div class="widget-header"> <i class="fa fa-check"></i>
  94. <h3>CPU Usage %</h3><i class="fa fa-minus"></i>
  95. <div id="refresh-cpu">
  96. </div>
  97. </div>
  98. <!-- /widget-header -->
  99. <div class="widget-content">
  100. <p></p>
  101. <canvas id="cpuuChart" width="270" height="180"></canvas>
  102. <div>
  103. <span class="cpuf">{% trans "Free" %}</span>
  104. <span class="cpuu">{% trans "Used" %}</span>
  105. </div>
  106. </div>
  107. <!-- /widget-content -->
  108. </div>
  109. <!-- /widget -->
  110. </div>
  111. <div class="span6">
  112. <div class="widget widget-nopad">
  113. <div class="widget-header"> <i class="fa fa-list-alt"></i>
  114. <h3>Memory Usage</h3><i class="fa fa-minus"></i>
  115. <div id="refresh-ram">
  116. </div>
  117. </div>
  118. <!-- /widget-header -->
  119. <div class="widget-content">
  120. <p></p>
  121. <canvas id="memoryChart" width="560" height="200"></canvas>
  122. <div>
  123. <span class="memf">{% trans "Free" %}</span>
  124. <span class="memu">{% trans "Used" %}</span>
  125. </div>
  126. </div>
  127. <!-- /widget-content -->
  128. </div>
  129. </div>
  130. </div>
  131. <div class="row">
  132. <div class="span6">
  133. <div class="widget widget-table action-table">
  134. <div class="widget-header"> <i class="fa fa-hdd-o"></i>
  135. <h3>Disk Usage</h3><i class="fa fa-minus"></i>
  136. <div id="refresh-df">
  137. </div>
  138. </div>
  139. <!-- /widget-header -->
  140. <div class="widget-content">
  141. <table id="get_disk" class="table table-hover table-condensed table-bordered" >
  142. </table>
  143. </div>
  144. <!-- /widget-content -->
  145. </div>
  146. <!-- /widget -->
  147. </div>
  148. <div class="span6">
  149. <div class="widget widget-table action-table">
  150. <div class="widget-header"> <i class="fa fa-bolt"></i>
  151. <h3>Load Average</h3><i class="fa fa-minus"></i>
  152. <div id="refresh-load">
  153. </div>
  154. </div>
  155. <!-- /widget-header -->
  156. <div class="widget-content">
  157. <p></p>
  158. <canvas id="loadChart" width="560" height="200"></canvas>
  159. </div>
  160. <!-- /widget-content -->
  161. </div>
  162. <!-- /widget -->
  163. </div>
  164. <!-- /span6 -->
  165. </div>
  166. <!-- /row -->
  167. <div class="row">
  168. <div class="span6">
  169. <div class="widget widget-table action-table">
  170. <div class="widget-header"> <i class="fa fa-level-up"></i>
  171. <h3>IP Adresses</h3><i class="fa fa-minus"></i>
  172. <div id="refresh-ip">
  173. </div>
  174. </div>
  175. <!-- /widget-header -->
  176. <div class="widget-content">
  177. <table id="get_ips" class="table table-hover table-condensed table-bordered">
  178. </table>
  179. </div>
  180. <!-- /widget-content -->
  181. </div>
  182. <!-- /widget -->
  183. </div>
  184. <!-- /span -->
  185. <div class="span3">
  186. <div class="widget">
  187. <div class="widget-header"> <i class="fa fa-exchange"></i>
  188. <h3>Internet Traffic</h3><i class="fa fa-minus"></i>
  189. <div id="refresh-ispeed">
  190. </div>
  191. </div>
  192. <!-- /widget-header -->
  193. <div class="widget-content">
  194. <p></p>
  195. <canvas id="trfChart" width="270" height="200"></canvas>
  196. <div>
  197. <span class="netin">{% trans "In" %}</span>
  198. <span class="netout">{% trans "Out" %}</span>
  199. </div>
  200. </div>
  201. <!-- /widget-content -->
  202. </div>
  203. <!-- /widget -->
  204. </div><!-- /span -->
  205. <div class="span3">
  206. <div class="widget">
  207. <div class="widget-header"> <i class="fa fa-angle-up"></i>
  208. <h3>Disk Reads/Writes</h3><i class="fa fa-minus"></i>
  209. <div id="refresh-diskio">
  210. </div>
  211. </div>
  212. <!-- /widget-header -->
  213. <div class="widget-content">
  214. <p></p>
  215. <canvas id="dskChart" width="270" height="200"></canvas>
  216. <div>
  217. <span class="diskr">{% trans "Reads" %}</span>
  218. <span class="diskw">{% trans "Writes" %}</span>
  219. </div>
  220. </div>
  221. <!-- /widget-content -->
  222. </div>
  223. <!-- /widget -->
  224. </div>
  225. <!-- /span -->
  226. </div>
  227. <!-- /row -->
  228. <div class="row">
  229. <div class="span6">
  230. <div class="widget widget-table action-table">
  231. <div class="widget-header"> <i class="fa fa-group"></i>
  232. <h3>Online</h3><i class="fa fa-minus"></i>
  233. <div id="refresh-online">
  234. </div>
  235. </div>
  236. <!-- /widget-header -->
  237. <div class="widget-content">
  238. <table id="get_users" class="table table-hover table-condensed table-bordered">
  239. </table>
  240. </div>
  241. <!-- /widget-content -->
  242. </div>
  243. <!-- /widget -->
  244. </div>
  245. <!-- /span -->
  246. <div class="span6">
  247. <div class="widget widget-table action-table">
  248. <div class="widget-header"> <i class="fa fa-angle-down"></i>
  249. <h3>Netstat</h3><i class="fa fa-minus"></i>
  250. <div id="refresh-netstat">
  251. </div>
  252. </div>
  253. <!-- /widget-header -->
  254. <div class="widget-content">
  255. <table id="get_netstat" class="table table-hover table-condensed table-bordered">
  256. </table>
  257. </div>
  258. <!-- /widget-content -->
  259. </div>
  260. <!-- /widget -->
  261. </div>
  262. <!-- /span -->
  263. </div>
  264. <!-- /row -->
  265. <div class="row">
  266. <div class="span12">
  267. <div class="widget">
  268. <div class="widget-header"> <i class="fa fa-list-alt"></i>
  269. <h3> Processes </h3><i class="fa fa-minus"></i>
  270. <div id="refresh-ps">
  271. </div>
  272. </div>
  273. <!-- /widget-header -->
  274. <div class="widget-content">
  275. <table id="get_proc" class="table table-hover table-condensed table-bordered">
  276. </table>
  277. </div>
  278. <!-- /widget-content -->
  279. </div>
  280. <!-- /widget -->
  281. </div>
  282. <!-- /span -->
  283. </div>
  284. <!-- /row -->
  285. </div>
  286. <!-- /container -->
  287. </div>
  288. <!-- /main-inner -->
  289. </div>
  290. <!-- /main -->
  291. <div class="footer">
  292. <div class="footer-inner">
  293. <div class="container">
  294. <div class="row">
  295. <div class="span6">&copy; 2014 by <a href="http://github.com/k3oni">Florian Neagu</a> </div>
  296. <!-- /span12 -->
  297. </div>
  298. <!-- /row -->
  299. </div>
  300. <!-- /container -->
  301. </div>
  302. <!-- /footer-inner -->
  303. </div>
  304. <!-- /footer -->
  305. {% endblock %}
  306. {% block script %}
  307. <script src="{% static "js/jquery.js" %}"></script>
  308. <script src="{% static "js/bootstrap.js" %}"></script>
  309. <script src="{% static "js/base.js" %}"></script>
  310. <script src="{% static "js/Chart.min.js" %}"></script>
  311. <script src="{% static "js/jquery.dataTables.min.js" %}"></script>
  312. <script src="{% static "js/dashboard.js" %}"></script>
  313. <!--[if lte IE 8]>
  314. <script src="{% static "js/excanvas.js" %}"></script>
  315. <![endif]-->
  316. <script type="text/javascript">
  317. var mem_ctx = $("#memoryChart").get(0).getContext("2d");
  318. var memChart = new Chart(mem_ctx);
  319. function memory_usage(){
  320. $.getJSON(pydashUrls['memusage'], function(data) {
  321. var options = {
  322. animation : false,
  323. pointDotRadius : 2,
  324. scaleLabel : "<%=value%> Mb"
  325. }
  326. memChart.Line(data, options);
  327. });
  328. }
  329. var cpu_ctx = $("#cpuuChart").get(0).getContext("2d");
  330. var cpuChart = new Chart(cpu_ctx);
  331. function cpuu_usage(){
  332. $.getJSON(pydashUrls['cpuusage'], function(data) {
  333. var options = {
  334. percentageInnerCutout : 50,
  335. segmentStrokeWidth : 0
  336. }
  337. cpuChart.Doughnut(data, options);
  338. });
  339. }
  340. var trf_ctx = $("#trfChart").get(0).getContext("2d");
  341. var trfChart = new Chart(trf_ctx);
  342. function traffic_usage(){
  343. $.getJSON(pydashUrls['gettraffic'], function(data) {
  344. var options = {
  345. animation : false,
  346. pointDotRadius : 2,
  347. scaleLabel : "<%=value%>"
  348. }
  349. trfChart.Line(data, options);
  350. });
  351. }
  352. var dsk_ctx = $("#dskChart").get(0).getContext("2d");
  353. var dskChart = new Chart(dsk_ctx);
  354. function disk_io(){
  355. $.getJSON(pydashUrls['getdiskio'], function(data) {
  356. var options = {
  357. animation : false,
  358. pointDotRadius : 2,
  359. scaleLabel : "<%=value%>"
  360. }
  361. dskChart.Line(data, options);
  362. });
  363. }
  364. var load_ctx = $("#loadChart").get(0).getContext("2d");
  365. var loadChart = new Chart(load_ctx);
  366. function load_average(){
  367. $.getJSON(pydashUrls['getdiskio'], function(data) {
  368. var options = {
  369. animation : false,
  370. pointDotRadius : 2,
  371. scaleLabel : "<%=value%>"
  372. }
  373. loadChart.Line(data, options);
  374. });
  375. }
  376. $(function() {
  377. window.setInterval('dashboard.getProc()', {{ time_refresh_long }});
  378. window.setInterval('memory_usage()', {{ time_refresh }});
  379. window.setInterval('load_average()', {{ time_refresh }});
  380. window.setInterval('cpuu_usage()', {{ time_refresh }});
  381. window.setInterval('traffic_usage()', {{ time_refresh_net }});
  382. window.setInterval('disk_io()', {{ time_refresh_net }});
  383. window.setInterval('dashboard.getUptime()', {{ time_refresh_long }});
  384. window.setInterval('dashboard.getDisk()', {{ time_refresh_long }});
  385. window.setInterval('dashboard.getUsers()', {{ time_refresh_long }});
  386. window.setInterval('dashboard.getNetstat()', {{ time_refresh_long }});
  387. });
  388. $(function pageLoad() {
  389. dashboard.getProc();
  390. memory_usage();
  391. load_average();
  392. cpuu_usage();
  393. traffic_usage();
  394. disk_io();
  395. dashboard.getOSname();
  396. dashboard.getUptime();
  397. dashboard.getHostname();
  398. dashboard.getKernel();
  399. dashboard.getCPUcount();
  400. dashboard.getCPUtype();
  401. dashboard.getDisk();
  402. dashboard.getUsers();
  403. dashboard.getNetstat();
  404. dashboard.getIps();
  405. });
  406. </script>
  407. {% endblock %}
  408. </body>
  409. </html>