From 34458bf468af7129d18768c277d0e12d83e30596 Mon Sep 17 00:00:00 2001 From: tomsun28 Date: Sun, 30 Jan 2022 12:56:57 +0800 Subject: [PATCH] =?UTF-8?q?[collector]=E9=87=87=E9=9B=86=E5=99=A8=E6=94=AF?= =?UTF-8?q?=E6=8C=81mysql=E5=8D=8F=E8=AE=AE=E6=8C=87=E6=A0=87=E9=87=87?= =?UTF-8?q?=E9=9B=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- collector/pom.xml | 9 ++++- .../collector/dispatch/MetricsCollect.java | 4 ++ .../usthe/collector/util/JsonPathParser.java | 2 +- .../collector/util/PrometheusTextParser.java | 31 +++++++++++++++ .../com/usthe/common/entity/dto/Field.java | 2 +- .../com/usthe/common/entity/dto/Message.java | 5 +++ .../common/entity/dto/MetricsHistoryData.java | 39 +++++++++++++++++++ .../com/usthe/common/entity/dto/Value.java | 14 +++++-- .../entity/job/protocol/JdbcProtocol.java | 20 +++++++++- 9 files changed, 118 insertions(+), 8 deletions(-) create mode 100644 collector/src/main/java/com/usthe/collector/util/PrometheusTextParser.java create mode 100644 common/src/main/java/com/usthe/common/entity/dto/MetricsHistoryData.java diff --git a/collector/pom.xml b/collector/pom.xml index a22b4a6..5b1eacb 100644 --- a/collector/pom.xml +++ b/collector/pom.xml @@ -31,7 +31,7 @@ com.usthe.tancloud common - 1.0-SNAPSHOT + 1.0 @@ -84,6 +84,13 @@ aviator 5.2.7 + + + + mysql + mysql-connector-java + 8.0.27 + \ No newline at end of file diff --git a/collector/src/main/java/com/usthe/collector/dispatch/MetricsCollect.java b/collector/src/main/java/com/usthe/collector/dispatch/MetricsCollect.java index dc130eb..ab19586 100644 --- a/collector/src/main/java/com/usthe/collector/dispatch/MetricsCollect.java +++ b/collector/src/main/java/com/usthe/collector/dispatch/MetricsCollect.java @@ -3,6 +3,7 @@ package com.usthe.collector.dispatch; import com.googlecode.aviator.AviatorEvaluator; import com.googlecode.aviator.Expression; import com.usthe.collector.collect.AbstractCollect; +import com.usthe.collector.collect.database.JdbcCommonCollect; import com.usthe.collector.collect.http.HttpCollectImpl; import com.usthe.collector.collect.icmp.IcmpCollectImpl; import com.usthe.collector.collect.telnet.TelnetCollectImpl; @@ -107,6 +108,9 @@ public class MetricsCollect implements Runnable, Comparable { case DispatchConstants.PROTOCOL_TELNET: abstractCollect = TelnetCollectImpl.getInstance(); break; + case DispatchConstants.PROTOCOL_JDBC: + abstractCollect = JdbcCommonCollect.getInstance(); + break; // todo default: break; } diff --git a/collector/src/main/java/com/usthe/collector/util/JsonPathParser.java b/collector/src/main/java/com/usthe/collector/util/JsonPathParser.java index 88e78b7..25ef9bb 100644 --- a/collector/src/main/java/com/usthe/collector/util/JsonPathParser.java +++ b/collector/src/main/java/com/usthe/collector/util/JsonPathParser.java @@ -32,7 +32,7 @@ public class JsonPathParser { * 使用jsonPath来解析json内容 * @param content json内容 * @param jsonPath jsonPath脚本 - * @return 解析后的内容 + * @return 解析后的内容 [{'name': 'tom', 'speed': '433'},{'name': 'lili', 'speed': '543'}] */ public static List> parseContentWithJsonPath(String content, String jsonPath) { if (content == null || jsonPath == null || "".equals(content) || "".equals(jsonPath)) { diff --git a/collector/src/main/java/com/usthe/collector/util/PrometheusTextParser.java b/collector/src/main/java/com/usthe/collector/util/PrometheusTextParser.java new file mode 100644 index 0000000..49d750d --- /dev/null +++ b/collector/src/main/java/com/usthe/collector/util/PrometheusTextParser.java @@ -0,0 +1,31 @@ +package com.usthe.collector.util; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * prometheus-format-text parser + * @author tom + * @date 2022/1/9 14:12 + */ +public class PrometheusTextParser { + + /** + * 解析prometheusText + * @param content 待解析文本内容 + * @return eg:[{'name': 'tom', 'speed': '433'},{'name': 'lili', 'speed': '543'},{'name': 'sam', 'speed': '643'}] + */ + public static Map>> parsePrometheusText(String content) { + String[] lines = content.split("\n"); + Map>> parseResult = new HashMap<>(8); + for (String lineTmp : lines) { + String line = lineTmp.trim(); + if (line.length() == 0 || line.startsWith("#")) { + continue; + } + + } + return null; + } +} diff --git a/common/src/main/java/com/usthe/common/entity/dto/Field.java b/common/src/main/java/com/usthe/common/entity/dto/Field.java index 82a5eda..c911fab 100644 --- a/common/src/main/java/com/usthe/common/entity/dto/Field.java +++ b/common/src/main/java/com/usthe/common/entity/dto/Field.java @@ -29,6 +29,6 @@ public class Field { private String unit; @ApiModelProperty(value = "是否是实例字段", position = 3) - private boolean instance; + private Boolean instance; } diff --git a/common/src/main/java/com/usthe/common/entity/dto/Message.java b/common/src/main/java/com/usthe/common/entity/dto/Message.java index 6738d85..5afebaa 100644 --- a/common/src/main/java/com/usthe/common/entity/dto/Message.java +++ b/common/src/main/java/com/usthe/common/entity/dto/Message.java @@ -49,6 +49,11 @@ public class Message { this.msg = msg; } + public Message(byte code, String msg) { + this.code = code; + this.msg = msg; + } + public Message(T data) { this.data = data; } diff --git a/common/src/main/java/com/usthe/common/entity/dto/MetricsHistoryData.java b/common/src/main/java/com/usthe/common/entity/dto/MetricsHistoryData.java new file mode 100644 index 0000000..6c124a2 --- /dev/null +++ b/common/src/main/java/com/usthe/common/entity/dto/MetricsHistoryData.java @@ -0,0 +1,39 @@ +package com.usthe.common.entity.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; +import java.util.Map; + +/** + * 历史单指标数据 + * @author tom + * @date 2022/1/21 09:58 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@ApiModel(description = "历史单指标数据") +public class MetricsHistoryData { + + @ApiModelProperty(value = "监控ID", position = 0) + private Long id; + + @ApiModelProperty(value = "监控类型", position = 1) + private String app; + + @ApiModelProperty(value = "监控指标组", position = 2) + private String metric; + + @ApiModelProperty(value = "监控指标", position = 4) + private Field field; + + @ApiModelProperty(value = "监控指标历史值 instance<==>values", position = 5) + private Map> values; +} diff --git a/common/src/main/java/com/usthe/common/entity/dto/Value.java b/common/src/main/java/com/usthe/common/entity/dto/Value.java index f0ad60c..8239bbe 100644 --- a/common/src/main/java/com/usthe/common/entity/dto/Value.java +++ b/common/src/main/java/com/usthe/common/entity/dto/Value.java @@ -23,18 +23,26 @@ public class Value { this.origin = origin; } + public Value(String origin, long time) { + this.origin = origin; + this.time = time; + } + @ApiModelProperty(value = "原始值", position = 0) private String origin; @ApiModelProperty(value = "平均值", position = 1) private String mean; - @ApiModelProperty(value = "中位数值", position = 0) + @ApiModelProperty(value = "中位数值,暂不支持", position = 2) private String median; - @ApiModelProperty(value = "最小值", position = 0) + @ApiModelProperty(value = "最小值", position = 3) private String min; - @ApiModelProperty(value = "最大值", position = 0) + @ApiModelProperty(value = "最大值", position = 4) private String max; + + @ApiModelProperty(value = "数据采集时间,此字段查历史数据时有效", position = 5) + private Long time; } diff --git a/common/src/main/java/com/usthe/common/entity/job/protocol/JdbcProtocol.java b/common/src/main/java/com/usthe/common/entity/job/protocol/JdbcProtocol.java index 4c61915..19a4685 100644 --- a/common/src/main/java/com/usthe/common/entity/job/protocol/JdbcProtocol.java +++ b/common/src/main/java/com/usthe/common/entity/job/protocol/JdbcProtocol.java @@ -22,7 +22,7 @@ public class JdbcProtocol { /** * 端口号 */ - private Integer port; + private String port; /** * 数据库用户名(可选) */ @@ -32,7 +32,23 @@ public class JdbcProtocol { */ private String password; /** - * 数据库链接url eg: jdbc:mysql://localhost:3306 + * 数据库 + */ + private String database; + /** + * 数据库类型 mysql oracle ... + */ + private String platform; + /** + * SQL查询方式: oneRow, multiRow, columns + */ + private String queryType; + /** + * sql + */ + private String sql; + /** + * 数据库链接url eg: jdbc:mysql://localhost:3306/usthe */ private String url; }