Advertisement
Guest User

Untitled

a guest
Aug 19th, 2019
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var mainchart;
  2.  
  3. var refresh_time = 3;
  4.  
  5. var prev_total = prev_idle = 0;
  6. var chart_ram, chart_hdd, chart_cpu;
  7.  
  8. $(document).ready(function()
  9. {
  10.     $("#refresh_time").text(refresh_time);
  11.    
  12.     highChartsInit();
  13.    
  14.     chart_ram = createChart("doughnut-ram", ["Free RAM", "Used ram"]);
  15.     chart_hdd = createChart("doughnut-hdd", ["Free space", "Used space"]);
  16.     chart_cpu = createChart("doughnut-cpu", ["Unused load", "Cpu load"]);
  17.  
  18.     setInterval(refresh, refresh_time * 1000);
  19. });
  20.  
  21. function highChartsInit()
  22. {
  23.     Highcharts.setOptions({ global: { useUTC: false } });
  24.     mainchart = new Highcharts.stockChart({
  25.         rangeSelector: {
  26.             buttons: [{
  27.             count: 1,
  28.             type: 'minute',
  29.             text: '1M'
  30.         },{
  31.             count: 5,
  32.             type: 'minute',
  33.             text: '5M'
  34.         },{
  35.             count: 10,
  36.             type: 'minute',
  37.             text: '10M'
  38.         },{
  39.             count: 15,
  40.             type: 'minute',
  41.             text: '15M'
  42.         },{
  43.             type: 'all',
  44.             text: 'All'
  45.         }],
  46.             inputEnabled: false,
  47.             selected: 0
  48.         },
  49.  
  50.         tooltip: { pointFormat: '{series.name}: <b>{point.y}%</b>' },
  51.         chart: { renderTo: 'mainchart' },
  52.         title: { text: 'Hardware usage' },
  53.         xAxis: { title: "Time", type: "datetime" },
  54.  
  55.         yAxis: {
  56.             title: 'Percentage',
  57.             max: 100,
  58.             min: 0,
  59.             tickInterval:10
  60.         },
  61.  
  62.         series: [
  63.             { name: 'RAM', data: getDummyData() },
  64.             { name: 'HDD', data: getDummyData() },
  65.             { name: 'CPU', data: getDummyData() }
  66.         ]
  67.     });
  68. }
  69.  
  70. function createChart(forid, labelarray) {
  71.     return new Chart(document.getElementById(forid).getContext('2d'), {
  72.         type: 'doughnut',
  73.         data: {
  74.             labels: labelarray,
  75.             datasets: [{
  76.                 data: [0, 0],
  77.                 backgroundColor: ["#c3e6cb", "#f5c6cb" ],
  78.                 hoverBackgroundColor: ["#155724", "#721c24"]
  79.             }]
  80.         },
  81.         options: {
  82.             responsive: true,
  83.             legend: {
  84.                 display: false
  85.             }
  86.         }
  87.     });
  88. }
  89.  
  90. function getDummyData()
  91. {
  92.     var chartdata = new Array(), curtime = new Date().getTime();
  93.  
  94.     for (i = -399; i <= 0; i++) chartdata.push([curtime + i * 1000, 0]);
  95.         chartdata.push([curtime, 0]);
  96.  
  97.     return chartdata;
  98. }
  99.  
  100. function refresh()
  101. {
  102.     $.getJSON("getData.php", null, function(data) {
  103.         var time = (new Date()).getTime();
  104.  
  105.         var cpuload = getCpuLoad(data.CPUDetail);
  106.         var currentram = ((data.memory[1] / data.memory[0]) * 100).toFixed(2);
  107.         var currenthdd = ((data.storage["used"] / data.storage["total"]) * 100).toFixed(2);
  108.         var currentcpu = cpuload > 100 ? 100 : cpuload;
  109.  
  110.         mainchart.series[0].addPoint([time, parseFloat(currentram)], false, true);
  111.         mainchart.series[1].addPoint([time, parseFloat(currenthdd)], false, true);
  112.         mainchart.series[2].addPoint([time, parseFloat(currentcpu)], true, true);
  113.  
  114.         $("#ram .usage").html(formatNumber(data.memory[1]) + " kb<br/>Cache: " + formatNumber(data.memory[3]) + " kb");
  115.         $("#ram .total").text(formatNumber(data.memory[0]));
  116.         $("#ram .free").text(formatNumber(data.memory[2]));
  117.  
  118.         $("#hdd .usage").text(formatNumber(data.storage["used"]));
  119.         $("#hdd .total").text(formatNumber(data.storage["total"]));
  120.         $("#hdd .free").text(formatNumber(data.storage["free"]));
  121.  
  122.         $("#network .rec").html(formatNumber(data.network[0]) + " bytes <br/>Packets: " + formatNumber(data.network[1]));
  123.         $("#network .sent").html(formatNumber(data.network[2]) + " bytes <br/>Packets: " + formatNumber(data.network[3]));
  124.  
  125.         var info = "Uptime: " + getTime(data.uptime) + "<br />Operating System: " + data.OS;
  126.         $("#general_info").html(info);
  127.  
  128.         $("#cpu .list-group").empty();
  129.  
  130.         chart_ram.data.datasets[0].data = [data.memory[2], data.memory[1]];
  131.         chart_hdd.data.datasets[0].data = [data.storage["free"], data.storage["used"]];
  132.         chart_cpu.data.datasets[0].data = [100.0 - currentcpu, currentcpu];
  133.         chart_ram.update();
  134.         chart_hdd.update();
  135.         chart_cpu.update();
  136.  
  137.         for (var i = 0; i < data.CPU.length; i++)
  138.         {
  139.             if(i % 3 === 0)
  140.             {
  141.                 var listitem = $("<li>", {"class": "list-group-item"});
  142.                 listitem.html(data.CPU[i][1] + "<br />" + data.CPU[i + 1][0] + ": " + data.CPU[i + 1][1] + "<br />" + data.CPU[i + 2][0] + ": " + data.CPU[i + 2][1]);
  143.                 $("#cpu .list-group").append(listitem);
  144.             }
  145.         }
  146.     });
  147. }
  148.  
  149. //Calculation by https://github.com/Leo-G/DevopsWiki/wiki/How-Linux-CPU-Usage-Time-and-Percentage-is-calculated
  150. function getCpuLoad(input)
  151. {
  152.     var cpuload = input.split(' ');
  153.     var sum = 0;
  154.  
  155.     for (var i = 0; i < cpuload.length; i++) {
  156.         sum += parseInt(cpuload[i]);   
  157.     }
  158.  
  159.     var idlecpuload = cpuload[3];
  160.     var diff_idle = idlecpuload - prev_idle;
  161.     var diff_total = sum - prev_total;
  162.     var diff_usage = (1000 * (diff_total - diff_idle) / diff_total + 5) / 10;
  163.  
  164.     prev_total = sum;
  165.     prev_idle = idlecpuload;
  166.    
  167.     return diff_usage.toFixed(2);
  168. }
  169.  
  170. function formatNumber(number)
  171. {
  172.     return number.toLocaleString("nl").replace(/\./g, " ");
  173. }
  174.  
  175. function getTime(seconds)
  176. {
  177.     var leftover = seconds;
  178.  
  179.     var days = Math.floor(leftover / 86400);
  180.     leftover = leftover - (days * 86400);
  181.  
  182.     var hours = Math.floor(leftover / 3600);
  183.     leftover = leftover - (hours * 3600);
  184.  
  185.     var minutes = Math.floor(leftover / 60);
  186.     leftover = leftover - (minutes * 60);
  187.  
  188.     return days + " days, " + hours + " hours, " + minutes + " minutes, " + leftover + " seconds";
  189. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement