1
2
3
4 package org.apache.hadoop.hbase.tmpl.master;
5
6
7 import java.util.*;
8
9 import org.apache.hadoop.util.StringUtils;
10
11 import org.apache.hadoop.hbase.util.Bytes;
12
13 import org.apache.hadoop.hbase.util.JvmVersion;
14
15 import org.apache.hadoop.hbase.util.FSUtils;
16
17 import org.apache.hadoop.hbase.master.HMaster;
18
19 import org.apache.hadoop.hbase.HConstants;
20
21 import org.apache.hadoop.hbase.HServerLoad;
22
23 import org.apache.hadoop.hbase.ServerName;
24
25 import org.apache.hadoop.hbase.client.HBaseAdmin;
26
27 import org.apache.hadoop.hbase.client.HConnectionManager;
28
29 import org.apache.hadoop.hbase.HTableDescriptor;
30
31 import org.apache.hadoop.hbase.HBaseConfiguration;
32
33 import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.SnapshotDescription;
34
35 public class MasterStatusTmplImpl
36 extends org.jamon.AbstractTemplateImpl
37 implements org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl.Intf
38
39 {
40 private final HMaster master;
41 private final HBaseAdmin admin;
42 private final List<ServerName> servers;
43 private final String filter;
44 private final String format;
45 private final ServerName metaLocation;
46 private final ServerName rootLocation;
47 private final Map<String,Integer> frags;
48 private final Set<ServerName> deadServers;
49 private final boolean showAppendWarning;
50 protected static org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl.ImplData __jamon_setOptionalArguments(org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl.ImplData p_implData)
51 {
52 if(! p_implData.getServers__IsNotDefault())
53 {
54 p_implData.setServers(null);
55 }
56 if(! p_implData.getFilter__IsNotDefault())
57 {
58 p_implData.setFilter("general");
59 }
60 if(! p_implData.getFormat__IsNotDefault())
61 {
62 p_implData.setFormat("html");
63 }
64 if(! p_implData.getMetaLocation__IsNotDefault())
65 {
66 p_implData.setMetaLocation(null);
67 }
68 if(! p_implData.getRootLocation__IsNotDefault())
69 {
70 p_implData.setRootLocation(null);
71 }
72 if(! p_implData.getFrags__IsNotDefault())
73 {
74 p_implData.setFrags(null);
75 }
76 if(! p_implData.getDeadServers__IsNotDefault())
77 {
78 p_implData.setDeadServers(null);
79 }
80 if(! p_implData.getShowAppendWarning__IsNotDefault())
81 {
82 p_implData.setShowAppendWarning(false);
83 }
84 return p_implData;
85 }
86 public MasterStatusTmplImpl(org.jamon.TemplateManager p_templateManager, org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl.ImplData p_implData)
87 {
88 super(p_templateManager, __jamon_setOptionalArguments(p_implData));
89 master = p_implData.getMaster();
90 admin = p_implData.getAdmin();
91 servers = p_implData.getServers();
92 filter = p_implData.getFilter();
93 format = p_implData.getFormat();
94 metaLocation = p_implData.getMetaLocation();
95 rootLocation = p_implData.getRootLocation();
96 frags = p_implData.getFrags();
97 deadServers = p_implData.getDeadServers();
98 showAppendWarning = p_implData.getShowAppendWarning();
99 }
100
101 public void renderNoFlush(@SuppressWarnings({"unused","hiding"}) final java.io.Writer jamonWriter)
102 throws java.io.IOException
103 {
104
105 if (format.equals("json") )
106 {
107
108 jamonWriter.write("\n ");
109
110 {
111 org.apache.hadoop.hbase.tmpl.common.TaskMonitorTmpl __jamon__var_2 = new org.apache.hadoop.hbase.tmpl.common.TaskMonitorTmpl(this.getTemplateManager());
112 __jamon__var_2.setFormat("json" );
113 __jamon__var_2.setFilter(filter);
114 __jamon__var_2.renderNoFlush(jamonWriter);
115 }
116
117 jamonWriter.write("\n ");
118
119 return;
120 }
121
122 jamonWriter.write("\n<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!-- Commenting out DOCTYPE so our blue outline shows on hadoop 0.20.205.0, etc.\n See tail of HBASE-2110 for explaination.\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \n \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"> \n-->\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><meta http-equiv=\"Content-Type\" content=\"text/html;charset=UTF-8\"/>\n<title>HBase Master: ");
123
124 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(master.getServerName()), jamonWriter);
125
126 jamonWriter.write("</title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"/static/hbase.css\" />\n</head>\n<body>\n<a id=\"logo\" href=\"http://wiki.apache.org/lucene-hadoop/Hbase\"><img src=\"/static/hbase_logo.png\" alt=\"HBase Logo\" title=\"HBase Logo\" /></a>\n<h1 id=\"page_title\">Master: ");
127
128 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(master.getServerName().getHostname()), jamonWriter);
129
130 jamonWriter.write(":");
131
132 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(master.getServerName().getPort()), jamonWriter);
133
134 jamonWriter.write("</h1>\n<p id=\"links_menu\">\n <a href=\"/logs/\">Local logs</a>,\n <a href=\"/stacks\">Thread Dump</a>,\n <a href=\"/logLevel\">Log Level</a>,\n <a href=\"/dump\">Debug dump</a>,\n");
135
136 if (HBaseConfiguration.isShowConfInServlet())
137 {
138
139 jamonWriter.write("\n <a href=\"/conf\">HBase Configuration</a>\n");
140 }
141
142 jamonWriter.write("\n</p>\n\n<!-- Various warnings that cluster admins should be aware of -->\n");
143
144 if (JvmVersion.isBadJvmVersion() )
145 {
146
147 jamonWriter.write("\n <div class=\"warning\">\n Your current JVM version ");
148
149 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(System.getProperty("java.version")), jamonWriter);
150
151 jamonWriter.write(" is known to be\n unstable with HBase. Please see the\n <a href=\"http://wiki.apache.org/hadoop/Hbase/Troubleshooting#A18\">HBase wiki</a>\n for details.\n </div>\n");
152 }
153
154 jamonWriter.write("\n");
155
156 if (showAppendWarning )
157 {
158
159 jamonWriter.write(" \n <div class=\"warning\">\n You are currently running the HMaster without HDFS append support enabled.\n This may result in data loss.\n Please see the <a href=\"http://wiki.apache.org/hadoop/Hbase/HdfsSyncSupport\">HBase wiki</a>\n for details.\n </div>\n");
160 }
161
162 jamonWriter.write("\n\n<hr id=\"head_rule\" />\n<h2>Attributes</h2>\n<table id=\"attributes_table\">\n<tr><th>Attribute Name</th><th>Value</th><th>Description</th></tr>\n<tr><td>HBase Version</td><td>");
163
164 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(org.apache.hadoop.hbase.util.VersionInfo.getVersion()), jamonWriter);
165
166 jamonWriter.write(", r");
167
168 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(org.apache.hadoop.hbase.util.VersionInfo.getRevision()), jamonWriter);
169
170 jamonWriter.write("</td><td>HBase version and revision</td></tr>\n<tr><td>HBase Compiled</td><td>");
171
172 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(org.apache.hadoop.hbase.util.VersionInfo.getDate()), jamonWriter);
173
174 jamonWriter.write(", ");
175
176 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(org.apache.hadoop.hbase.util.VersionInfo.getUser()), jamonWriter);
177
178 jamonWriter.write("</td><td>When HBase version was compiled and by whom</td></tr>\n<tr><td>Hadoop Version</td><td>");
179
180 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(org.apache.hadoop.util.VersionInfo.getVersion()), jamonWriter);
181
182 jamonWriter.write(", r");
183
184 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(org.apache.hadoop.util.VersionInfo.getRevision()), jamonWriter);
185
186 jamonWriter.write("</td><td>Hadoop version and revision</td></tr>\n<tr><td>Hadoop Compiled</td><td>");
187
188 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(org.apache.hadoop.util.VersionInfo.getDate()), jamonWriter);
189
190 jamonWriter.write(", ");
191
192 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(org.apache.hadoop.util.VersionInfo.getUser()), jamonWriter);
193
194 jamonWriter.write("</td><td>When Hadoop version was compiled and by whom</td></tr>\n<tr><td>HBase Root Directory</td><td>");
195
196 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(FSUtils.getRootDir(master.getConfiguration()).toString()), jamonWriter);
197
198 jamonWriter.write("</td><td>Location of HBase home directory</td></tr>\n<tr><td>HBase Cluster ID</td><td>");
199
200 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(master.getClusterId() != null ? master.getClusterId() : "Not set"), jamonWriter);
201
202 jamonWriter.write("<td>Unique identifier generated for each HBase cluster</td></tr>\n<tr><td>Load average</td><td>");
203
204 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(StringUtils.limitDecimalTo2(master.getServerManager().getAverageLoad())), jamonWriter);
205
206 jamonWriter.write("</td><td>Average number of regions per regionserver. Naive computation.</td></tr>\n");
207
208 if (frags != null )
209 {
210
211 jamonWriter.write("\n <tr><td>Fragmentation</td><td>");
212
213 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(frags.get("-TOTAL-") != null ? frags.get("-TOTAL-").intValue() + "%" : "n/a"), jamonWriter);
214
215 jamonWriter.write("</td><td>Overall fragmentation of all tables, including .META. and -ROOT-.</td></tr>\n");
216 }
217
218 jamonWriter.write("\n<tr><td>Zookeeper Quorum</td><td>");
219
220 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(master.getZooKeeperWatcher().getQuorum()), jamonWriter);
221
222 jamonWriter.write("</td><td>Addresses of all registered ZK servers. For more, see <a href=\"/zk.jsp\">zk dump</a>.</td></tr>\n<tr>\n <td>\n Coprocessors</td><td>");
223
224 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(java.util.Arrays.toString(master.getCoprocessors())), jamonWriter);
225
226 jamonWriter.write("\n </td>\n <td>Coprocessors currently loaded loaded by the master</td>\n</tr>\n<tr><td>HMaster Start Time</td><td>");
227
228 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(new Date(master.getMasterStartTime())), jamonWriter);
229
230 jamonWriter.write("</td><td>Date stamp of when this HMaster was started</td></tr>\n<tr><td>HMaster Active Time</td><td>");
231
232 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(new Date(master.getMasterActiveTime())), jamonWriter);
233
234 jamonWriter.write("</td><td>Date stamp of when this HMaster became active</td></tr>\n</table>\n\n");
235
236 {
237 org.apache.hadoop.hbase.tmpl.common.TaskMonitorTmpl __jamon__var_3 = new org.apache.hadoop.hbase.tmpl.common.TaskMonitorTmpl(this.getTemplateManager());
238 __jamon__var_3.setFilter(filter );
239 __jamon__var_3.renderNoFlush(jamonWriter);
240 }
241
242 jamonWriter.write("\n\n");
243
244 if ((rootLocation != null) )
245 {
246
247 jamonWriter.write("\n");
248
249 {
250
251 __jamon_innerUnit__catalogTables(jamonWriter);
252 }
253
254 jamonWriter.write("\n");
255 }
256
257 jamonWriter.write("\n");
258
259 if ((metaLocation != null) )
260 {
261
262 jamonWriter.write("\n");
263
264 {
265
266 __jamon_innerUnit__userTables(jamonWriter);
267 }
268
269 jamonWriter.write("\n");
270 }
271
272 jamonWriter.write("\n");
273
274 {
275
276 __jamon_innerUnit__userSnapshots(jamonWriter);
277 }
278
279 jamonWriter.write("\n");
280
281 if ((servers != null) )
282 {
283
284 jamonWriter.write("\n");
285
286 {
287
288 __jamon_innerUnit__regionServers(jamonWriter);
289 }
290
291 jamonWriter.write("\n");
292 }
293
294 jamonWriter.write("\n");
295
296 if ((deadServers != null) )
297 {
298
299 jamonWriter.write("\n");
300
301 {
302
303 __jamon_innerUnit__deadRegionServers(jamonWriter);
304 }
305
306 jamonWriter.write("\n");
307 }
308
309 jamonWriter.write("\n\n");
310
311 {
312 org.apache.hadoop.hbase.tmpl.master.AssignmentManagerStatusTmpl __jamon__var_4 = new org.apache.hadoop.hbase.tmpl.master.AssignmentManagerStatusTmpl(this.getTemplateManager());
313 __jamon__var_4.renderNoFlush(jamonWriter, master.getAssignmentManager());
314 }
315
316 jamonWriter.write("\n\n</body>\n</html>\n\n\n");
317
318
319 HConnectionManager.deleteConnection(admin.getConfiguration(), false);
320
321 }
322
323
324
325 private void __jamon_innerUnit__userSnapshots(@SuppressWarnings({"unused","hiding"}) final java.io.Writer jamonWriter)
326 throws java.io.IOException
327 {
328
329
330 List<SnapshotDescription> snapshots = admin.listSnapshots();
331
332
333 if ((snapshots != null && snapshots.size() > 0))
334 {
335
336 jamonWriter.write("\n<table>\n<tr>\n <th>Snapshot</th>\n <th>Table</th>\n <th>Creation Time</th>\n <th>Type</th>\n</tr>\n");
337
338 for (SnapshotDescription snapshotDesc : snapshots)
339 {
340
341 jamonWriter.write("\n<tr>\n <td>");
342
343 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(snapshotDesc.getName()), jamonWriter);
344
345 jamonWriter.write("</td>\n <td><a href=\"table.jsp?name=");
346
347 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(snapshotDesc.getTable()), jamonWriter);
348
349 jamonWriter.write("\">");
350
351 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(snapshotDesc.getTable()), jamonWriter);
352
353 jamonWriter.write("</a></td>\n <td>");
354
355 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(new Date(snapshotDesc.getCreationTime())), jamonWriter);
356
357 jamonWriter.write("</td>\n <td>");
358
359 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(snapshotDesc.getType()), jamonWriter);
360
361 jamonWriter.write("</td>\n</tr>\n");
362 }
363
364 jamonWriter.write("\n\n<p> ");
365
366 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(snapshots.size()), jamonWriter);
367
368 jamonWriter.write(" snapshot(s) in set.</p>\n</table>\n");
369 }
370
371 jamonWriter.write("\n");
372 }
373
374
375
376 private void __jamon_innerUnit__catalogTables(@SuppressWarnings({"unused","hiding"}) final java.io.Writer jamonWriter)
377 throws java.io.IOException
378 {
379
380 jamonWriter.write("<h2>Tables</h2>\n<table>\n<tr>\n <th>Catalog Table</th>\n ");
381
382 if ((frags != null) )
383 {
384
385 jamonWriter.write("\n <th title=\"Fragmentation - Will be 0% after a major compaction and fluctuate during normal usage.\">Frag.</th>\n ");
386 }
387
388 jamonWriter.write("\n <th>Description</th>\n</tr>\n<tr>\n <td><a href=\"table.jsp?name=");
389
390 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(Bytes.toString(HConstants.ROOT_TABLE_NAME)), jamonWriter);
391
392 jamonWriter.write("\">");
393
394 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(Bytes.toString(HConstants.ROOT_TABLE_NAME)), jamonWriter);
395
396 jamonWriter.write("</a></td>\n ");
397
398 if ((frags != null))
399 {
400
401 jamonWriter.write("\n <td align=\"center\">");
402
403 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(frags.get("-ROOT-") != null ? frags.get("-ROOT-").intValue() + "%" : "n/a"), jamonWriter);
404
405 jamonWriter.write("</td>\n ");
406 }
407
408 jamonWriter.write("\n <td>The -ROOT- table holds references to all .META. regions.</td>\n</tr>\n ");
409
410 if ((metaLocation != null) )
411 {
412
413 jamonWriter.write("\n<tr>\n <td><a href=\"table.jsp?name=");
414
415 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(Bytes.toString(HConstants.META_TABLE_NAME)), jamonWriter);
416
417 jamonWriter.write("\">");
418
419 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(Bytes.toString(HConstants.META_TABLE_NAME)), jamonWriter);
420
421 jamonWriter.write("</a></td>\n ");
422
423 if ((frags != null))
424 {
425
426 jamonWriter.write("\n <td align=\"center\">");
427
428 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(frags.get(".META.") != null ? frags.get(".META.").intValue() + "%" : "n/a"), jamonWriter);
429
430 jamonWriter.write("</td>\n ");
431 }
432
433 jamonWriter.write("\n <td>The .META. table holds references to all User Table regions</td>\n</tr>\n \n ");
434 }
435
436 jamonWriter.write("\n</table>\n");
437 }
438
439
440
441 private void __jamon_innerUnit__userTables(@SuppressWarnings({"unused","hiding"}) final java.io.Writer jamonWriter)
442 throws java.io.IOException
443 {
444
445
446 HTableDescriptor[] tables = admin.listTables();
447
448
449 if ((tables != null && tables.length > 0))
450 {
451
452 jamonWriter.write("\n<table>\n<tr>\n <th>User Table</th>\n");
453
454 if ((frags != null) )
455 {
456
457 jamonWriter.write("\n <th title=\"Fragmentation - Will be 0% after a major compaction and fluctuate during normal usage.\">Frag.</th>\n");
458 }
459
460 jamonWriter.write("\n <th>Online Regions</th>\n <th>Description</th>\n</tr>\n");
461
462 for (HTableDescriptor htDesc : tables)
463 {
464
465 jamonWriter.write("\n<tr>\n <td><a href=table.jsp?name=");
466
467 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(htDesc.getNameAsString()), jamonWriter);
468
469 jamonWriter.write(">");
470
471 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(htDesc.getNameAsString()), jamonWriter);
472
473 jamonWriter.write("</a> </td>\n ");
474
475 if ((frags != null) )
476 {
477
478 jamonWriter.write("\n <td align=\"center\">");
479
480 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(frags.get(htDesc.getNameAsString()) != null ? frags.get(htDesc.getNameAsString()).intValue() + "%" : "n/a"), jamonWriter);
481
482 jamonWriter.write("</td>\n ");
483 }
484
485 jamonWriter.write("\n <td>");
486
487 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(master.getAssignmentManager().getRegionsOfTable(htDesc.getName()).size()), jamonWriter);
488
489 jamonWriter.write("\n <td>");
490
491 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(htDesc.toStringCustomizedValues()), jamonWriter);
492
493 jamonWriter.write("</td>\n</tr>\n");
494 }
495
496 jamonWriter.write("\n\n<p> ");
497
498 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(tables.length), jamonWriter);
499
500 jamonWriter.write(" table(s) in set. [<a href=tablesDetailed.jsp>Details</a>]</p>\n</table>\n");
501 }
502
503 jamonWriter.write("\n");
504 }
505
506
507
508 private void __jamon_innerUnit__regionServers(@SuppressWarnings({"unused","hiding"}) final java.io.Writer jamonWriter)
509 throws java.io.IOException
510 {
511
512 jamonWriter.write("<h2>Region Servers</h2>\n");
513
514 if ((servers != null && servers.size() > 0))
515 {
516
517 jamonWriter.write("\n");
518
519
520 int totalRegions = 0;
521 int totalRequests = 0;
522
523
524 jamonWriter.write("<table>\n<tr><th rowspan=\"");
525
526 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(servers.size() + 1), jamonWriter);
527
528 jamonWriter.write("\"></th><th>ServerName</th><th>Start time</th><th>Load</th></tr>\n");
529
530
531 ServerName [] serverNames = servers.toArray(new ServerName[servers.size()]);
532 Arrays.sort(serverNames);
533 for (ServerName serverName: serverNames) {
534
535
536 int infoPort = master.getConfiguration().getInt("hbase.regionserver.info.port", 60030);
537 String url = "http://" + serverName.getHostname() + ":" + infoPort + "/";
538 HServerLoad hsl = master.getServerManager().getLoad(serverName);
539 String loadStr = hsl == null? "-": hsl.toString();
540 if (hsl != null) {
541 totalRegions += hsl.getNumberOfRegions();
542 totalRequests += hsl.getNumberOfRequests();
543 }
544 long startcode = serverName.getStartcode();
545
546
547 jamonWriter.write("<tr><td><a href=\"");
548
549 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(url), jamonWriter);
550
551 jamonWriter.write("\">");
552
553 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(serverName), jamonWriter);
554
555 jamonWriter.write("</a></td><td>");
556
557 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(new Date(startcode)), jamonWriter);
558
559 jamonWriter.write("</td><td>");
560
561 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(loadStr), jamonWriter);
562
563 jamonWriter.write("</td></tr>\n");
564
565
566 }
567
568
569 jamonWriter.write("<tr><th>Total: </th><td>servers: ");
570
571 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(servers.size()), jamonWriter);
572
573 jamonWriter.write("</td><td></td><td>requestsPerSecond=");
574
575 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(totalRequests), jamonWriter);
576
577 jamonWriter.write(", numberOfOnlineRegions=");
578
579 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(totalRegions), jamonWriter);
580
581 jamonWriter.write("</td></tr>\n</table>\n\n<p>Load is requests per second and count of regions loaded</p>\n");
582 }
583
584 jamonWriter.write("\n");
585 }
586
587
588
589 private void __jamon_innerUnit__deadRegionServers(@SuppressWarnings({"unused","hiding"}) final java.io.Writer jamonWriter)
590 throws java.io.IOException
591 {
592
593 jamonWriter.write("<h3>Dead Region Servers</h3>\n");
594
595 if ((deadServers != null && deadServers.size() > 0))
596 {
597
598 jamonWriter.write("\n\n<table>\n<tr><th rowspan=\"");
599
600 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(deadServers.size() + 1), jamonWriter);
601
602 jamonWriter.write("\"></th><th>ServerName</th></tr>\n");
603
604
605 ServerName [] deadServerNames = deadServers.toArray(new ServerName[deadServers.size()]);
606 Arrays.sort(deadServerNames);
607 for (ServerName deadServerName: deadServerNames) {
608 int infoPort = master.getConfiguration().getInt("hbase.regionserver.info.port", 60030);
609
610
611 jamonWriter.write("<tr><td>");
612
613 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(deadServerName), jamonWriter);
614
615 jamonWriter.write("</td></tr>\n");
616
617
618 }
619
620
621 jamonWriter.write("<tr><th>Total: </th><td>servers: ");
622
623 org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(deadServers.size()), jamonWriter);
624
625 jamonWriter.write("</td></tr>\n</table>\n");
626 }
627
628 jamonWriter.write("\n");
629 }
630
631
632 }