1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.monitoring.reporting.web.plugin.jvm;
18
19 import org.apache.commons.monitoring.reporting.web.handler.api.Regex;
20 import org.apache.commons.monitoring.reporting.web.handler.api.Template;
21 import org.apache.commons.monitoring.reporting.web.plugin.json.Jsons;
22 import org.apache.commons.monitoring.reporting.web.plugin.jvm.gauges.CPUGauge;
23 import org.apache.commons.monitoring.reporting.web.plugin.jvm.gauges.UsedMemoryGauge;
24 import org.apache.commons.monitoring.reporting.web.template.MapBuilder;
25 import org.apache.commons.monitoring.repositories.Repository;
26
27 import java.lang.management.ManagementFactory;
28 import java.lang.management.MemoryMXBean;
29 import java.lang.management.OperatingSystemMXBean;
30 import java.util.Iterator;
31 import java.util.Map;
32
33 public class JVMEndpoints {
34 @Regex
35 public Template home() {
36 final OperatingSystemMXBean os = ManagementFactory.getOperatingSystemMXBean();
37 final MemoryMXBean memory = ManagementFactory.getMemoryMXBean();
38
39 return new Template("jvm/jvm.vm", new MapBuilder<String, Object>()
40 .set("architecture", os.getArch())
41 .set("name", os.getName())
42 .set("version", os.getVersion())
43 .set("numberProcessor", os.getAvailableProcessors())
44 .set("maxMemory", memory.getHeapMemoryUsage().getMax())
45 .set("initMemory", memory.getHeapMemoryUsage().getInit())
46 .build());
47 }
48
49 @Regex("/cpu/([0-9]*)/([0-9]*)")
50 public String cpu(final long start, final long end) {
51 return "{ \"data\": " + Jsons.toJson(Repository.INSTANCE.getGaugeValues(start, end, CPUGauge.CPU)) + ", \"label\": \"CPU Usage\", \"color\": \"#317eac\" }";
52 }
53
54 @Regex("/memory/([0-9]*)/([0-9]*)")
55 public String memory(final long start, final long end) {
56 return "{ \"data\": " + Jsons.toJson(Repository.INSTANCE.getGaugeValues(start, end, UsedMemoryGauge.USED_MEMORY)) + ", \"label\": \"Used Memory\", \"color\": \"#317eac\" }";
57 }
58 }