1
2
3
4 package org.apache.hadoop.hbase.tmpl.regionserver;
5
6
7 import java.util.*;
8
9 import org.apache.hadoop.hbase.regionserver.HRegionServer;
10
11 import org.apache.hadoop.hbase.ipc.MetricsHBaseServerWrapper;
12
13 import org.apache.hadoop.hbase.regionserver.MetricsRegionServerWrapper;
14
15 import org.apache.hadoop.hbase.util.Bytes;
16
17 import org.apache.hadoop.hbase.HRegionInfo;
18
19 import org.apache.hadoop.hbase.ServerName;
20
21 import org.apache.hadoop.hbase.HBaseConfiguration;
22
23 import org.apache.hadoop.hbase.protobuf.ProtobufUtil;
24
25 import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ServerInfo;
26
27 import org.apache.hadoop.hbase.protobuf.generated.ClusterStatusProtos.RegionLoad;
28
29 import org.apache.hadoop.hbase.util.DirectMemoryUtils;
30
31 import org.apache.hadoop.util.StringUtils.TraditionalBinaryPrefix;
32
33 import java.lang.management.ManagementFactory;
34
35 public class ServerMetricsTmplImpl
36 extends org.jamon.AbstractTemplateImpl
37 implements org.apache.hadoop.hbase.tmpl.regionserver.ServerMetricsTmpl.Intf
38
39 {
40 private final MetricsRegionServerWrapper mWrap;
41 private final MetricsHBaseServerWrapper mServerWrap;
42 protected static org.apache.hadoop.hbase.tmpl.regionserver.ServerMetricsTmpl.ImplData __jamon_setOptionalArguments(org.apache.hadoop.hbase.tmpl.regionserver.ServerMetricsTmpl.ImplData p_implData)
43 {
44 return p_implData;
45 }
46 public ServerMetricsTmplImpl(org.jamon.TemplateManager p_templateManager, org.apache.hadoop.hbase.tmpl.regionserver.ServerMetricsTmpl.ImplData p_implData)
47 {
48 super(p_templateManager, __jamon_setOptionalArguments(p_implData));
49 mWrap = p_implData.getMWrap();
50 mServerWrap = p_implData.getMServerWrap();
51 }
52
53 @Override public void renderNoFlush(final java.io.Writer jamonWriter)
54 throws java.io.IOException
55 {
56
57 jamonWriter.write("<div class=\"tabbable\">\n <ul class=\"nav nav-pills\">\n <li class=\"active\"><a href=\"#tab_baseStats\" data-toggle=\"tab\">Base Stats</a></li>\n <li class=\"\"><a href=\"#tab_memoryStats\" data-toggle=\"tab\">Memory</a></li>\n <li class=\"\"><a href=\"#tab_requestStats\" data-toggle=\"tab\">Requests</a></li>\n <li class=\"\"><a href=\"#tab_walStats\" data-toggle=\"tab\">WALs</a></li>\n <li class=\"\"><a href=\"#tab_storeStats\" data-toggle=\"tab\">Storefiles</a></li>\n <li class=\"\"><a href=\"#tab_queueStats\" data-toggle=\"tab\">Queues</a></li>\n </ul>\n <div class=\"tab-content\" style=\"padding-bottom: 9px; border-bottom: 1px solid #ddd;\">\n <div class=\"tab-pane active\" id=\"tab_baseStats\">\n ");
58
59 {
60
61 __jamon_innerUnit__baseStats(jamonWriter, mWrap );
62 }
63
64 jamonWriter.write("\n </div>\n <div class=\"tab-pane\" id=\"tab_memoryStats\">\n ");
65
66 {
67
68 __jamon_innerUnit__memoryStats(jamonWriter, mWrap );
69 }
70
71 jamonWriter.write("\n </div>\n <div class=\"tab-pane\" id=\"tab_requestStats\">\n ");
72
73 {
74
75 __jamon_innerUnit__requestStats(jamonWriter, mWrap );
76 }
77
78 jamonWriter.write("\n </div>\n <div class=\"tab-pane\" id=\"tab_walStats\">\n ");
79
80 {
81
82 __jamon_innerUnit__walStats(jamonWriter, mWrap );
83 }
84
85 jamonWriter.write("\n </div>\n <div class=\"tab-pane\" id=\"tab_storeStats\">\n ");
86
87 {
88
89 __jamon_innerUnit__storeStats(jamonWriter, mWrap );
90 }
91
92 jamonWriter.write("\n </div>\n <div class=\"tab-pane\" id=\"tab_queueStats\">\n ");
93
94 {
95
96 __jamon_innerUnit__queueStats(jamonWriter, mWrap, mServerWrap);
97 }
98
99 jamonWriter.write("\n </div>\n </div>\n</div>\n\n");
100 }
101
102
103
104 private void __jamon_innerUnit__requestStats(final java.io.Writer jamonWriter, final MetricsRegionServerWrapper mWrap)
105 throws java.io.IOException
106 {
107
108 jamonWriter.write("<table class=\"table table-striped\">\n<tr>\n <th>Request Per Second</th>\n <th>Read Request Count</th>\n <th>Write Request Count</th>\n</tr>\n<tr>\n <td>");
109
110 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(String.format("%.0f", mWrap.getRequestsPerSecond())), jamonWriter);
111
112 jamonWriter.write("</td>\n <td>");
113
114 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(mWrap.getReadRequestsCount()), jamonWriter);
115
116 jamonWriter.write("</td>\n <td>");
117
118 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(mWrap.getWriteRequestsCount()), jamonWriter);
119
120 jamonWriter.write("</td>\n</tr>\n</table>\n");
121 }
122
123
124
125 private void __jamon_innerUnit__queueStats(final java.io.Writer jamonWriter, final MetricsRegionServerWrapper mWrap, final MetricsHBaseServerWrapper mServerWrap)
126 throws java.io.IOException
127 {
128
129 jamonWriter.write("<table class=\"table table-striped\">\n<tr>\n \t<th>Compaction Queue Size</th>\n\t <th>Flush Queue Size</th>\n\t <th>Total Call Queue Size (bytes)</th>\n\t <th>Priority Call Queue Size</th>\n\t <th>General Call Queue Size</th>\n\t <th>Replication Call Queue Size</th>\n</tr>\n<tr>\n <td>");
130
131 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(mWrap.getCompactionQueueSize()), jamonWriter);
132
133 jamonWriter.write("</td>\n <td>");
134
135 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(mWrap.getFlushQueueSize()), jamonWriter);
136
137 jamonWriter.write("</td>\n <td>");
138
139 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(TraditionalBinaryPrefix.long2String(mServerWrap.getTotalQueueSize(), "B", 1)), jamonWriter);
140
141 jamonWriter.write("</td>\n <td>");
142
143 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(mServerWrap.getPriorityQueueLength()), jamonWriter);
144
145 jamonWriter.write("</td>\n <td>");
146
147 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(mServerWrap.getGeneralQueueLength()), jamonWriter);
148
149 jamonWriter.write("</td>\n <td>");
150
151 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(mServerWrap.getReplicationQueueLength()), jamonWriter);
152
153 jamonWriter.write("</td>\n</tr>\n</table>\n");
154 }
155
156
157
158 private void __jamon_innerUnit__memoryStats(final java.io.Writer jamonWriter, final MetricsRegionServerWrapper mWrap)
159 throws java.io.IOException
160 {
161
162 jamonWriter.write("<table class=\"table table-striped\">\n<tr>\n <tr>\n <th>Used Heap</th>\n <th>Max Heap</th>\n <th>Direct Memory Used</th>\n <th>Direct Memory Configured</th>\n <th>Memstore Size</th>\n </tr>\n</tr>\n<tr>\n <td>\n ");
163
164 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(TraditionalBinaryPrefix.long2String(
165 ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getUsed(), "B", 1)), jamonWriter);
166
167 jamonWriter.write("\n </td>\n <td>\n ");
168
169 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(TraditionalBinaryPrefix.long2String(
170 ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getMax(), "B", 1)), jamonWriter);
171
172 jamonWriter.write("\n </td>\n <td>\n ");
173
174 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(TraditionalBinaryPrefix.long2String(DirectMemoryUtils.getDirectMemoryUsage(), "B", 1)), jamonWriter);
175
176 jamonWriter.write("\n </td>\n <td>\n ");
177
178 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(TraditionalBinaryPrefix.long2String(DirectMemoryUtils.getDirectMemorySize(), "B", 1)), jamonWriter);
179
180 jamonWriter.write("\n </td>\n <td>");
181
182 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(TraditionalBinaryPrefix.long2String(mWrap.getMemstoreSize(), "B", 1)), jamonWriter);
183
184 jamonWriter.write("</td>\n</tr>\n</table>\n");
185 }
186
187
188
189 private void __jamon_innerUnit__baseStats(final java.io.Writer jamonWriter, final MetricsRegionServerWrapper mWrap)
190 throws java.io.IOException
191 {
192
193 jamonWriter.write("<table class=\"table table-striped\">\n <tr>\n\n <th>Requests Per Second</th>\n <th>Num. Regions</th>\n <th>Block locality</th>\n <th>Block locality (Secondary replicas)</th>\n <th>Slow WAL Append Count</th>\n </tr>\n <tr>\n <td>");
194
195 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(String.format("%.0f", mWrap.getRequestsPerSecond())), jamonWriter);
196
197 jamonWriter.write("</td>\n <td>");
198
199 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(mWrap.getNumOnlineRegions()), jamonWriter);
200
201 jamonWriter.write("</td>\n <td>");
202
203 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(mWrap.getPercentFileLocal()), jamonWriter);
204
205 jamonWriter.write("</td>\n <td>");
206
207 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(mWrap.getPercentFileLocalSecondaryRegions()), jamonWriter);
208
209 jamonWriter.write("</td>\n <td>");
210
211 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(0), jamonWriter);
212
213 jamonWriter.write("</td>\n </tr>\n</table>\n");
214 }
215
216
217
218 private void __jamon_innerUnit__walStats(final java.io.Writer jamonWriter, final MetricsRegionServerWrapper mWrap)
219 throws java.io.IOException
220 {
221
222 jamonWriter.write("<table class=\"table table-striped\">\n<tr>\n <tr>\n <th>Num. WAL Files</th>\n <th>Size. WAL Files (bytes)</th>\n </tr>\n</tr>\n<tr>\n <td>");
223
224 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(mWrap.getNumWALFiles()), jamonWriter);
225
226 jamonWriter.write("</td>\n <td>");
227
228 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(TraditionalBinaryPrefix.long2String(mWrap.getWALFileSize(), "B", 1)), jamonWriter);
229
230 jamonWriter.write("</td>\n</tr>\n</table>\n");
231 }
232
233
234
235 private void __jamon_innerUnit__storeStats(final java.io.Writer jamonWriter, final MetricsRegionServerWrapper mWrap)
236 throws java.io.IOException
237 {
238
239 jamonWriter.write("<table class=\"table table-striped\">\n<tr>\n\n <th>Num. Stores</th>\n <th>Num. Storefiles</th>\n <th>Root Index Size (bytes)</th>\n <th>Index Size (bytes)</th>\n <th>Bloom Size (bytes)</th>\n</tr>\n<tr>\n <td>");
240
241 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(mWrap.getNumStores()), jamonWriter);
242
243 jamonWriter.write("</td>\n <td>");
244
245 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(mWrap.getNumStoreFiles()), jamonWriter);
246
247 jamonWriter.write("</td>\n <td>");
248
249 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(TraditionalBinaryPrefix.long2String(mWrap.getStoreFileIndexSize(), "B", 1)), jamonWriter);
250
251 jamonWriter.write("</td>\n <td>");
252
253 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(TraditionalBinaryPrefix.long2String(mWrap.getTotalStaticIndexSize(), "B", 1)), jamonWriter);
254
255 jamonWriter.write("</td>\n <td>");
256
257 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(TraditionalBinaryPrefix.long2String(mWrap.getTotalStaticBloomSize(), "B", 1)), jamonWriter);
258
259 jamonWriter.write("</td>\n</tr>\n</table>\n");
260 }
261
262
263 }