mirror of
https://github.com/Athou/commafeed.git
synced 2026-03-21 21:37:29 +00:00
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.ejb.Singleton;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
|
||||||
|
import com.commafeed.backend.MetricsBean;
|
||||||
import com.commafeed.backend.StartupBean;
|
import com.commafeed.backend.StartupBean;
|
||||||
import com.commafeed.backend.dao.FeedDAO;
|
import com.commafeed.backend.dao.FeedDAO;
|
||||||
import com.commafeed.backend.model.Feed;
|
import com.commafeed.backend.model.Feed;
|
||||||
@@ -28,6 +29,9 @@ public class FeedRefreshTaskGiver {
|
|||||||
@Inject
|
@Inject
|
||||||
StartupBean startupBean;
|
StartupBean startupBean;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
MetricsBean metricsBean;
|
||||||
|
|
||||||
private Queue<Feed> queue = Queues.newConcurrentLinkedQueue();
|
private Queue<Feed> queue = Queues.newConcurrentLinkedQueue();
|
||||||
|
|
||||||
@Lock(LockType.WRITE)
|
@Lock(LockType.WRITE)
|
||||||
@@ -49,6 +53,7 @@ public class FeedRefreshTaskGiver {
|
|||||||
}
|
}
|
||||||
feedDAO.update(feeds);
|
feedDAO.update(feeds);
|
||||||
}
|
}
|
||||||
|
metricsBean.feedRefreshed();
|
||||||
return queue.poll();
|
return queue.poll();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import java.util.Set;
|
|||||||
import javax.ws.rs.ApplicationPath;
|
import javax.ws.rs.ApplicationPath;
|
||||||
import javax.ws.rs.core.Application;
|
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.AdminSettingsREST;
|
||||||
import com.commafeed.frontend.rest.resources.AdminUsersREST;
|
import com.commafeed.frontend.rest.resources.AdminUsersREST;
|
||||||
import com.commafeed.frontend.rest.resources.EntriesREST;
|
import com.commafeed.frontend.rest.resources.EntriesREST;
|
||||||
@@ -33,6 +34,7 @@ public class RESTApplication extends Application {
|
|||||||
set.add(SettingsREST.class);
|
set.add(SettingsREST.class);
|
||||||
set.add(AdminUsersREST.class);
|
set.add(AdminUsersREST.class);
|
||||||
set.add(AdminSettingsREST.class);
|
set.add(AdminSettingsREST.class);
|
||||||
|
set.add(AdminMetricsREST.class);
|
||||||
set.add(SessionREST.class);
|
set.add(SessionREST.class);
|
||||||
return set;
|
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