forked from Archives/Athou_commafeed
better metrics
This commit is contained in:
@@ -2,19 +2,14 @@ package com.commafeed.backend;
|
|||||||
|
|
||||||
import javax.ejb.Singleton;
|
import javax.ejb.Singleton;
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
|
|
||||||
@Singleton
|
@Singleton
|
||||||
public class MetricsBean {
|
public class MetricsBean {
|
||||||
|
|
||||||
private static Logger log = LoggerFactory.getLogger(MetricsBean.class);
|
private Metric lastMinute = new Metric();
|
||||||
|
private Metric thisMinute = new Metric();
|
||||||
|
|
||||||
private int feedsRefreshedLastMinute;
|
private Metric lastHour = new Metric();
|
||||||
private int feedsRefreshedThisMinute;
|
private Metric thisHour = new Metric();
|
||||||
|
|
||||||
private int feedsRefreshedLastHour;
|
|
||||||
private int feedsRefreshedThisHour;
|
|
||||||
|
|
||||||
private long minuteTimestamp;
|
private long minuteTimestamp;
|
||||||
private long hourTimestamp;
|
private long hourTimestamp;
|
||||||
@@ -22,28 +17,54 @@ public class MetricsBean {
|
|||||||
public void feedRefreshed() {
|
public void feedRefreshed() {
|
||||||
long now = System.currentTimeMillis();
|
long now = System.currentTimeMillis();
|
||||||
if (now - minuteTimestamp > 60000) {
|
if (now - minuteTimestamp > 60000) {
|
||||||
feedsRefreshedLastMinute = feedsRefreshedThisMinute;
|
lastMinute = thisMinute;
|
||||||
feedsRefreshedThisMinute = 0;
|
thisMinute = new Metric();
|
||||||
minuteTimestamp = now;
|
minuteTimestamp = now;
|
||||||
log.debug("** feeds per minute: {}", feedsRefreshedLastMinute);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
feedsRefreshedThisMinute++;
|
thisMinute.feedsRefreshed++;
|
||||||
|
|
||||||
if (now - hourTimestamp > 60000 * 60) {
|
if (now - hourTimestamp > 60000 * 60) {
|
||||||
feedsRefreshedLastHour = feedsRefreshedThisHour;
|
lastHour = thisHour;
|
||||||
feedsRefreshedThisHour = 0;
|
thisHour = new Metric();
|
||||||
hourTimestamp = now;
|
hourTimestamp = now;
|
||||||
|
|
||||||
}
|
}
|
||||||
feedsRefreshedThisHour++;
|
thisHour.feedsRefreshed++;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getFeedsRefreshedLastMinute() {
|
public void feedUpdated() {
|
||||||
return feedsRefreshedLastMinute;
|
thisHour.feedsRefreshed++;
|
||||||
|
thisMinute.feedsUpdated++;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getFeedsRefreshedLastHour() {
|
public Metric getLastMinute() {
|
||||||
return feedsRefreshedLastHour;
|
return lastMinute;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Metric getLastHour() {
|
||||||
|
return lastHour;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class Metric {
|
||||||
|
private int feedsRefreshed;
|
||||||
|
private int feedsUpdated;
|
||||||
|
|
||||||
|
public int getFeedsRefreshed() {
|
||||||
|
return feedsRefreshed;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFeedsRefreshed(int feedsRefreshed) {
|
||||||
|
this.feedsRefreshed = feedsRefreshed;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getFeedsUpdated() {
|
||||||
|
return feedsUpdated;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFeedsUpdated(int feedsUpdated) {
|
||||||
|
this.feedsUpdated = feedsUpdated;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import javax.inject.Inject;
|
|||||||
import org.apache.commons.lang.ObjectUtils;
|
import org.apache.commons.lang.ObjectUtils;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
|
|
||||||
|
import com.commafeed.backend.MetricsBean;
|
||||||
import com.commafeed.backend.dao.FeedEntryDAO;
|
import com.commafeed.backend.dao.FeedEntryDAO;
|
||||||
import com.commafeed.backend.dao.FeedEntryStatusDAO;
|
import com.commafeed.backend.dao.FeedEntryStatusDAO;
|
||||||
import com.commafeed.backend.dao.FeedSubscriptionDAO;
|
import com.commafeed.backend.dao.FeedSubscriptionDAO;
|
||||||
@@ -36,6 +37,9 @@ public class FeedUpdateService {
|
|||||||
@Inject
|
@Inject
|
||||||
FeedEntryStatusDAO feedEntryStatusDAO;
|
FeedEntryStatusDAO feedEntryStatusDAO;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
MetricsBean metricsBean;
|
||||||
|
|
||||||
@Lock(LockType.WRITE)
|
@Lock(LockType.WRITE)
|
||||||
public void updateEntries(Feed feed, Collection<FeedEntry> entries) {
|
public void updateEntries(Feed feed, Collection<FeedEntry> entries) {
|
||||||
|
|
||||||
@@ -91,6 +95,7 @@ public class FeedUpdateService {
|
|||||||
|
|
||||||
feedEntryDAO.saveOrUpdate(entryUpdateList);
|
feedEntryDAO.saveOrUpdate(entryUpdateList);
|
||||||
feedEntryStatusDAO.saveOrUpdate(statusUpdateList);
|
feedEntryStatusDAO.saveOrUpdate(statusUpdateList);
|
||||||
|
metricsBean.feedUpdated();
|
||||||
}
|
}
|
||||||
|
|
||||||
private FeedEntry findEntry(List<FeedEntry> existingEntries, FeedEntry entry) {
|
private FeedEntry findEntry(List<FeedEntry> existingEntries, FeedEntry entry) {
|
||||||
|
|||||||
@@ -1,7 +1,5 @@
|
|||||||
package com.commafeed.frontend.rest.resources;
|
package com.commafeed.frontend.rest.resources;
|
||||||
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
@@ -14,6 +12,7 @@ import javax.ws.rs.core.Response.Status;
|
|||||||
|
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
|
|
||||||
|
import com.commafeed.backend.MetricsBean.Metric;
|
||||||
import com.commafeed.backend.StartupBean;
|
import com.commafeed.backend.StartupBean;
|
||||||
import com.commafeed.backend.model.ApplicationSettings;
|
import com.commafeed.backend.model.ApplicationSettings;
|
||||||
import com.commafeed.backend.model.User;
|
import com.commafeed.backend.model.User;
|
||||||
@@ -23,6 +22,7 @@ import com.commafeed.frontend.SecurityCheck;
|
|||||||
import com.commafeed.frontend.model.UserModel;
|
import com.commafeed.frontend.model.UserModel;
|
||||||
import com.commafeed.frontend.model.request.IDRequest;
|
import com.commafeed.frontend.model.request.IDRequest;
|
||||||
import com.google.common.base.Preconditions;
|
import com.google.common.base.Preconditions;
|
||||||
|
import com.google.common.collect.ImmutableMap;
|
||||||
import com.google.common.collect.Maps;
|
import com.google.common.collect.Maps;
|
||||||
import com.google.common.collect.Sets;
|
import com.google.common.collect.Sets;
|
||||||
import com.wordnik.swagger.annotations.Api;
|
import com.wordnik.swagger.annotations.Api;
|
||||||
@@ -174,9 +174,9 @@ public class AdminREST extends AbstractResourceREST {
|
|||||||
@Path("/metrics")
|
@Path("/metrics")
|
||||||
@GET
|
@GET
|
||||||
public Response getMetrics() {
|
public Response getMetrics() {
|
||||||
List<Integer> list = Arrays.asList(
|
Map<String, Metric> map = ImmutableMap.of("lastMinute",
|
||||||
metricsBean.getFeedsRefreshedLastMinute(),
|
metricsBean.getLastMinute(), "lastHour",
|
||||||
metricsBean.getFeedsRefreshedLastHour());
|
metricsBean.getLastHour());
|
||||||
return Response.ok(list).build();
|
return Response.ok(map).build();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user