initial metrics system

This commit is contained in:
Athou
2013-04-16 13:52:20 +02:00
parent f7a54d1f0d
commit 743b389808
4 changed files with 75 additions and 0 deletions

View 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;
}
}

View File

@@ -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();
}

View File

@@ -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;
}

View File

@@ -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() };
}
}