do computing of bandwidth before groupby
[plstackapi.git] / planetstack / templates / admin / dashboard / cdn_nodes.html
1 <div id="tabs-6">
2 </div>
3
4 <script>
5
6 function domain_name_sort(a,b) {
7         parts_a = a.split(".");
8         parts_b = b.split(".");
9         parts_a = parts_a.reverse();
10         parts_b = parts_b.reverse();
11         a = parts_a.join(".");
12         b = parts_b.join(".");
13         return ((a < b) ? -1 : ((a > b) ?  1 : 0));
14 }
15
16 jQuery.fn.dataTableExt.oSort['domain-name-asc']  = function(a,b) {
17     return domain_name_sort(a,b);
18 };
19
20 jQuery.fn.dataTableExt.oSort['domain-name-desc']  = function(a,b) {
21     retuirn -domain_name_sort(a,b);
22 };
23
24 function updateCDNNodeData(data) {
25     $('#tabs-6').html( '<table cellpadding="0" cellspacing="0" border="0" class="display" id="dynamic_cdn_nodes"></table>' );
26     var actualEntries = [];
27
28     var rows = data.rows;
29     for (row in rows) {
30         hostname = rows[row]['hostname'];
31         bytes_sent = rows[row]['sum_bytes_sent'];
32         bytes_hit = rows[row]['sum_bytes_hit'];
33         elapsed = rows[row]['sum_elapsed'];
34         healthy = rows[row]['sum_healthy'];
35
36         if (bytes_sent > 0) {
37             hit_ratio = parseInt( bytes_hit * 100.0 / bytes_sent );
38         } else {
39             hit_ratio = 0;
40         }
41
42         Mbps = parseInt(rows[row]['sum_computed_bytes_sent_div_elapsed'] * 8.0 / 1024.0 / 1024.0);
43
44         if (healthy>0) {
45             healthyStr = "ok";
46         } else {
47             healthyStr = "bad";
48         }
49
50         actualEntries.push([hostname, healthyStr, Mbps, hit_ratio]);
51     }
52     oTable = $('#dynamic_cdn_nodes').dataTable( {
53         "bJQueryUI": true,
54         "aaData":  actualEntries,
55         "bStateSave": true,
56         "aoColumns": [
57             { "sTitle": "Hostname", sType: "domain-name" },
58             { "sTitle": "Healthy" },
59             { "sTitle": "Mbps" , sClass: "alignCenter"},
60             { "sTitle": "Hit Ratio" , sClass: "alignCenter"},
61         ],
62     } );
63 }
64
65 function updateCDNNodes() {
66     var url= '/analytics/bigquery/?event=hpc_heartbeat&sum=@bytes_sent,@bytes_hit,@healthy,@elapsed&computed=@bytes_sent/@elapsed&groupBy=@hostname&cached=1&cachedGroupBy=@hostname';
67     console.log(url);
68     $.ajax({
69     url: url,
70     dataType : 'json',
71     type : 'GET',
72     success: function(newData)
73     {
74         updateCDNNodeData(newData);
75     }
76 });
77     setTimeout(updateCDNNodes, 30000);
78 }
79
80 setTimeout(updateCDNNodes, 5000);
81 </script>