From b217fbb0fae4bbbab367ae1bd6203e97e5c68d18 Mon Sep 17 00:00:00 2001 From: lensfrex Date: Wed, 8 May 2024 19:35:35 +0800 Subject: [PATCH] =?UTF-8?q?ref:=20=E9=87=8D=E6=96=B0=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E6=8C=87=E6=A0=87=E7=9B=91=E6=B5=8B=E6=95=B0=E6=8D=AE=E5=85=A5?= =?UTF-8?q?=E5=BA=93=E6=A0=BC=E5=BC=8F=EF=BC=8C=E4=B8=80=E4=B8=AA=E6=8C=87?= =?UTF-8?q?=E6=A0=87=E9=87=8D=E6=96=B0=E4=BD=9C=E4=B8=BA=E7=8B=AC=E7=AB=8B?= =?UTF-8?q?=E7=9A=84=E6=95=B0=E6=8D=AE=E8=A1=8C=E8=AE=B0=E5=BD=95=EF=BC=88?= =?UTF-8?q?=E6=96=B9=E4=BE=BF=E6=8C=89=E6=97=B6=E9=97=B4=E7=B2=92=E5=BA=A6?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E7=9B=91=E6=B5=8B=E6=95=B0=E6=8D=AE=E6=97=B6?= =?UTF-8?q?=E7=9A=84=E8=AE=A1=E7=AE=97=EF=BC=89=20ref:=20=E7=A7=BB?= =?UTF-8?q?=E5=8A=A8=E9=83=A8=E5=88=86=E6=95=B0=E6=8D=AE=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../collector/DataCollectingController.java | 2 +- .../service/MetricDataCollectingService.java | 4 +-- .../data/dto/{ => service}/MetricDataDto.java | 2 +- .../data/entity/MetricRecordEntity.java | 10 ++++-- .../rition/common/data/entity/RuleEntity.java | 2 +- .../collector/MetricCollectingService.java | 34 ++++++++++++------- .../service/monitor/MonitorService.java | 2 +- .../main/resources/application-monitor.yml | 2 +- 8 files changed, 34 insertions(+), 24 deletions(-) rename rition-center/common/src/main/java/rition/common/data/dto/{ => service}/MetricDataDto.java (88%) diff --git a/rition-center/api/src/main/java/rition/backend/api/v1/collector/DataCollectingController.java b/rition-center/api/src/main/java/rition/backend/api/v1/collector/DataCollectingController.java index 8610894..e6f1a47 100644 --- a/rition-center/api/src/main/java/rition/backend/api/v1/collector/DataCollectingController.java +++ b/rition-center/api/src/main/java/rition/backend/api/v1/collector/DataCollectingController.java @@ -9,7 +9,7 @@ import rition.backend.annotation.paramter.RequestId; import rition.backend.api.v1.dto.request.MetricDataUploadRequest; import rition.backend.api.v1.dto.response.Response; import rition.backend.service.MetricDataCollectingService; -import rition.common.data.dto.MetricDataDto; +import rition.common.data.dto.service.MetricDataDto; import java.util.HashMap; import java.util.List; diff --git a/rition-center/api/src/main/java/rition/backend/service/MetricDataCollectingService.java b/rition-center/api/src/main/java/rition/backend/service/MetricDataCollectingService.java index 80f142e..57c699b 100644 --- a/rition-center/api/src/main/java/rition/backend/service/MetricDataCollectingService.java +++ b/rition-center/api/src/main/java/rition/backend/service/MetricDataCollectingService.java @@ -4,12 +4,10 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; -import rition.common.data.dto.MetricDataDto; +import rition.common.data.dto.service.MetricDataDto; import rition.common.data.dto.log.RequestProcessTraceRecord; import rition.service.collector.MetricCollectingService; -import java.time.Duration; -import java.time.temporal.ChronoUnit; import java.util.Map; /** diff --git a/rition-center/common/src/main/java/rition/common/data/dto/MetricDataDto.java b/rition-center/common/src/main/java/rition/common/data/dto/service/MetricDataDto.java similarity index 88% rename from rition-center/common/src/main/java/rition/common/data/dto/MetricDataDto.java rename to rition-center/common/src/main/java/rition/common/data/dto/service/MetricDataDto.java index ad25c9b..da59fb4 100644 --- a/rition-center/common/src/main/java/rition/common/data/dto/MetricDataDto.java +++ b/rition-center/common/src/main/java/rition/common/data/dto/service/MetricDataDto.java @@ -1,5 +1,5 @@ -package rition.common.data.dto; +package rition.common.data.dto.service; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/rition-center/common/src/main/java/rition/common/data/entity/MetricRecordEntity.java b/rition-center/common/src/main/java/rition/common/data/entity/MetricRecordEntity.java index a336b6f..9ab7340 100644 --- a/rition-center/common/src/main/java/rition/common/data/entity/MetricRecordEntity.java +++ b/rition-center/common/src/main/java/rition/common/data/entity/MetricRecordEntity.java @@ -32,10 +32,14 @@ public class MetricRecordEntity { private String instanceId; /** - * 监控指标值,使用json格式存储 + * 指标项 */ - @TableField(typeHandler = JacksonTypeHandler.class) - private Map metricData; + private String metric; + + /** + * 指标值 + */ + private Double value; /** * create_time diff --git a/rition-center/common/src/main/java/rition/common/data/entity/RuleEntity.java b/rition-center/common/src/main/java/rition/common/data/entity/RuleEntity.java index 295646f..a789de7 100644 --- a/rition-center/common/src/main/java/rition/common/data/entity/RuleEntity.java +++ b/rition-center/common/src/main/java/rition/common/data/entity/RuleEntity.java @@ -40,7 +40,7 @@ public class RuleEntity { /** * 阈值 */ - private String threshold; + private Double threshold; /** * 触发方法,实时计算或定时计算 diff --git a/rition-center/service/collector/src/main/java/rition/service/collector/MetricCollectingService.java b/rition-center/service/collector/src/main/java/rition/service/collector/MetricCollectingService.java index c01c94f..825a3d4 100644 --- a/rition-center/service/collector/src/main/java/rition/service/collector/MetricCollectingService.java +++ b/rition-center/service/collector/src/main/java/rition/service/collector/MetricCollectingService.java @@ -4,8 +4,9 @@ import com.github.yitter.idgen.YitIdHelper; import lombok.extern.slf4j.Slf4j; import org.springframework.kafka.core.KafkaTemplate; import org.springframework.stereotype.Service; -import rition.common.data.dto.MetricDataDto; +import rition.common.data.dto.service.MetricDataDto; import rition.common.data.entity.MetricRecordEntity; +import rition.common.data.enums.Constants; import rition.service.collector.configure.CollectorServiceKafkaConfigure; import rition.common.data.dao.mapper.MetricRecordMapper; @@ -45,27 +46,31 @@ public class MetricCollectingService { * @param collectedMetricData 监控指标数据,以时间戳为组 */ public void receiveData(Map> collectedMetricData) { - List batchSaveEntityList = new ArrayList<>(DEFAULT_DB_BATCH_SIZE); + List batchSaveEntityList = new ArrayList<>(DEFAULT_DB_BATCH_SIZE * METRIC_NUMS); int turn = 0; for (Long timestamp : collectedMetricData.keySet()) { Map instanceMetricData = collectedMetricData.get(timestamp); for (String instanceId : instanceMetricData.keySet()) { MetricDataDto metricDataDto = instanceMetricData.get(instanceId); - MetricRecordEntity entity = new MetricRecordEntity(); - entity.setId(YitIdHelper.nextId()); - entity.setInstanceId(instanceId); - entity.setMetricData(metricDataDto.getData()); - var time = Instant.ofEpochSecond(metricDataDto.getTimestamp()); - entity.setTime(time); - entity.setUpdateTime(time); - entity.setStatus(0); + List metricRecordEntityList = new ArrayList<>(METRIC_NUMS); + for (String metric : metricDataDto.getData().keySet()) { + MetricRecordEntity entity = new MetricRecordEntity(); + entity.setId(YitIdHelper.nextId()); + entity.setInstanceId(instanceId); + entity.setMetric(metric); + entity.setValue(metricDataDto.getData().get(metric)); - // kafka发布 - kafkaTemplate.send(this.collectedDataTopic, metricDataDto); + var time = Instant.ofEpochSecond(metricDataDto.getTimestamp()); + entity.setTime(time); + entity.setUpdateTime(time); + entity.setStatus(Constants.EntityCommonStatus.NORMAL); + + metricRecordEntityList.add(entity); + } // 分批入库 - batchSaveEntityList.add(entity); + batchSaveEntityList.addAll(metricRecordEntityList); if (turn >= DEFAULT_DB_BATCH_SIZE) { metricRecordMapper.insertBatchSomeColumn(batchSaveEntityList); // 下一轮 @@ -74,6 +79,9 @@ public class MetricCollectingService { } else { turn++; } + + // kafka发布 + kafkaTemplate.send(this.collectedDataTopic, metricDataDto); } } diff --git a/rition-center/service/monitor/src/main/java/rition/service/monitor/MonitorService.java b/rition-center/service/monitor/src/main/java/rition/service/monitor/MonitorService.java index 7870c70..cbf5cd1 100644 --- a/rition-center/service/monitor/src/main/java/rition/service/monitor/MonitorService.java +++ b/rition-center/service/monitor/src/main/java/rition/service/monitor/MonitorService.java @@ -3,7 +3,7 @@ package rition.service.monitor; import org.apache.kafka.clients.consumer.ConsumerRecord; import org.springframework.kafka.annotation.KafkaListener; import org.springframework.stereotype.Service; -import rition.common.data.dto.MetricDataDto; +import rition.common.data.dto.service.MetricDataDto; @Service public class MonitorService { diff --git a/rition-center/service/monitor/src/main/resources/application-monitor.yml b/rition-center/service/monitor/src/main/resources/application-monitor.yml index 76ca54d..1335638 100644 --- a/rition-center/service/monitor/src/main/resources/application-monitor.yml +++ b/rition-center/service/monitor/src/main/resources/application-monitor.yml @@ -13,7 +13,7 @@ spring: spring: json: trusted: - packages: "rition.common.data.dto" + packages: "rition.common.data.dto.*" producer: retries: 4 compression-type: zstd