forked from Archives/Athou_commafeed
initial metrics system
This commit is contained in:
43
src/main/java/com/commafeed/backend/MetricsBean.java
Normal file
43
src/main/java/com/commafeed/backend/MetricsBean.java
Normal file
@@ -0,0 +1,43 @@
|
||||
package com.commafeed.backend;
|
||||
|
||||
import javax.ejb.Singleton;
|
||||
|
||||
@Singleton
|
||||
public class MetricsBean {
|
||||
|
||||
private int feedsRefreshedLastMinute;
|
||||
private int feedsRefreshedThisMinute;
|
||||
|
||||
private int feedsRefreshedLastHour;
|
||||
private int feedsRefreshedThisHour;
|
||||
|
||||
private long minuteTimestamp;
|
||||
private long hourTimestamp;
|
||||
|
||||
public void feedRefreshed() {
|
||||
long now = System.currentTimeMillis();
|
||||
if (now - minuteTimestamp > 60000) {
|
||||
feedsRefreshedLastMinute = feedsRefreshedThisMinute;
|
||||
feedsRefreshedThisMinute = 0;
|
||||
minuteTimestamp = now;
|
||||
|
||||
}
|
||||
feedsRefreshedThisMinute++;
|
||||
|
||||
if (now - hourTimestamp > 60000 * 60) {
|
||||
feedsRefreshedLastHour = feedsRefreshedThisHour;
|
||||
feedsRefreshedThisHour = 0;
|
||||
hourTimestamp = now;
|
||||
|
||||
}
|
||||
feedsRefreshedThisHour++;
|
||||
}
|
||||
|
||||
public int getFeedsRefreshedLastMinute() {
|
||||
return feedsRefreshedLastMinute;
|
||||
}
|
||||
|
||||
public int getFeedsRefreshedLastHour() {
|
||||
return feedsRefreshedLastHour;
|
||||
}
|
||||
}
|
||||
@@ -10,6 +10,7 @@ import javax.ejb.LockType;
|
||||
import javax.ejb.Singleton;
|
||||
import javax.inject.Inject;
|
||||
|
||||
import com.commafeed.backend.MetricsBean;
|
||||
import com.commafeed.backend.StartupBean;
|
||||
import com.commafeed.backend.dao.FeedDAO;
|
||||
import com.commafeed.backend.model.Feed;
|
||||
@@ -28,6 +29,9 @@ public class FeedRefreshTaskGiver {
|
||||
@Inject
|
||||
StartupBean startupBean;
|
||||
|
||||
@Inject
|
||||
MetricsBean metricsBean;
|
||||
|
||||
private Queue<Feed> queue = Queues.newConcurrentLinkedQueue();
|
||||
|
||||
@Lock(LockType.WRITE)
|
||||
@@ -49,6 +53,7 @@ public class FeedRefreshTaskGiver {
|
||||
}
|
||||
feedDAO.update(feeds);
|
||||
}
|
||||
metricsBean.feedRefreshed();
|
||||
return queue.poll();
|
||||
}
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@ import java.util.Set;
|
||||
import javax.ws.rs.ApplicationPath;
|
||||
import javax.ws.rs.core.Application;
|
||||
|
||||
import com.commafeed.frontend.rest.resources.AdminMetricsREST;
|
||||
import com.commafeed.frontend.rest.resources.AdminSettingsREST;
|
||||
import com.commafeed.frontend.rest.resources.AdminUsersREST;
|
||||
import com.commafeed.frontend.rest.resources.EntriesREST;
|
||||
@@ -33,6 +34,7 @@ public class RESTApplication extends Application {
|
||||
set.add(SettingsREST.class);
|
||||
set.add(AdminUsersREST.class);
|
||||
set.add(AdminSettingsREST.class);
|
||||
set.add(AdminMetricsREST.class);
|
||||
set.add(SessionREST.class);
|
||||
return set;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
package com.commafeed.frontend.rest.resources;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.ws.rs.GET;
|
||||
import javax.ws.rs.Path;
|
||||
|
||||
import com.commafeed.backend.MetricsBean;
|
||||
import com.commafeed.backend.model.UserRole.Role;
|
||||
import com.commafeed.frontend.SecurityCheck;
|
||||
|
||||
@SecurityCheck(Role.ADMIN)
|
||||
@Path("admin/metrics")
|
||||
public class AdminMetricsREST extends AbstractREST {
|
||||
|
||||
@Inject
|
||||
MetricsBean metricsBean;
|
||||
|
||||
@Path("/get")
|
||||
@GET
|
||||
public int[] get() {
|
||||
return new int[] { metricsBean.getFeedsRefreshedLastMinute(),
|
||||
metricsBean.getFeedsRefreshedLastHour() };
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user