diff --git a/api/pom.xml b/api/pom.xml index 5891298..7fd6666 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -7,7 +7,7 @@ io.ebean.insight ebean-insight-parent - 2.0-RC14 + 2.0-RC15 ../pom.xml diff --git a/cli/pom.xml b/cli/pom.xml index 72e0db3..d0dc0a6 100644 --- a/cli/pom.xml +++ b/cli/pom.xml @@ -7,7 +7,7 @@ io.ebean.insight ebean-insight-parent - 2.0-RC14 + 2.0-RC15 ../pom.xml diff --git a/client/pom.xml b/client/pom.xml index 0aa78c2..9eb3336 100644 --- a/client/pom.xml +++ b/client/pom.xml @@ -7,7 +7,7 @@ io.ebean.insight ebean-insight-parent - 2.0-RC14 + 2.0-RC15 ../pom.xml diff --git a/forwarder/pom.xml b/forwarder/pom.xml index cc95967..c65febd 100644 --- a/forwarder/pom.xml +++ b/forwarder/pom.xml @@ -7,7 +7,7 @@ io.ebean.insight ebean-insight-parent - 2.0-RC14 + 2.0-RC15 ../pom.xml diff --git a/mcp/pom.xml b/mcp/pom.xml index 47921d2..6b3a1dc 100644 --- a/mcp/pom.xml +++ b/mcp/pom.xml @@ -7,7 +7,7 @@ io.ebean.insight ebean-insight-parent - 2.0-RC14 + 2.0-RC15 ../pom.xml diff --git a/pom.xml b/pom.xml index 9fc5fe1..aa87950 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ io.ebean.insight ebean-insight-parent - 2.0-RC14 + 2.0-RC15 pom ebean-insight (parent) diff --git a/server/pom.xml b/server/pom.xml index 7f7d97a..0cecb18 100644 --- a/server/pom.xml +++ b/server/pom.xml @@ -7,7 +7,7 @@ io.ebean.insight ebean-insight-parent - 2.0-RC14 + 2.0-RC15 ../pom.xml diff --git a/server/src/main/java/org/ebean/monitor/domain/DAppMetric.java b/server/src/main/java/org/ebean/monitor/domain/DAppMetric.java index a19cc8f..76b4ba4 100644 --- a/server/src/main/java/org/ebean/monitor/domain/DAppMetric.java +++ b/server/src/main/java/org/ebean/monitor/domain/DAppMetric.java @@ -63,12 +63,6 @@ public class DAppMetric extends BaseDomain { @Index private final boolean planCapable; - /** - * The derived "rollup group" this metric will aggregate into. - */ - @Length(300) - private String rollupGroup; - /** * The code location if supplied. Expected to be class and line of code. */ @@ -113,14 +107,6 @@ public boolean isPlanCapable() { return planCapable; } - public String getRollupGroup() { - return rollupGroup; - } - - public void setRollupGroup(String rollupGroup) { - this.rollupGroup = rollupGroup; - } - public String getLoc() { return loc; } diff --git a/server/src/main/java/org/ebean/monitor/domain/finder/DAppMetricFinder.java b/server/src/main/java/org/ebean/monitor/domain/finder/DAppMetricFinder.java index d1136a1..9a43a0b 100644 --- a/server/src/main/java/org/ebean/monitor/domain/finder/DAppMetricFinder.java +++ b/server/src/main/java/org/ebean/monitor/domain/finder/DAppMetricFinder.java @@ -63,13 +63,4 @@ public DAppMetric globalByName(String name) { .findOne(); } - /** - * Return all the metrics with rollupGroup for use in rollup processing. - */ - public List forRollup() { - final QDAppMetric m = QDAppMetric.alias(); - return new QDAppMetric() - .select(m.name, m.rollupGroup, m.app) - .findList(); - } } diff --git a/server/src/main/java/org/ebean/monitor/ingest/DeriveGroup.java b/server/src/main/java/org/ebean/monitor/ingest/DeriveGroup.java deleted file mode 100644 index 5049e48..0000000 --- a/server/src/main/java/org/ebean/monitor/ingest/DeriveGroup.java +++ /dev/null @@ -1,71 +0,0 @@ -package org.ebean.monitor.ingest; - -/** - * Derive the rollup group name given the full metric name. - */ -class DeriveGroup { - - private static final String L2N = "l2n"; - private static final String L2R = "l2r"; - private static final String IUD = "iud"; - - /** - * Derive and return the rollup group name. - */ - static String of(String metricName) { - int pos = metricName.indexOf('.'); - if (pos == -1) { - return null; - } - String prefix = metricName.substring(0, pos); - if (L2N.equals(prefix)) { - return l2nGroup(metricName); - } - if (L2R.equals(prefix)) { - return l2rGroup(metricName); - } - if (IUD.equals(prefix)) { - return iudGroup(metricName); - } - return null; - } - - /** - * Return L2 near cache rollup group name. - */ - private static String l2nGroup(String metricName) { - return l2Group("l2n", metricName); - } - - /** - * Return L2 remote cache rollup group name. - */ - private static String l2rGroup(String metricName) { - return l2Group("l2r", metricName); - } - - private static String l2Group(String prefix, String metricName) { - int pos = metricName.lastIndexOf('.'); - if (pos == -1) { - return null; - } - String suffix = metricName.substring(pos); - return prefix + suffix; - } - - /** - * Return the IUD rollup group name. - */ - private static String iudGroup(String metricName) { - int pos = metricName.lastIndexOf('.'); - if (pos == -1) { - return null; - } - String suffix = metricName.substring(pos); - if (suffix.length() > 7) { - return "iud" + suffix.substring(0, 7); - } else { - return "iud" + suffix; - } - } -} diff --git a/server/src/main/java/org/ebean/monitor/ingest/IngestBase.java b/server/src/main/java/org/ebean/monitor/ingest/IngestBase.java index f085c8f..8c2996a 100644 --- a/server/src/main/java/org/ebean/monitor/ingest/IngestBase.java +++ b/server/src/main/java/org/ebean/monitor/ingest/IngestBase.java @@ -125,7 +125,6 @@ private DAppMetric createMetric(IngestEntry entry) { final MetricData data = entry.getData(); DAppMetric metric = new DAppMetric(metricApp, entry.getKey(), data.name); - metric.setRollupGroup(DeriveGroup.of(data.name)); metric.setSql(data.sql); metric.setLoc(data.loc); return metric; diff --git a/server/src/main/java/org/ebean/monitor/rollup/Rollup.java b/server/src/main/java/org/ebean/monitor/rollup/Rollup.java index 30ec24f..eee8602 100644 --- a/server/src/main/java/org/ebean/monitor/rollup/Rollup.java +++ b/server/src/main/java/org/ebean/monitor/rollup/Rollup.java @@ -2,8 +2,6 @@ import io.ebean.Database; import io.ebean.annotation.Transactional; -import org.ebean.monitor.domain.DApp; -import org.ebean.monitor.domain.DAppMetric; import org.ebean.monitor.domain.DGaugeRollupM1; import org.ebean.monitor.domain.DRollupJob; import org.ebean.monitor.domain.DTimedRollupM1; @@ -15,24 +13,17 @@ import java.time.Instant; import java.time.ZoneOffset; import java.time.ZonedDateTime; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; public class Rollup { private static final Logger log = LoggerFactory.getLogger(Rollup.class); - private final RollupGroups rollupGroups = new RollupGroups(); - private final Instant eventTime; private final ZonedDateTime atZone; private long executionMillis; private long count; - private final Map globalMetrics = new LinkedHashMap<>(); - public Rollup(Database database, Instant eventTime) { this.eventTime = eventTime; this.atZone = eventTime.atZone(ZoneOffset.UTC); @@ -40,8 +31,7 @@ public Rollup(Database database, Instant eventTime) { public void rollup() { performRollup(); - int rollupCount = rollupGroups.getCount(); - log.debug("rollup time:{} millis:{} count:{} rollupGroups:{}", eventTime, executionMillis, count, rollupCount); + log.debug("rollup time:{} millis:{} count:{}", eventTime, executionMillis, count); extraRollups(); } @@ -76,32 +66,12 @@ boolean mod60(long minuteOfHour) { @Transactional(batchSize = 500) private void performRollup() { final long start = System.currentTimeMillis(); - findAppMetrics(); rollupEvents(); - rollupGroups.saveGauges(); rollupTimed(); - rollupGroups.saveTimed(); executionMillis = System.currentTimeMillis() - start; new DRollupJob(eventTime, executionMillis, count).save(); } - /** - * Load partial for all app metrics (as we check their rollup group). - */ - private void findAppMetrics() { - final List appMetrics = DAppMetric.find.forRollup(); - for (DAppMetric appMetric : appMetrics) { - final DApp app = appMetric.getApp(); - if (app == null) { - final String name = appMetric.getName(); - if (name != null) { - // register AppMetric for use as rollup group metric - globalMetrics.put(name, appMetric); - } - } - } - } - void rollupTimed() { QDTimedAgg a = QDTimedAgg.alias(); @@ -129,31 +99,9 @@ void rollupEvents() { private void add(DTimedRollupM1 timed) { timed.save(); - final DAppMetric metric = timed.getMetric(); - final String group = metric.getRollupGroup(); - if (group != null) { - // rollup group in memory aggregation - final DAppMetric globalMetric = globalMetrics.get(group); - if (globalMetric == null) { - log.warn("skip unknown group metric [{}]", group); - } else { - rollupGroups.addTimed(globalMetric, timed); - } - } } private void add(DGaugeRollupM1 gauge) { gauge.save(); - final DAppMetric metric = gauge.getMetric(); - final String group = metric.getRollupGroup(); - if (group != null) { - // rollup group in memory aggregation - final DAppMetric globalMetric = globalMetrics.get(group); - if (globalMetric == null) { - log.warn("skip unknown group metric [{}]", group); - } else { - rollupGroups.addGauge(globalMetric, gauge); - } - } } } diff --git a/server/src/main/java/org/ebean/monitor/rollup/RollupGroups.java b/server/src/main/java/org/ebean/monitor/rollup/RollupGroups.java deleted file mode 100644 index 20422de..0000000 --- a/server/src/main/java/org/ebean/monitor/rollup/RollupGroups.java +++ /dev/null @@ -1,75 +0,0 @@ -package org.ebean.monitor.rollup; - -import org.ebean.monitor.domain.DAppDatabase; -import org.ebean.monitor.domain.DAppMetric; -import org.ebean.monitor.domain.DGaugeRollupM1; -import org.ebean.monitor.domain.DTimedRollupM1; - -import java.util.HashMap; -import java.util.Map; - -/** - * In memory rollup/aggregation for IUD & L2 cache "rollup group" metrics. - */ -public class RollupGroups { - - private final Map timedMap = new HashMap<>(); - private final Map gaugeMap = new HashMap<>(); - private int count; - - public void addGauge(DAppMetric group, DGaugeRollupM1 gauge) { - count++; - final String key = key(group, gauge); - final DGaugeRollupM1 agg = gaugeMap.get(key); - if (agg == null) { - gaugeMap.put(key, gauge.createRollupGroup(group)); - } else { - agg.aggregate(gauge); - } - } - - public void addTimed(DAppMetric group, DTimedRollupM1 timed) { - count++; - final String key = key(group, timed); - final DTimedRollupM1 agg = timedMap.get(key); - if (agg == null) { - timedMap.put(key, timed.createRollupGroup(group)); - } else { - agg.aggregate(timed); - } - } - - public int getCount() { - return count; - } - - private String key(DAppMetric group, DGaugeRollupM1 entry) { - return group.getName() + "|" + entry.getEnv().getId() + "|" + entry.getApp().getId(); - } - - private String key(DAppMetric group, DTimedRollupM1 entry) { - final DAppDatabase db = entry.getDb(); - int dbId = (db == null) ? 0 : db.getId(); - return group.getName() + "|" + entry.getEnv().getId() + "|" + entry.getApp().getId() + "|" + dbId; - } - - /** - * Save the gauge rollup groups. - */ - public void saveGauges() { - for (DGaugeRollupM1 value : gaugeMap.values()) { - value.save(); - } - gaugeMap.clear(); - } - - /** - * Save the timed rollup groups. - */ - public void saveTimed() { - for (DTimedRollupM1 entry : timedMap.values()) { - entry.save(); - } - timedMap.clear(); - } -} diff --git a/server/src/main/resources/ui/partial/app-metrics.mustache b/server/src/main/resources/ui/partial/app-metrics.mustache index 441f2f5..d574213 100644 --- a/server/src/main/resources/ui/partial/app-metrics.mustache +++ b/server/src/main/resources/ui/partial/app-metrics.mustache @@ -7,7 +7,6 @@ Name Key Loc - Group @@ -17,7 +16,6 @@ {{ name }} {{ key }} {{ loc }} - {{ rollupGroup }} {{/metrics}} diff --git a/server/src/test/java/org/ebean/monitor/ingest/DeriveGroupTest.java b/server/src/test/java/org/ebean/monitor/ingest/DeriveGroupTest.java deleted file mode 100644 index 9fa4bd5..0000000 --- a/server/src/test/java/org/ebean/monitor/ingest/DeriveGroupTest.java +++ /dev/null @@ -1,44 +0,0 @@ -package org.ebean.monitor.ingest; - -import org.junit.jupiter.api.Test; - -import static org.junit.jupiter.api.Assertions.*; - -public class DeriveGroupTest { - - @Test - public void of_expect_null() { - assertNull(DeriveGroup.of("l2n")); - assertNull(DeriveGroup.of("other")); - assertNull(DeriveGroup.of("other.hit")); - } - - @Test - public void of_l2NearCache() { - assertEquals("l2n.hit", DeriveGroup.of("l2n.DOrg_N.hit")); - assertEquals("l2n.miss", DeriveGroup.of("l2n.DOrg_N.miss")); - assertEquals("l2n.put", DeriveGroup.of("l2n.DOrg_N.put")); - assertEquals("l2n.evict", DeriveGroup.of("l2n.DOrg_N.evict")); - } - - @Test - public void of_l2RemoteCache() { - assertEquals("l2r.hit", DeriveGroup.of("l2r.DOrg_N.hit")); - assertEquals("l2r.miss", DeriveGroup.of("l2r.DOrg_N.miss")); - assertEquals("l2r.put", DeriveGroup.of("l2r.DOrg_N.put")); - assertEquals("l2r.evict", DeriveGroup.of("l2r.DOrg_N.evict")); - } - - @Test - public void of_iud() { - assertEquals("iud.insert", DeriveGroup.of("iud.DOrg.insert")); - assertEquals("iud.insert", DeriveGroup.of("iud.DOrg.insertBatch")); - assertEquals("iud.update", DeriveGroup.of("iud.DOrg.update")); - assertEquals("iud.update", DeriveGroup.of("iud.DOrg.updateBatch")); - assertEquals("iud.delete", DeriveGroup.of("iud.DOrg.delete")); - assertEquals("iud.delete", DeriveGroup.of("iud.DOrg.deleteBatch")); - - assertEquals("iud.junk", DeriveGroup.of("iud.DOrg.junk")); - assertEquals("iud.insert", DeriveGroup.of("iud.DOrg.insertJunk")); - } -}