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