diff --git a/itbaima-monitor-server/pom.xml b/itbaima-monitor-server/pom.xml
index bf08e50..7f75cde 100644
--- a/itbaima-monitor-server/pom.xml
+++ b/itbaima-monitor-server/pom.xml
@@ -94,6 +94,12 @@
springdoc-openapi-starter-webmvc-ui
2.1.0
+
+
+ com.influxdb
+ influxdb-client-java
+ 6.6.0
+
diff --git a/itbaima-monitor-server/src/main/java/com/example/entity/dto/RuntimeData.java b/itbaima-monitor-server/src/main/java/com/example/entity/dto/RuntimeData.java
new file mode 100644
index 0000000..c50ffa3
--- /dev/null
+++ b/itbaima-monitor-server/src/main/java/com/example/entity/dto/RuntimeData.java
@@ -0,0 +1,30 @@
+package com.example.entity.dto;
+
+import com.influxdb.annotations.Column;
+import com.influxdb.annotations.Measurement;
+import lombok.Data;
+
+import java.time.Instant;
+
+@Data
+@Measurement(name = "runtime")
+public class RuntimeData {
+ @Column(tag = true)
+ int clientId;
+ @Column
+ double cpuUsage;
+ @Column
+ double memoryUsage;
+ @Column
+ double diskUsage;
+ @Column
+ double networkUpload;
+ @Column
+ double networkDownload;
+ @Column
+ double diskRead;
+ @Column
+ double diskWrite;
+ @Column(timestamp = true)
+ Instant timestamp;
+}
diff --git a/itbaima-monitor-server/src/main/java/com/example/filter/RequestLogFilter.java b/itbaima-monitor-server/src/main/java/com/example/filter/RequestLogFilter.java
index 4ab82b6..52525e5 100644
--- a/itbaima-monitor-server/src/main/java/com/example/filter/RequestLogFilter.java
+++ b/itbaima-monitor-server/src/main/java/com/example/filter/RequestLogFilter.java
@@ -29,7 +29,7 @@ public class RequestLogFilter extends OncePerRequestFilter {
@Resource
SnowflakeIdGenerator generator;
- private final Set ignores = Set.of("/swagger-ui", "/v3/api-docs");
+ private final Set ignores = Set.of("/swagger-ui", "/v3/api-docs", "/monitor/runtime");
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
diff --git a/itbaima-monitor-server/src/main/java/com/example/service/impl/ClientServiceImpl.java b/itbaima-monitor-server/src/main/java/com/example/service/impl/ClientServiceImpl.java
index 7b0e74c..da69452 100644
--- a/itbaima-monitor-server/src/main/java/com/example/service/impl/ClientServiceImpl.java
+++ b/itbaima-monitor-server/src/main/java/com/example/service/impl/ClientServiceImpl.java
@@ -8,6 +8,7 @@ import com.example.entity.vo.request.RuntimeDetailVO;
import com.example.mapper.ClientDetailMapper;
import com.example.mapper.ClientMapper;
import com.example.service.ClientService;
+import com.example.utils.InfluxDbUtils;
import jakarta.annotation.PostConstruct;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
@@ -29,6 +30,9 @@ public class ClientServiceImpl extends ServiceImpl impleme
@Resource
private ClientDetailMapper detailMapper;
+ @Resource
+ private InfluxDbUtils influx;
+
@PostConstruct
public void initClientCache() {
this.list().forEach(this::addClientCache);
@@ -76,11 +80,13 @@ public class ClientServiceImpl extends ServiceImpl impleme
}
}
- private Map test = new HashMap<>();
+ private final Map lastRuntime = new HashMap<>();
@Override
public void updateRuntimeDetail(RuntimeDetailVO vo, Client client) {
- test.put(client, vo);
+ RuntimeDetailVO oldData = lastRuntime.put(client, vo);
+ if(oldData != null)
+ influx.writeRuntimeData(client.getId(), oldData);
}
private void addClientCache(Client client) {
diff --git a/itbaima-monitor-server/src/main/java/com/example/utils/InfluxDbUtils.java b/itbaima-monitor-server/src/main/java/com/example/utils/InfluxDbUtils.java
new file mode 100644
index 0000000..c0ef686
--- /dev/null
+++ b/itbaima-monitor-server/src/main/java/com/example/utils/InfluxDbUtils.java
@@ -0,0 +1,44 @@
+package com.example.utils;
+
+import com.example.entity.dto.RuntimeData;
+import com.example.entity.vo.request.RuntimeDetailVO;
+import com.influxdb.client.InfluxDBClient;
+import com.influxdb.client.InfluxDBClientFactory;
+import com.influxdb.client.WriteApiBlocking;
+import com.influxdb.client.domain.WritePrecision;
+import jakarta.annotation.PostConstruct;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+
+@Component
+public class InfluxDbUtils {
+
+ @Value("${spring.influx.url}")
+ String url;
+ @Value("${spring.influx.user}")
+ String user;
+ @Value("${spring.influx.password}")
+ String password;
+
+ private final String BUCKET = "monitor";
+ private final String ORG = "itbaima";
+
+ private InfluxDBClient client;
+
+ @PostConstruct
+ private void init() {
+ client = InfluxDBClientFactory.create(url, user, password.toCharArray());
+ }
+
+ public void writeRuntimeData(int clientId, RuntimeDetailVO vo) {
+ RuntimeData data = new RuntimeData();
+ BeanUtils.copyProperties(vo, data);
+ data.setTimestamp(new Date(vo.getTimestamp()).toInstant());
+ data.setClientId(clientId);
+ WriteApiBlocking writeApi = client.getWriteApiBlocking();
+ writeApi.writeMeasurement(BUCKET, ORG, WritePrecision.NS, data);
+ }
+}
diff --git a/itbaima-monitor-server/src/main/resources/application-dev.yml b/itbaima-monitor-server/src/main/resources/application-dev.yml
index 81fac07..9a8688b 100644
--- a/itbaima-monitor-server/src/main/resources/application-dev.yml
+++ b/itbaima-monitor-server/src/main/resources/application-dev.yml
@@ -4,6 +4,10 @@ springdoc:
swagger-ui:
operations-sorter: alpha
spring:
+ influx:
+ url: http://localhost:8086
+ user: admin
+ password: 12345678
mail:
host: smtp.163.com
username: javastudy111@163.com
diff --git a/itbaima-monitor-server/src/main/resources/application-prod.yml b/itbaima-monitor-server/src/main/resources/application-prod.yml
index 158f3ec..fae71be 100644
--- a/itbaima-monitor-server/src/main/resources/application-prod.yml
+++ b/itbaima-monitor-server/src/main/resources/application-prod.yml
@@ -8,6 +8,10 @@ mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
spring:
+ influx:
+ url: http://localhost:8086
+ user: admin
+ password: 12345678
mail:
host: smtp.163.com
username: javastudy111@163.com
diff --git a/itbaima-monitor-web/itbaima-monitor-web.iml b/itbaima-monitor-web/itbaima-monitor-web.iml
index 15fa616..0f035bf 100644
--- a/itbaima-monitor-web/itbaima-monitor-web.iml
+++ b/itbaima-monitor-web/itbaima-monitor-web.iml
@@ -2,7 +2,9 @@
-
+
+
+
diff --git a/itbaima-monitor.iml b/itbaima-monitor.iml
index 0aa69c3..9a87ac5 100644
--- a/itbaima-monitor.iml
+++ b/itbaima-monitor.iml
@@ -4,6 +4,7 @@
+