msb protocol synch change
[msb/apigateway.git] / msb-core / apiroute / apiroute-service / src / main / resources / iui-metrics / js / metricsController.js
1 /*
2  * Copyright 2016 2015-2016 ZTE, Inc. and others. All rights reserved.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16  *     Author: Zhaoxing Meng
17  *     email: meng.zhaoxing1@zte.com.cn
18  */
19 var vm = avalon
20                 .define({
21                         $id : "metricsController",
22                         routeTargetTitle:$.i18n.prop("org_openo_msb_route_content_title"),              
23                         $metricsUrl : '/admin/metrics',         
24                         metricsLoading:false,           
25                         metricsArray :  [],     
26                         threadNum:"",
27                         isErr:false,
28                         jvmTime:"",
29                         restArray:[],
30                                         
31                  $dataTableLanguage: {
32                 "sProcessing": "<img src='../img/loading-spinner-grey.gif'/><span>&nbsp;&nbsp;Loadding...</span>",   
33                 "sLengthMenu": $.i18n.prop("org_openo_msb_route-table-sLengthMenu"),
34                 "sZeroRecords": $.i18n.prop("org_openo_msb_route-table-sZeroRecords"),
35                 "sInfo": "<span class='seperator'>  </span>" + $.i18n.prop("org_openo_msb_route-table-sInfo"),
36                 "sInfoEmpty": $.i18n.prop("org_openo_msb_route-table-sInfoEmpty"),
37                 "sGroupActions": $.i18n.prop("org_openo_msb_route-table-sGroupActions"),
38                 "sAjaxRequestGeneralError": $.i18n.prop("org_openo_msb_route-table-sAjaxRequestGeneralError"),
39                 "sEmptyTable": $.i18n.prop("org_openo_msb_route-table-sEmptyTable"),
40                 "oPaginate": {
41                     "sPrevious": $.i18n.prop("org_openo_msb_route-table-sPrevious"),
42                     "sNext": $.i18n.prop("org_openo_msb_route-table-sNext"),
43                     "sPage": $.i18n.prop("org_openo_msb_route-table-sPage"),
44                     "sPageOf": $.i18n.prop("org_openo_msb_route-table-sPageOf")
45                 },
46                 "sSearch": $.i18n.prop("org_openo_msb_route-table-search"),
47                 "sInfoFiltered": $.i18n.prop("org_openo_msb_route-table-infofilter") 
48             },          
49                         initMetrics : function() {
50                         
51                             
52                  $.ajax({
53             "type": 'get',
54             "url": url,
55             "dataType": "json",
56             success: function (resp) { 
57                  vm.isErr=false; 
58                var restJson = resp;  
59                // var restJson = metricsUtil.restJson;                          
60                       
61                    var testRestJson=restJson.timers;
62                    var gaugesJson=restJson.gauges;
63
64                    //jvm Time
65                    var jvmTime=gaugesJson["jvm.attribute.uptime"].value;
66
67                    vm.jvmTime=metricsUtil.formatSeconds(jvmTime);
68
69
70                    //Initialize the JVM memory usage
71                    var Eden_Space_usage;
72                         if(gaugesJson["jvm.memory.pools.Eden-Space.usage"]==null){
73                                 if(gaugesJson["jvm.memory.pools.PS-Eden-Space.usage"]==null)
74                                 {
75                                         Eden_Space_usage=0;
76                                 }
77                                 else{
78                                         Eden_Space_usage=gaugesJson["jvm.memory.pools.PS-Eden-Space.usage"].value;
79                                 }
80                         }
81                         else{
82                                 Eden_Space_usage=gaugesJson["jvm.memory.pools.Eden-Space.usage"].value;
83                         }
84
85
86
87
88                         var Perm_Gen_usage;
89                         if(gaugesJson["jvm.memory.pools.Perm-Gen.usage"]==null){
90                                 if(gaugesJson["jvm.memory.pools.PS-Perm-Gen.usage"]==null)
91                                 {
92                                         Perm_Gen_usage=0;
93                                 }
94                                 else{
95                                         Perm_Gen_usage=gaugesJson["jvm.memory.pools.PS-Perm-Gen.usage"].value;
96                                 }
97                         }
98                         else{
99                                 Perm_Gen_usage=gaugesJson["jvm.memory.pools.Perm-Gen.usage"].value;
100                         }
101
102
103                         var Survivor_Space_usage;
104                         if(gaugesJson["jvm.memory.pools.Survivor-Space.usage"]==null){
105                                 if(gaugesJson["jvm.memory.pools.PS-Survivor-Space.usage"]==null)
106                                 {
107                                         Survivor_Space_usage=0;
108                                 }
109                                 else{
110                                         Survivor_Space_usage=gaugesJson["jvm.memory.pools.PS-Survivor-Space.usage"].value;
111                                 }
112                         }
113                         else{
114                                 Survivor_Space_usage=gaugesJson["jvm.memory.pools.Survivor-Space.usage"].value;
115                         }
116
117
118                         var Tenured_Gen_usage;
119                         if(gaugesJson["jvm.memory.pools.Tenured-Gen.usage"]==null){
120                                 if(gaugesJson["jvm.memory.pools.PS-Old-Gen.usage"]==null)
121                                 {
122                                         Tenured_Gen_usage=0;
123                                 }
124                                 else{
125                                         Tenured_Gen_usage=gaugesJson["jvm.memory.pools.PS-Old-Gen.usage"].value;
126                                 }
127                         }
128                         else{
129                                 Tenured_Gen_usage=gaugesJson["jvm.memory.pools.Tenured-Gen.usage"].value;
130                         }       
131
132
133                    var memoryPieMetrics_data={
134                         CodeCache:(gaugesJson["jvm.memory.pools.Code-Cache.usage"].value*100).toFixed(1),
135                         EdenSpace:(Eden_Space_usage*100).toFixed(1),
136                         PermGen:(Perm_Gen_usage*100).toFixed(1),
137                         SurvivorSpace:(Survivor_Space_usage*100).toFixed(1),
138                         TenuredGen:(Tenured_Gen_usage*100).toFixed(1)
139                         };
140                    metricsChart.memoryPieMetrics(memoryPieMetrics_data);
141
142                    // initialize the JVM memory map
143                    var heap_init=Math.round(gaugesJson["jvm.memory.heap.init"].value/1000000);
144                    var non_heap_init=Math.round(gaugesJson["jvm.memory.non-heap.init"].value/1000000);
145
146                    var heap_used=Math.round(gaugesJson["jvm.memory.heap.used"].value/1000000);
147                    var non_heap_used=Math.round(gaugesJson["jvm.memory.non-heap.used"].value/1000000);
148
149                    var heap_max=Math.round(gaugesJson["jvm.memory.heap.max"].value/1000000);
150                    var non_heap_max=Math.round(gaugesJson["jvm.memory.non-heap.max"].value/1000000);
151
152                    var memoryBarMetrics_data={
153                         init:[
154                                 heap_init,
155                                 non_heap_init,
156                                 non_heap_init+heap_init
157                                 ],
158                         used:[
159                                 heap_used,
160                                 non_heap_used,
161                                 non_heap_used+heap_used
162                                 ],
163                         max:[
164                                 heap_max,
165                                 non_heap_max,
166                                 non_heap_max+heap_max
167                                 ]
168                    };
169                    metricsChart.memoryBarMetrics(memoryBarMetrics_data);
170
171                    //Initializes the thread profile
172                    var threadsMetrics_data= [{value:gaugesJson["jvm.threads.runnable.count"].value, name:'Runnable'},
173                 {value:gaugesJson["jvm.threads.timed_waiting.count"].value, name:'Timed waiting'},
174                 {value:gaugesJson["jvm.threads.waiting.count"].value, name:'Waiting'},
175                 {value:gaugesJson["jvm.threads.blocked.count"].value, name:'Blocked'}];
176                 vm.threadNum=gaugesJson["jvm.threads.count"].value;
177                                 metricsChart.threadsMetrics(threadsMetrics_data);
178
179                                 //Initialize the Rest interface traffic map
180                                 var restMetrics_data={restName:[],restCount:[]};        
181                                   $.each(testRestJson,function(name,value) {
182                                         if(name=="io.dropwizard.jetty.MutableServletContextHandler.connect-requests") return false;
183                                 var nameArray=name.split(".");
184
185                                         restMetrics_data.restName.push(nameArray[nameArray.length-1]);
186                                         restMetrics_data.restCount.push(value.count);
187
188                                 });
189                                 
190
191                    metricsChart.restMetrics(restMetrics_data); 
192
193
194                    //Initialize the HTTP traffic
195                    var requestsMetrics_data={get:"",post:"",put:"",delete:"",other:""};
196                    requestsMetrics_data.get=testRestJson["io.dropwizard.jetty.MutableServletContextHandler.get-requests"].count;
197                    requestsMetrics_data.post=testRestJson["io.dropwizard.jetty.MutableServletContextHandler.post-requests"].count;
198                    requestsMetrics_data.put=testRestJson["io.dropwizard.jetty.MutableServletContextHandler.put-requests"].count;
199                    requestsMetrics_data.delete=testRestJson["io.dropwizard.jetty.MutableServletContextHandler.delete-requests"].count;
200                    requestsMetrics_data.other=testRestJson["io.dropwizard.jetty.MutableServletContextHandler.other-requests"].count;
201                    metricsChart.requestsMetrics(requestsMetrics_data);
202
203                    //Initialize the HTTP access list in detail
204                   $.each(testRestJson,function(name,value) {
205                         if(name.indexOf("org.eclipse.jetty.server.HttpConnectionFactory") == 0) return true;
206                         var obj=value;
207                         obj.name=name;
208                                 vm.restArray.push(obj);
209                                 });
210
211                         $('#restTable').DataTable({
212                               responsive: true,
213                                   destroy: true,
214                                   "oLanguage": vm.$dataTableLanguage
215                                 });
216                    
217                                  },
218                      error: function(XMLHttpRequest, textStatus, errorThrown) {
219                                                   
220                             vm.isErr=true;
221                           }
222                        });
223
224                         }                       
225                         
226
227         });
228 avalon.scan();
229 vm.initMetrics();
230