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.util.StringUtils;
30
31 import com.yammer.metrics.stats.Snapshot;
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 protected static org.apache.hadoop.hbase.tmpl.regionserver.ServerMetricsTmpl.ImplData __jamon_setOptionalArguments(org.apache.hadoop.hbase.tmpl.regionserver.ServerMetricsTmpl.ImplData p_implData)
42 {
43 return p_implData;
44 }
45 public ServerMetricsTmplImpl(org.jamon.TemplateManager p_templateManager, org.apache.hadoop.hbase.tmpl.regionserver.ServerMetricsTmpl.ImplData p_implData)
46 {
47 super(p_templateManager, __jamon_setOptionalArguments(p_implData));
48 mWrap = p_implData.getMWrap();
49 }
50
51 public void renderNoFlush(@SuppressWarnings({"unused","hiding"}) final java.io.Writer jamonWriter)
52 throws java.io.IOException
53 {
54
55 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 ");
56
57 {
58
59 __jamon_innerUnit__baseStats(jamonWriter, mWrap );
60 }
61
62 jamonWriter.write("\n </div>\n <div class=\"tab-pane\" id=\"tab_memoryStats\">\n ");
63
64 {
65
66 __jamon_innerUnit__memoryStats(jamonWriter, mWrap );
67 }
68
69 jamonWriter.write("\n </div>\n <div class=\"tab-pane\" id=\"tab_requestStats\">\n ");
70
71 {
72
73 __jamon_innerUnit__requestStats(jamonWriter, mWrap );
74 }
75
76 jamonWriter.write("\n </div>\n <div class=\"tab-pane\" id=\"tab_hlogStats\">\n ");
77
78 {
79
80 __jamon_innerUnit__hlogStats(jamonWriter, mWrap );
81 }
82
83 jamonWriter.write("\n </div>\n <div class=\"tab-pane\" id=\"tab_storeStats\">\n ");
84
85 {
86
87 __jamon_innerUnit__storeStats(jamonWriter, mWrap );
88 }
89
90 jamonWriter.write("\n </div>\n <div class=\"tab-pane\" id=\"tab_queueStats\">\n ");
91
92 {
93
94 __jamon_innerUnit__queueStats(jamonWriter, mWrap );
95 }
96
97 jamonWriter.write("\n </div>\n <div class=\"tab-pane\" id=\"tab_blockCacheStats\">\n ");
98
99 {
100
101 __jamon_innerUnit__blockCacheStats(jamonWriter, mWrap );
102 }
103
104 jamonWriter.write("\n </div>\n </div>\n</div>\n\n");
105 }
106
107
108
109 private void __jamon_innerUnit__requestStats(@SuppressWarnings({"unused","hiding"}) final java.io.Writer jamonWriter, final MetricsRegionServerWrapper mWrap)
110 throws java.io.IOException
111 {
112
113 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>");
114
115 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(String.format("%.0f", mWrap.getRequestsPerSecond())), jamonWriter);
116
117 jamonWriter.write("</td>\n <td>");
118
119 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(mWrap.getReadRequestsCount()), jamonWriter);
120
121 jamonWriter.write("</td>\n <td>");
122
123 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(mWrap.getWriteRequestsCount()), jamonWriter);
124
125 jamonWriter.write("</td>\n</tr>\n</table>\n");
126 }
127
128
129
130 private void __jamon_innerUnit__queueStats(@SuppressWarnings({"unused","hiding"}) final java.io.Writer jamonWriter, final MetricsRegionServerWrapper mWrap)
131 throws java.io.IOException
132 {
133
134 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>");
135
136 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(mWrap.getCompactionQueueSize()), jamonWriter);
137
138 jamonWriter.write("</td>\n <td>");
139
140 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(mWrap.getFlushQueueSize()), jamonWriter);
141
142 jamonWriter.write("</td>\n</tr>\n</table>\n");
143 }
144
145
146
147 private void __jamon_innerUnit__blockCacheStats(@SuppressWarnings({"unused","hiding"}) final java.io.Writer jamonWriter, final MetricsRegionServerWrapper mWrap)
148 throws java.io.IOException
149 {
150
151 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>");
152
153 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(StringUtils.humanReadableInt(mWrap.getBlockCacheSize())), jamonWriter);
154
155 jamonWriter.write("</td>\n <td>");
156
157 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(StringUtils.humanReadableInt(mWrap.getBlockCacheFreeSize())), jamonWriter);
158
159 jamonWriter.write("</td>\n <td>");
160
161 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(StringUtils.humanReadableInt(mWrap.getBlockCacheCount())), jamonWriter);
162
163 jamonWriter.write("</td>\n <td>");
164
165 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(StringUtils.humanReadableInt(mWrap.getBlockCacheHitCount())), jamonWriter);
166
167 jamonWriter.write("</td>\n <td>");
168
169 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(StringUtils.humanReadableInt(mWrap.getBlockCacheMissCount())), jamonWriter);
170
171 jamonWriter.write("</td>\n <td>");
172
173 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(mWrap.getBlockCacheHitPercent()), jamonWriter);
174
175 jamonWriter.write("%</td>\n <td>");
176
177 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(StringUtils.humanReadableInt(mWrap.getBlockCacheEvictedCount())), jamonWriter);
178
179 jamonWriter.write("</td>\n</tr>\n</table>\n");
180 }
181
182
183
184 private void __jamon_innerUnit__hlogStats(@SuppressWarnings({"unused","hiding"}) final java.io.Writer jamonWriter, final MetricsRegionServerWrapper mWrap)
185 throws java.io.IOException
186 {
187
188 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>");
189
190 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(mWrap.getNumHLogFiles()), jamonWriter);
191
192 jamonWriter.write("</td>\n <td>");
193
194 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(mWrap.getHLogFileSize()), jamonWriter);
195
196 jamonWriter.write("</td>\n</tr>\n</table>\n");
197 }
198
199
200
201 private void __jamon_innerUnit__memoryStats(@SuppressWarnings({"unused","hiding"}) final java.io.Writer jamonWriter, final MetricsRegionServerWrapper mWrap)
202 throws java.io.IOException
203 {
204
205 jamonWriter.write("<table class=\"table table-striped\">\n<tr>\n <tr>\n <th>Used Heap</th>\n <th>Max Heap</th>\n <th>Memstore Size</th>\n </tr>\n</tr>\n<tr>\n <td>\n ");
206
207 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(StringUtils.humanReadableInt(ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getUsed())), jamonWriter);
208
209 jamonWriter.write("\n </td>\n <td>\n ");
210
211 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(StringUtils.humanReadableInt(ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getMax())), jamonWriter);
212
213 jamonWriter.write("\n </td>\n <td>");
214
215 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(StringUtils.humanReadableInt(mWrap.getMemstoreSize())), jamonWriter);
216
217 jamonWriter.write("</td>\n</tr>\n</table>\n");
218 }
219
220
221
222 private void __jamon_innerUnit__baseStats(@SuppressWarnings({"unused","hiding"}) final java.io.Writer jamonWriter, final MetricsRegionServerWrapper mWrap)
223 throws java.io.IOException
224 {
225
226 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>");
227
228 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(String.format("%.0f", mWrap.getRequestsPerSecond())), jamonWriter);
229
230 jamonWriter.write("</td>\n <td>");
231
232 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(mWrap.getNumOnlineRegions()), jamonWriter);
233
234 jamonWriter.write("</td>\n <td>");
235
236 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(mWrap.getPercentFileLocal()), jamonWriter);
237
238 jamonWriter.write("</td>\n <td>");
239
240 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(0), jamonWriter);
241
242 jamonWriter.write("</td>\n </tr>\n</table>\n");
243 }
244
245
246
247 private void __jamon_innerUnit__storeStats(@SuppressWarnings({"unused","hiding"}) final java.io.Writer jamonWriter, final MetricsRegionServerWrapper mWrap)
248 throws java.io.IOException
249 {
250
251 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>");
252
253 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(StringUtils.humanReadableInt(mWrap.getNumStores())), jamonWriter);
254
255 jamonWriter.write("</td>\n <td>");
256
257 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(StringUtils.humanReadableInt(mWrap.getNumStoreFiles())), jamonWriter);
258
259 jamonWriter.write("</td>\n <td>");
260
261 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(StringUtils.humanReadableInt(mWrap.getStoreFileIndexSize())), jamonWriter);
262
263 jamonWriter.write("</td>\n <td>");
264
265 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(StringUtils.humanReadableInt(mWrap.getTotalStaticIndexSize())), jamonWriter);
266
267 jamonWriter.write("</td>\n <td>");
268
269 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(StringUtils.humanReadableInt(mWrap.getTotalStaticBloomSize())), jamonWriter);
270
271 jamonWriter.write("</td>\n</tr>\n</table>\n");
272 }
273
274
275 }