Add missing metrics counters and made the metrics init task scheduled (per Hour) (ref #294)
This commit is contained in:
parent
27bf69268e
commit
c27ff1d446
|
@ -21,6 +21,7 @@ public class DataManagementPlanCriteria extends Criteria<DMP> {
|
||||||
private boolean isPublic;
|
private boolean isPublic;
|
||||||
private boolean onlyPublic;
|
private boolean onlyPublic;
|
||||||
private Short grantStatus;
|
private Short grantStatus;
|
||||||
|
private boolean hasDoi;
|
||||||
|
|
||||||
public Date getPeriodStart() {
|
public Date getPeriodStart() {
|
||||||
return periodStart;
|
return periodStart;
|
||||||
|
@ -114,4 +115,12 @@ public class DataManagementPlanCriteria extends Criteria<DMP> {
|
||||||
public void setGrantStatus(Short grantStatus) {
|
public void setGrantStatus(Short grantStatus) {
|
||||||
this.grantStatus = grantStatus;
|
this.grantStatus = grantStatus;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean hasDoi() {
|
||||||
|
return hasDoi;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setHasDoi(boolean hasDoi) {
|
||||||
|
this.hasDoi = hasDoi;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,6 +25,7 @@ public class DatasetCriteria extends Criteria<Dataset> {
|
||||||
private List<UUID> groupIds;
|
private List<UUID> groupIds;
|
||||||
private Boolean isPublic;
|
private Boolean isPublic;
|
||||||
private Short grantStatus;
|
private Short grantStatus;
|
||||||
|
private boolean hasDoi;
|
||||||
|
|
||||||
public boolean getAllVersions() {
|
public boolean getAllVersions() {
|
||||||
return allVersions;
|
return allVersions;
|
||||||
|
@ -132,4 +133,12 @@ public class DatasetCriteria extends Criteria<Dataset> {
|
||||||
public void setGrantStatus(Short grantStatus) {
|
public void setGrantStatus(Short grantStatus) {
|
||||||
this.grantStatus = grantStatus;
|
this.grantStatus = grantStatus;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean hasDoi() {
|
||||||
|
return hasDoi;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setHasDoi(boolean hasDoi) {
|
||||||
|
this.hasDoi = hasDoi;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -84,6 +84,10 @@ public class DMPDaoImpl extends DatabaseAccess<DMP> implements DMPDao {
|
||||||
builder.or(builder.greaterThan(root.get("grant").get("enddate"), new Date())
|
builder.or(builder.greaterThan(root.get("grant").get("enddate"), new Date())
|
||||||
, builder.isNull(root.get("grant").get("enddate"))));
|
, builder.isNull(root.get("grant").get("enddate"))));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (criteria.hasDoi()) {
|
||||||
|
query.where((builder, root) -> builder.not(builder.isNull(root.get("doi"))));
|
||||||
|
}
|
||||||
query.where((builder, root) -> builder.notEqual(root.get("status"), DMP.DMPStatus.DELETED.getValue()));
|
query.where((builder, root) -> builder.notEqual(root.get("status"), DMP.DMPStatus.DELETED.getValue()));
|
||||||
return query;
|
return query;
|
||||||
}
|
}
|
||||||
|
|
|
@ -78,6 +78,10 @@ public class DatasetDaoImpl extends DatabaseAccess<Dataset> implements DatasetDa
|
||||||
query.where((builder, root) -> root.join("dmp", JoinType.LEFT).join("users", JoinType.LEFT).join("user", JoinType.LEFT).get("id").in(criteria.getCollaborators()));
|
query.where((builder, root) -> root.join("dmp", JoinType.LEFT).join("users", JoinType.LEFT).join("user", JoinType.LEFT).get("id").in(criteria.getCollaborators()));
|
||||||
if (criteria.getDatasetTemplates() != null && !criteria.getDatasetTemplates().isEmpty())
|
if (criteria.getDatasetTemplates() != null && !criteria.getDatasetTemplates().isEmpty())
|
||||||
query.where((builder, root) -> root.get("profile").get("id").in(criteria.getDatasetTemplates()));
|
query.where((builder, root) -> root.get("profile").get("id").in(criteria.getDatasetTemplates()));
|
||||||
|
|
||||||
|
if (criteria.hasDoi()) {
|
||||||
|
query.where((builder, root) -> builder.not(builder.isNull(root.get("dmp").get("doi"))));
|
||||||
|
}
|
||||||
query.where((builder, root) -> builder.notEqual(root.get("status"), Dataset.Status.DELETED.getValue()));
|
query.where((builder, root) -> builder.notEqual(root.get("status"), Dataset.Status.DELETED.getValue()));
|
||||||
query.where((builder, root) -> builder.notEqual(root.get("status"), Dataset.Status.CANCELED.getValue()));
|
query.where((builder, root) -> builder.notEqual(root.get("status"), Dataset.Status.CANCELED.getValue()));
|
||||||
return query;
|
return query;
|
||||||
|
|
|
@ -2078,6 +2078,12 @@ public class DataManagementPlanManager {
|
||||||
return apiContext.getOperationsContext().getDatabaseRepository().getDmpDao().getWithCriteria(criteria).count();
|
return apiContext.getOperationsContext().getDatabaseRepository().getDmpDao().getWithCriteria(criteria).count();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public long countAllDoied() {
|
||||||
|
DataManagementPlanCriteria criteria = new DataManagementPlanCriteria();
|
||||||
|
criteria.setHasDoi(true);
|
||||||
|
return apiContext.getOperationsContext().getDatabaseRepository().getDmpDao().getWithCriteria(criteria).count();
|
||||||
|
}
|
||||||
|
|
||||||
public long countAllResearchers() {
|
public long countAllResearchers() {
|
||||||
ResearcherCriteria criteria = new ResearcherCriteria();
|
ResearcherCriteria criteria = new ResearcherCriteria();
|
||||||
return apiContext.getOperationsContext().getDatabaseRepository().getResearcherDao().getWithCriteria(criteria).count();
|
return apiContext.getOperationsContext().getDatabaseRepository().getResearcherDao().getWithCriteria(criteria).count();
|
||||||
|
|
|
@ -1089,4 +1089,10 @@ public class DatasetManager {
|
||||||
criteria.setIsPublic(true);
|
criteria.setIsPublic(true);
|
||||||
return apiContext.getOperationsContext().getDatabaseRepository().getDatasetDao().getWithCriteria(criteria).count();
|
return apiContext.getOperationsContext().getDatabaseRepository().getDatasetDao().getWithCriteria(criteria).count();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public long countAllWithDoi() {
|
||||||
|
eu.eudat.data.dao.criteria.DatasetCriteria criteria = new eu.eudat.data.dao.criteria.DatasetCriteria();
|
||||||
|
criteria.setHasDoi(true);
|
||||||
|
return apiContext.getOperationsContext().getDatabaseRepository().getDatasetDao().getWithCriteria(criteria).count();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,17 +1,25 @@
|
||||||
package eu.eudat.logic.managers;
|
package eu.eudat.logic.managers;
|
||||||
|
|
||||||
import io.prometheus.client.Gauge;
|
import io.prometheus.client.Gauge;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.core.env.Environment;
|
||||||
|
import org.springframework.scheduling.annotation.Scheduled;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import javax.annotation.PostConstruct;
|
import javax.annotation.PostConstruct;
|
||||||
import javax.transaction.Transactional;
|
import javax.transaction.Transactional;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.Paths;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
public class MetricsManager {
|
public class MetricsManager {
|
||||||
|
private final static Logger logger = LoggerFactory.getLogger(MetricsManager.class);
|
||||||
private static Map<String, Gauge> gauges = Stream.of( new Object[][]{
|
private static Map<String, Gauge> gauges = Stream.of( new Object[][]{
|
||||||
{"usersLoggedIn", Gauge.build("users_logged_in", "Number of current logged in users").register()},
|
{"usersLoggedIn", Gauge.build("users_logged_in", "Number of current logged in users").register()},
|
||||||
{"projects", Gauge.build("projects", "Number of registered Projects").register()},
|
{"projects", Gauge.build("projects", "Number of registered Projects").register()},
|
||||||
|
@ -57,28 +65,40 @@ public class MetricsManager {
|
||||||
private final DatasetManager datasetManager;
|
private final DatasetManager datasetManager;
|
||||||
private final DataManagementPlanManager dataManagementPlanManager;
|
private final DataManagementPlanManager dataManagementPlanManager;
|
||||||
private final DatasetProfileManager datasetProfileManager;
|
private final DatasetProfileManager datasetProfileManager;
|
||||||
|
private final UserManager userManager;
|
||||||
|
private final Environment environment;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
public MetricsManager(DatasetManager datasetManager, DataManagementPlanManager dataManagementPlanManager, DatasetProfileManager datasetProfileManager) {
|
public MetricsManager(DatasetManager datasetManager, DataManagementPlanManager dataManagementPlanManager, DatasetProfileManager datasetProfileManager, UserManager userManager, Environment environment) {
|
||||||
this.datasetManager = datasetManager;
|
this.datasetManager = datasetManager;
|
||||||
this.dataManagementPlanManager = dataManagementPlanManager;
|
this.dataManagementPlanManager = dataManagementPlanManager;
|
||||||
this.datasetProfileManager = datasetProfileManager;
|
this.datasetProfileManager = datasetProfileManager;
|
||||||
|
this.userManager = userManager;
|
||||||
|
this.environment = environment;
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostConstruct
|
@PostConstruct
|
||||||
@Transactional
|
@Transactional
|
||||||
public void init() {
|
@Scheduled(initialDelay = 1000 * 60 * 60, fixedDelay = 1000 * 60 * 60)
|
||||||
|
public void init() throws IOException {
|
||||||
|
logger.info("Start calculating Metrics");
|
||||||
calculateValue("draftDMPs", (int) dataManagementPlanManager.countAllDrafts());
|
calculateValue("draftDMPs", (int) dataManagementPlanManager.countAllDrafts());
|
||||||
calculateValue("finalizedDMPs", (int) dataManagementPlanManager.countAllFinalized());
|
calculateValue("finalizedDMPs", (int) dataManagementPlanManager.countAllFinalized());
|
||||||
calculateValue("publishedDMPs", (int) dataManagementPlanManager.countAllFinalized());
|
calculateValue("publishedDMPs", (int) dataManagementPlanManager.countAllPublished());
|
||||||
|
calculateValue("doiedDMPs", (int) dataManagementPlanManager.countAllDoied());
|
||||||
calculateValue("projects", (int) dataManagementPlanManager.countAllProjects());
|
calculateValue("projects", (int) dataManagementPlanManager.countAllProjects());
|
||||||
calculateValue("researchers", (int) dataManagementPlanManager.countAllResearchers());
|
calculateValue("researchers", (int) dataManagementPlanManager.countAllResearchers());
|
||||||
calculateValue("draftDatasets", (int) datasetManager.countAllDraft());
|
calculateValue("draftDatasets", (int) datasetManager.countAllDraft());
|
||||||
calculateValue("finalizedDatasets", (int) datasetManager.countAllFinalized());
|
calculateValue("finalizedDatasets", (int) datasetManager.countAllFinalized());
|
||||||
calculateValue("publishedDatasets", (int) datasetManager.countAllPublic());
|
calculateValue("publishedDatasets", (int) datasetManager.countAllPublic());
|
||||||
|
calculateValue("doiedDatasets", (int) datasetManager.countAllWithDoi());
|
||||||
calculateValue("totalTemplates", (int) datasetProfileManager.countAlldraft());
|
calculateValue("totalTemplates", (int) datasetProfileManager.countAlldraft());
|
||||||
calculateValue("activeTemplates", (int) datasetProfileManager.countAllFinalized());
|
calculateValue("activeTemplates", (int) datasetProfileManager.countAllFinalized());
|
||||||
calculateValue("usedTemplates", (int) datasetProfileManager.countAllUsed());
|
calculateValue("usedTemplates", (int) datasetProfileManager.countAllUsed());
|
||||||
|
calculateValue("usersLoggedIn", userManager.countActiveUsers().intValue());
|
||||||
|
long files = Files.list(Paths.get(this.environment.getProperty("userguide.path"))).count();
|
||||||
|
calculateValue("languages", (int) files);
|
||||||
|
logger.info("Metrics calculation Completed");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -245,4 +245,8 @@ public class UserManager {
|
||||||
return new UserProfile().fromDataModel(user);
|
return new UserProfile().fromDataModel(user);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Long countActiveUsers(){
|
||||||
|
return apiContext.getOperationsContext().getDatabaseRepository().getUserTokenDao().asQueryable().where(((builder, root) -> builder.greaterThan(root.get("expiresAt"), new Date()))).count();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue