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.regionserver.MetricsRegionServerWrapper;
12
13 import org.apache.hadoop.hbase.util.Bytes;
14
15 import org.apache.hadoop.hbase.HRegionInfo;
16
17 import org.apache.hadoop.hbase.ServerName;
18
19 import org.apache.hadoop.hbase.HBaseConfiguration;
20
21 import org.apache.hadoop.hbase.protobuf.ProtobufUtil;
22
23 import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.ServerInfo;
24
25 import org.apache.hadoop.hbase.protobuf.generated.ClusterStatusProtos.RegionLoad;
26
27 import org.apache.hadoop.hbase.metrics.histogram.MetricsHistogram;
28
29 import org.apache.hadoop.hbase.util.DirectMemoryUtils;
30
31 import org.apache.hadoop.util.StringUtils;
32
33 import com.yammer.metrics.stats.Snapshot;
34
35 import java.lang.management.ManagementFactory;
36
37 public class ServerMetricsTmplImpl
38 extends org.jamon.AbstractTemplateImpl
39 implements org.apache.hadoop.hbase.tmpl.regionserver.ServerMetricsTmpl.Intf
40
41 {
42 private final MetricsRegionServerWrapper mWrap;
43 protected static org.apache.hadoop.hbase.tmpl.regionserver.ServerMetricsTmpl.ImplData __jamon_setOptionalArguments(org.apache.hadoop.hbase.tmpl.regionserver.ServerMetricsTmpl.ImplData p_implData)
44 {
45 return p_implData;
46 }
47 public ServerMetricsTmplImpl(org.jamon.TemplateManager p_templateManager, org.apache.hadoop.hbase.tmpl.regionserver.ServerMetricsTmpl.ImplData p_implData)
48 {
49 super(p_templateManager, __jamon_setOptionalArguments(p_implData));
50 mWrap = p_implData.getMWrap();
51 }
52
53 public void renderNoFlush(@SuppressWarnings({"unused","hiding"}) 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_hlogStats\" data-toggle=\"tab\">hlogs</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 <li class=\"\"><a href=\"#tab_blockCacheStats\" data-toggle=\"tab\">Block Cache</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_hlogStats\">\n ");
79
80 {
81
82 __jamon_innerUnit__hlogStats(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 );
97 }
98
99 jamonWriter.write("\n </div>\n <div class=\"tab-pane\" id=\"tab_blockCacheStats\">\n ");
100
101 {
102
103 __jamon_innerUnit__blockCacheStats(jamonWriter, mWrap );
104 }
105
106 jamonWriter.write("\n </div>\n </div>\n</div>\n\n");
107 }
108
109
110
111 private void __jamon_innerUnit__requestStats(@SuppressWarnings({"unused","hiding"}) final java.io.Writer jamonWriter, final MetricsRegionServerWrapper mWrap)
112 throws java.io.IOException
113 {
114
115 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>");
116
117 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(String.format("%.0f", mWrap.getRequestsPerSecond())), jamonWriter);
118
119 jamonWriter.write("</td>\n <td>");
120
121 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(mWrap.getReadRequestsCount()), jamonWriter);
122
123 jamonWriter.write("</td>\n <td>");
124
125 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(mWrap.getWriteRequestsCount()), jamonWriter);
126
127 jamonWriter.write("</td>\n</tr>\n</table>\n");
128 }
129
130
131
132 private void __jamon_innerUnit__queueStats(@SuppressWarnings({"unused","hiding"}) final java.io.Writer jamonWriter, final MetricsRegionServerWrapper mWrap)
133 throws java.io.IOException
134 {
135
136 jamonWriter.write("<table class=\"table table-striped\">\n<tr>\n <th>Compaction Queue Size</th>\n <th>Flush Queue Size</th>\n\n</tr>\n<tr>\n <td>");
137
138 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(mWrap.getCompactionQueueSize()), jamonWriter);
139
140 jamonWriter.write("</td>\n <td>");
141
142 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(mWrap.getFlushQueueSize()), jamonWriter);
143
144 jamonWriter.write("</td>\n</tr>\n</table>\n");
145 }
146
147
148
149 private void __jamon_innerUnit__blockCacheStats(@SuppressWarnings({"unused","hiding"}) final java.io.Writer jamonWriter, final MetricsRegionServerWrapper mWrap)
150 throws java.io.IOException
151 {
152
153 jamonWriter.write("<table class=\"table table-striped\">\n<tr>\n <th>Cache Size (bytes)</th>\n <th>Cache Free (bytes)</th>\n <th>Cache Count (blocks)</th>\n <th>Cache Hit Count</th>\n <th>Cache Miss Count</th>\n <th>Cache Hit Ratio</th>\n <th>Cache Eviction Count</th>\n\n</tr>\n<tr>\n <td>");
154
155 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(StringUtils.humanReadableInt(mWrap.getBlockCacheSize())), jamonWriter);
156
157 jamonWriter.write("</td>\n <td>");
158
159 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(StringUtils.humanReadableInt(mWrap.getBlockCacheFreeSize())), jamonWriter);
160
161 jamonWriter.write("</td>\n <td>");
162
163 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(StringUtils.humanReadableInt(mWrap.getBlockCacheCount())), jamonWriter);
164
165 jamonWriter.write("</td>\n <td>");
166
167 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(StringUtils.humanReadableInt(mWrap.getBlockCacheHitCount())), jamonWriter);
168
169 jamonWriter.write("</td>\n <td>");
170
171 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(StringUtils.humanReadableInt(mWrap.getBlockCacheMissCount())), jamonWriter);
172
173 jamonWriter.write("</td>\n <td>");
174
175 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(mWrap.getBlockCacheHitPercent()), jamonWriter);
176
177 jamonWriter.write("%</td>\n <td>");
178
179 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(StringUtils.humanReadableInt(mWrap.getBlockCacheEvictedCount())), jamonWriter);
180
181 jamonWriter.write("</td>\n</tr>\n</table>\n");
182 }
183
184
185
186 private void __jamon_innerUnit__hlogStats(@SuppressWarnings({"unused","hiding"}) final java.io.Writer jamonWriter, final MetricsRegionServerWrapper mWrap)
187 throws java.io.IOException
188 {
189
190 jamonWriter.write("<table class=\"table table-striped\">\n<tr>\n <tr>\n <th>Num. HLog Files</th>\n <th>Size. HLog Files (bytes)</th>\n </tr>\n</tr>\n<tr>\n <td>");
191
192 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(mWrap.getNumHLogFiles()), jamonWriter);
193
194 jamonWriter.write("</td>\n <td>");
195
196 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(mWrap.getHLogFileSize()), jamonWriter);
197
198 jamonWriter.write("</td>\n</tr>\n</table>\n");
199 }
200
201
202
203 private void __jamon_innerUnit__memoryStats(@SuppressWarnings({"unused","hiding"}) final java.io.Writer jamonWriter, final MetricsRegionServerWrapper mWrap)
204 throws java.io.IOException
205 {
206
207 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 ");
208
209 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(StringUtils.humanReadableInt(ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getUsed())), jamonWriter);
210
211 jamonWriter.write("\n </td>\n <td>\n ");
212
213 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(StringUtils.humanReadableInt(ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getMax())), jamonWriter);
214
215 jamonWriter.write("\n </td>\n <td>\n ");
216
217 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(StringUtils.humanReadableInt(DirectMemoryUtils.getDirectMemoryUsage())), jamonWriter);
218
219 jamonWriter.write("\n </td>\n <td>\n ");
220
221 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(StringUtils.humanReadableInt(DirectMemoryUtils.getDirectMemorySize())), jamonWriter);
222
223 jamonWriter.write("\n </td>\n <td>");
224
225 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(StringUtils.humanReadableInt(mWrap.getMemstoreSize())), jamonWriter);
226
227 jamonWriter.write("</td>\n</tr>\n</table>\n");
228 }
229
230
231
232 private void __jamon_innerUnit__baseStats(@SuppressWarnings({"unused","hiding"}) final java.io.Writer jamonWriter, final MetricsRegionServerWrapper mWrap)
233 throws java.io.IOException
234 {
235
236 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>Slow HLog Append Count</th>\n </tr>\n <tr>\n <td>");
237
238 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(String.format("%.0f", mWrap.getRequestsPerSecond())), jamonWriter);
239
240 jamonWriter.write("</td>\n <td>");
241
242 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(mWrap.getNumOnlineRegions()), jamonWriter);
243
244 jamonWriter.write("</td>\n <td>");
245
246 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(mWrap.getPercentFileLocal()), jamonWriter);
247
248 jamonWriter.write("</td>\n <td>");
249
250 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(0), jamonWriter);
251
252 jamonWriter.write("</td>\n </tr>\n</table>\n");
253 }
254
255
256
257 private void __jamon_innerUnit__storeStats(@SuppressWarnings({"unused","hiding"}) final java.io.Writer jamonWriter, final MetricsRegionServerWrapper mWrap)
258 throws java.io.IOException
259 {
260
261 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>");
262
263 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(StringUtils.humanReadableInt(mWrap.getNumStores())), jamonWriter);
264
265 jamonWriter.write("</td>\n <td>");
266
267 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(StringUtils.humanReadableInt(mWrap.getNumStoreFiles())), jamonWriter);
268
269 jamonWriter.write("</td>\n <td>");
270
271 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(StringUtils.humanReadableInt(mWrap.getStoreFileIndexSize())), jamonWriter);
272
273 jamonWriter.write("</td>\n <td>");
274
275 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(StringUtils.humanReadableInt(mWrap.getTotalStaticIndexSize())), jamonWriter);
276
277 jamonWriter.write("</td>\n <td>");
278
279 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(StringUtils.humanReadableInt(mWrap.getTotalStaticBloomSize())), jamonWriter);
280
281 jamonWriter.write("</td>\n</tr>\n</table>\n");
282 }
283
284
285 }