file handle enabled

master
Katerina 2 years ago
parent 54945530f7
commit 9a846c8954

4
.gitignore vendored

@ -0,0 +1,4 @@
target/*
mvnw*
HELP.md
*.iml

@ -1,22 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.4</version>
<relativePath/> <!-- lookup parent from repository -->
<groupId>eu.dnetlib</groupId>
<artifactId>dnet45-parent</artifactId>
<version>1.0.0</version>
</parent>
<groupId>eu.dnetlib</groupId>
<artifactId>dnet-explore-metrics</artifactId>
<version>0.0.2-SNAPSHOT</version>
<version>1.0.0</version>
<packaging>war</packaging>
<name>dnet-explore-metrics</name>
<description>Project for exposing Explore metrics</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.5.4</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
@ -41,30 +52,40 @@
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20210307</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.11.0</version>
</dependency>
<!-- Json -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.6.2</version>
</dependency>
</dependencies>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
<scm>
<developerConnection>scm:svn:https://svn.driver.research-infrastructures.eu/driver/dnet45/modules/dnet-parent/tags/dnet-explore-metrics-1.0.0</developerConnection>
</scm>
</project>

@ -0,0 +1,14 @@
#release configuration
#Tue Nov 23 13:14:42 EET 2021
project.dev.eu.dnetlib\:dnet-explore-metrics=1.0.1-SNAPSHOT
scm.tagNameFormat=@{project.artifactId}-@{project.version}
scm.tag=dnet-explore-metrics-1.0.0
pushChanges=true
scm.url=scm\:svn\:https\://svn.driver.research-infrastructures.eu/driver/dnet45/modules/dnet-parent/tags/dnet45-parent-1.0.0/dnet-explore-metrics
preparationGoals=clean verify
remoteTagging=true
scm.commentPrefix=[maven-release-plugin]
project.scm.eu.dnetlib\:dnet-explore-metrics.empty=true
exec.snapshotReleasePluginAllowed=false
completedPhase=run-preparation-goals
project.rel.eu.dnetlib\:dnet-explore-metrics=1.0.0

@ -4,6 +4,7 @@ import eu.dnetlib.dnetexploremetrics.model.Metrics;
import eu.dnetlib.dnetexploremetrics.utils.PrometheusMetricsFormatter;
import org.apache.commons.io.IOUtils;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Value;
import java.io.*;
import java.nio.file.Files;
@ -12,15 +13,15 @@ import java.nio.file.Paths;
public class MetricsFileDAO implements MetricsDAO {
private final Logger logger = Logger.getLogger(this.getClass());
private String fileName;
@Value("${filepath:/var/lib/tomcat_dnet/8980/webapps}")
private String filePath;
@Override
public void save(Metrics metrics) {
try {
Files.write(Paths.get("fileName"), PrometheusMetricsFormatter.formatMetrics(metrics).getBytes());
ClassLoader classLoader = getClass().getClassLoader();
File file = new File(classLoader.getResource(".").getFile() +"/metrics.txt");
File file = new File(filePath + "/metrics.txt");
FileWriter fileWriter = new FileWriter(file);
PrintWriter printWriter = new PrintWriter(fileWriter);
@ -28,21 +29,20 @@ public class MetricsFileDAO implements MetricsDAO {
printWriter.close();
} catch (IOException ioe) {
logger.error("Error writing metrics to file " + fileName + ".", ioe);
logger.error("Error writing metrics to file " + filePath + "/metrics.txt.", ioe);
}
}
@Override
public String getMetrics() {
String metrics="";
try {
FileInputStream inputStream = new FileInputStream(getClass().getClassLoader().getResource(".").getFile() +"/metrics.txt");
FileInputStream inputStream = new FileInputStream(filePath +"/metrics.txt");
metrics = IOUtils.toString(inputStream, "UTF-8");
// do something with everything string
} catch (IOException ioe) {
logger.error("Error reading metrics to file " + fileName + ".", ioe);
logger.error("Error reading metrics to file " + filePath + "/metrics.txt.", ioe);
}
return metrics;

@ -1,11 +1,10 @@
package eu.dnetlib.dnetexploremetrics.service;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import eu.dnetlib.dnetexploremetrics.dao.MetricsDAO;
import eu.dnetlib.dnetexploremetrics.dao.MetricsFileDAO;
import eu.dnetlib.dnetexploremetrics.model.Metrics;
import org.apache.log4j.Logger;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.ResponseEntity;
@ -41,20 +40,19 @@ public class MetricsService {
" or reldatasourcecompatibilityid exact hostedBy or relproject=*))&type=organizations&size=0&format=json";
//@Scheduled(cron = "0 0/1 * * * *")
@Scheduled(cron = "0 0 0 * * ?")
@Scheduled(cron = "0 0/1 * * * *")
//@Scheduled(cron = "0 0 0 * * ?")
private void calculateMetrics() {
logger.info("Calculating metrics...");
System.out.println("Calculating metrics...");
Metrics metrics = new Metrics();
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<String> response
= restTemplate.getForEntity(searchUrl + recordsRequest, String.class);
JsonObject jsonObject = new JsonParser().parse(response.getBody()).getAsJsonObject();
metrics.records= jsonObject.get("meta").getAsJsonObject().get("total").getAsString();
/*
JSONObject jsonObject = new JSONObject(response.getBody());
metrics.records= jsonObject.getJSONObject("meta").get("total").toString();
response = restTemplate.
getForEntity(searchUrl + publicationsRequest, String.class);
jsonObject = new JSONObject(response.getBody());
@ -95,12 +93,11 @@ public class MetricsService {
jsonObject = new JSONObject(response.getBody());
metrics.organizations = jsonObject.getJSONObject("meta").get("total").toString();
*/
metricsDAO.save(metrics);
}
public String getMetrics() {
MetricsDAO metricsDAO = new MetricsFileDAO();
return metricsDAO.getMetrics();
}
}

@ -2,4 +2,7 @@ search.service.api.url = https://services.openaire.eu/search/v2/api/
server.port=8180
#management.endpoint.health.show-details=always
management.endpoints.web.base-path=/-
management.endpoints.web.base-path=/-
filepath=/home/katerina/Desktop

@ -0,0 +1,10 @@
log4j.rootLogger = INFO, R
log4j.additivity.org.springframework = false
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=/var/log/dnet/dnet-explore-metrics/dnet-explore-metrics.log
log4j.appender.R.MaxFileSize=10MB
log4j.appender.R.MaxBackupIndex=10
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern= %d %p %t [%c] - %m%n
Loading…
Cancel
Save