2 * Copyright 2016 2015-2016 ZTE, Inc. and others. All rights reserved.
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
16 * Author: Zhaoxing Meng
17 * email: meng.zhaoxing1@zte.com.cn
21 $id : "metricsController",
22 routeTargetTitle:$.i18n.prop("org_openo_msb_route_content_title"),
23 $metricsUrl : '/admin/metrics',
32 "sProcessing": "<img src='../img/loading-spinner-grey.gif'/><span> 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"),
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")
46 "sSearch": $.i18n.prop("org_openo_msb_route-table-search"),
47 "sInfoFiltered": $.i18n.prop("org_openo_msb_route-table-infofilter")
49 initMetrics : function() {
56 success: function (resp) {
59 // var restJson = metricsUtil.restJson;
61 var testRestJson=restJson.timers;
62 var gaugesJson=restJson.gauges;
65 var jvmTime=gaugesJson["jvm.attribute.uptime"].value;
67 vm.jvmTime=metricsUtil.formatSeconds(jvmTime);
70 //Initialize the JVM memory usage
72 if(gaugesJson["jvm.memory.pools.Eden-Space.usage"]==null){
73 if(gaugesJson["jvm.memory.pools.PS-Eden-Space.usage"]==null)
78 Eden_Space_usage=gaugesJson["jvm.memory.pools.PS-Eden-Space.usage"].value;
82 Eden_Space_usage=gaugesJson["jvm.memory.pools.Eden-Space.usage"].value;
89 if(gaugesJson["jvm.memory.pools.Perm-Gen.usage"]==null){
90 if(gaugesJson["jvm.memory.pools.PS-Perm-Gen.usage"]==null)
95 Perm_Gen_usage=gaugesJson["jvm.memory.pools.PS-Perm-Gen.usage"].value;
99 Perm_Gen_usage=gaugesJson["jvm.memory.pools.Perm-Gen.usage"].value;
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)
107 Survivor_Space_usage=0;
110 Survivor_Space_usage=gaugesJson["jvm.memory.pools.PS-Survivor-Space.usage"].value;
114 Survivor_Space_usage=gaugesJson["jvm.memory.pools.Survivor-Space.usage"].value;
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)
125 Tenured_Gen_usage=gaugesJson["jvm.memory.pools.PS-Old-Gen.usage"].value;
129 Tenured_Gen_usage=gaugesJson["jvm.memory.pools.Tenured-Gen.usage"].value;
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)
140 metricsChart.memoryPieMetrics(memoryPieMetrics_data);
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);
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);
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);
152 var memoryBarMetrics_data={
156 non_heap_init+heap_init
161 non_heap_used+heap_used
166 non_heap_max+heap_max
169 metricsChart.memoryBarMetrics(memoryBarMetrics_data);
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);
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(".");
185 restMetrics_data.restName.push(nameArray[nameArray.length-1]);
186 restMetrics_data.restCount.push(value.count);
191 metricsChart.restMetrics(restMetrics_data);
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);
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;
208 vm.restArray.push(obj);
211 $('#restTable').DataTable({
214 "oLanguage": vm.$dataTableLanguage
218 error: function(XMLHttpRequest, textStatus, errorThrown) {