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.

440 lines
15 KiB

7 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. <span class="memb">{% trans "Buffers" %}</span>
  126. <span class="memc">{% trans "Cached" %}</span>
  127. </div>
  128. </div>
  129. <!-- /widget-content -->
  130. </div>
  131. </div>
  132. </div>
  133. <div class="row">
  134. <div class="span6">
  135. <div class="widget widget-table action-table">
  136. <div class="widget-header"> <i class="fa fa-hdd-o"></i>
  137. <h3>Disk Usage</h3><i class="fa fa-minus"></i>
  138. <div id="refresh-df">
  139. </div>
  140. </div>
  141. <!-- /widget-header -->
  142. <div class="widget-content">
  143. <table id="get_disk" class="table table-hover table-condensed table-bordered" >
  144. </table>
  145. </div>
  146. <!-- /widget-content -->
  147. </div>
  148. <!-- /widget -->
  149. </div>
  150. <div class="span6">
  151. <div class="widget widget-table action-table">
  152. <div class="widget-header"> <i class="fa fa-bolt"></i>
  153. <h3>Load Average</h3><i class="fa fa-minus"></i>
  154. <div id="refresh-load">
  155. </div>
  156. </div>
  157. <!-- /widget-header -->
  158. <div class="widget-content">
  159. <p></p>
  160. <canvas id="loadChart" width="560" height="200"></canvas>
  161. </div>
  162. <!-- /widget-content -->
  163. </div>
  164. <!-- /widget -->
  165. </div>
  166. <!-- /span6 -->
  167. </div>
  168. <!-- /row -->
  169. <div class="row">
  170. <div class="span6">
  171. <div class="widget widget-table action-table">
  172. <div class="widget-header"> <i class="fa fa-level-up"></i>
  173. <h3>IP Adresses</h3><i class="fa fa-minus"></i>
  174. <div id="refresh-ip">
  175. </div>
  176. </div>
  177. <!-- /widget-header -->
  178. <div class="widget-content">
  179. <table id="get_ips" class="table table-hover table-condensed table-bordered">
  180. </table>
  181. </div>
  182. <!-- /widget-content -->
  183. </div>
  184. <!-- /widget -->
  185. </div>
  186. <!-- /span -->
  187. <div class="span3">
  188. <div class="widget">
  189. <div class="widget-header"> <i class="fa fa-exchange"></i>
  190. <h3>Internet Traffic</h3><i class="fa fa-minus"></i>
  191. <div id="refresh-ispeed">
  192. </div>
  193. </div>
  194. <!-- /widget-header -->
  195. <div class="widget-content">
  196. <p></p>
  197. <canvas id="trfChart" width="270" height="200"></canvas>
  198. <div>
  199. <span class="netin">{% trans "In" %}</span>
  200. <span class="netout">{% trans "Out" %}</span>
  201. </div>
  202. </div>
  203. <!-- /widget-content -->
  204. </div>
  205. <!-- /widget -->
  206. </div><!-- /span -->
  207. <div class="span3">
  208. <div class="widget">
  209. <div class="widget-header"> <i class="fa fa-angle-up"></i>
  210. <h3>Disk Reads/Writes</h3><i class="fa fa-minus"></i>
  211. <div id="refresh-diskio">
  212. </div>
  213. </div>
  214. <!-- /widget-header -->
  215. <div class="widget-content">
  216. <p></p>
  217. <canvas id="dskChart" width="270" height="200"></canvas>
  218. <div>
  219. <span class="diskr">{% trans "Reads" %}</span>
  220. <span class="diskw">{% trans "Writes" %}</span>
  221. </div>
  222. </div>
  223. <!-- /widget-content -->
  224. </div>
  225. <!-- /widget -->
  226. </div>
  227. <!-- /span -->
  228. </div>
  229. <!-- /row -->
  230. <div class="row">
  231. <div class="span6">
  232. <div class="widget widget-table action-table">
  233. <div class="widget-header"> <i class="fa fa-group"></i>
  234. <h3>Online</h3><i class="fa fa-minus"></i>
  235. <div id="refresh-online">
  236. </div>
  237. </div>
  238. <!-- /widget-header -->
  239. <div class="widget-content">
  240. <table id="get_users" class="table table-hover table-condensed table-bordered">
  241. </table>
  242. </div>
  243. <!-- /widget-content -->
  244. </div>
  245. <!-- /widget -->
  246. </div>
  247. <!-- /span -->
  248. <div class="span6">
  249. <div class="widget widget-table action-table">
  250. <div class="widget-header"> <i class="fa fa-angle-down"></i>
  251. <h3>Netstat</h3><i class="fa fa-minus"></i>
  252. <div id="refresh-netstat">
  253. </div>
  254. </div>
  255. <!-- /widget-header -->
  256. <div class="widget-content">
  257. <table id="get_netstat" class="table table-hover table-condensed table-bordered">
  258. </table>
  259. </div>
  260. <!-- /widget-content -->
  261. </div>
  262. <!-- /widget -->
  263. </div>
  264. <!-- /span -->
  265. </div>
  266. <!-- /row -->
  267. <div class="row">
  268. <div class="span12">
  269. <div class="widget">
  270. <div class="widget-header"> <i class="fa fa-list-alt"></i>
  271. <h3> Processes </h3><i class="fa fa-minus"></i>
  272. <div id="refresh-ps">
  273. </div>
  274. </div>
  275. <!-- /widget-header -->
  276. <div class="widget-content">
  277. <table id="get_proc" class="table table-hover table-condensed table-bordered">
  278. </table>
  279. </div>
  280. <!-- /widget-content -->
  281. </div>
  282. <!-- /widget -->
  283. </div>
  284. <!-- /span -->
  285. </div>
  286. <!-- /row -->
  287. </div>
  288. <!-- /container -->
  289. </div>
  290. <!-- /main-inner -->
  291. </div>
  292. <!-- /main -->
  293. <div class="footer">
  294. <div class="footer-inner">
  295. <div class="container">
  296. <div class="row">
  297. <div class="span6">&copy; 2014 by <a href="http://github.com/k3oni">Florian Neagu</a> </div>
  298. <!-- /span12 -->
  299. </div>
  300. <!-- /row -->
  301. </div>
  302. <!-- /container -->
  303. </div>
  304. <!-- /footer-inner -->
  305. </div>
  306. <!-- /footer -->
  307. {% endblock %}
  308. {% block script %}
  309. <script src="{% static "js/jquery.js" %}"></script>
  310. <script src="{% static "js/bootstrap.js" %}"></script>
  311. <script src="{% static "js/base.js" %}"></script>
  312. <script src="{% static "js/Chart.min.js" %}"></script>
  313. <script src="{% static "js/jquery.dataTables.min.js" %}"></script>
  314. <script src="{% static "js/dashboard.js" %}"></script>
  315. <!--[if lte IE 8]>
  316. <script src="{% static "js/excanvas.js" %}"></script>
  317. <![endif]-->
  318. <script type="text/javascript">
  319. var mem_ctx = $("#memoryChart").get(0).getContext("2d");
  320. var memChart = new Chart(mem_ctx);
  321. function memory_usage(){
  322. $.getJSON(pydashUrls['memusage'], function(data) {
  323. var options = {
  324. animation : false,
  325. pointDotRadius : 4,
  326. scaleLabel : "<%=value%> Mb"
  327. }
  328. memChart.Line(data, options);
  329. });
  330. }
  331. var cpu_ctx = $("#cpuuChart").get(0).getContext("2d");
  332. var cpuChart = new Chart(cpu_ctx);
  333. function cpuu_usage(){
  334. $.getJSON(pydashUrls['cpuusage'], function(data) {
  335. var options = {
  336. percentageInnerCutout : 50,
  337. segmentStrokeWidth : 0
  338. }
  339. cpuChart.Doughnut(data, options);
  340. });
  341. }
  342. var trf_ctx = $("#trfChart").get(0).getContext("2d");
  343. var trfChart = new Chart(trf_ctx);
  344. function traffic_usage(){
  345. $.getJSON(pydashUrls['gettraffic'], function(data) {
  346. var options = {
  347. animation : false,
  348. pointDotRadius : 2,
  349. scaleLabel : "<%=value%>"
  350. }
  351. trfChart.Line(data, options);
  352. });
  353. }
  354. var dsk_ctx = $("#dskChart").get(0).getContext("2d");
  355. var dskChart = new Chart(dsk_ctx);
  356. function disk_io(){
  357. $.getJSON(pydashUrls['getdiskio'], function(data) {
  358. var options = {
  359. animation : false,
  360. pointDotRadius : 2,
  361. scaleLabel : "<%=value%>"
  362. }
  363. dskChart.Line(data, options);
  364. });
  365. }
  366. var load_ctx = $("#loadChart").get(0).getContext("2d");
  367. var loadChart = new Chart(load_ctx);
  368. function load_average(){
  369. $.getJSON(pydashUrls['getdiskio'], function(data) {
  370. var options = {
  371. animation : false,
  372. pointDotRadius : 2,
  373. scaleLabel : "<%=value%>"
  374. }
  375. loadChart.Line(data, options);
  376. });
  377. }
  378. $(function() {
  379. window.setInterval('dashboard.getProc()', {{ time_refresh_long }});
  380. window.setInterval('memory_usage()', {{ time_refresh }});
  381. window.setInterval('load_average()', {{ time_refresh }});
  382. window.setInterval('cpuu_usage()', {{ time_refresh }});
  383. window.setInterval('traffic_usage()', {{ time_refresh_net }});
  384. window.setInterval('disk_io()', {{ time_refresh_net }});
  385. window.setInterval('dashboard.getUptime()', {{ time_refresh_long }});
  386. window.setInterval('dashboard.getDisk()', {{ time_refresh_long }});
  387. window.setInterval('dashboard.getUsers()', {{ time_refresh_long }});
  388. window.setInterval('dashboard.getNetstat()', {{ time_refresh_long }});
  389. });
  390. $(function pageLoad() {
  391. dashboard.getProc();
  392. memory_usage();
  393. load_average();
  394. cpuu_usage();
  395. traffic_usage();
  396. disk_io();
  397. dashboard.getOSname();
  398. dashboard.getUptime();
  399. dashboard.getHostname();
  400. dashboard.getKernel();
  401. dashboard.getCPUcount();
  402. dashboard.getCPUtype();
  403. dashboard.getDisk();
  404. dashboard.getUsers();
  405. dashboard.getNetstat();
  406. dashboard.getIps();
  407. });
  408. </script>
  409. {% endblock %}
  410. </body>
  411. </html>