From ddb290bba3828bdd1830ccdc6c900cfb41fbc5d0 Mon Sep 17 00:00:00 2001 From: tomsun28 Date: Thu, 17 Mar 2022 15:42:36 +0800 Subject: [PATCH] =?UTF-8?q?[manager,collector]mariadb,postgresql=E6=94=AF?= =?UTF-8?q?=E6=8C=81timeout,fix=20jdbc=E8=A7=A3=E6=9E=90=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=20(#36)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [manager,collector]fix jdbc解析异常,mariadb支持timeout * [manager]postgresql支持timeout设置 --- .../collect/database/JdbcCommonCollect.java | 16 ++++++++++++---- .../common/entity/job/protocol/JdbcProtocol.java | 2 +- .../src/main/resources/define/app/mariadb.yml | 5 +++++ manager/src/main/resources/define/app/mysql.yml | 4 ++-- .../src/main/resources/define/app/postgresql.yml | 5 +++++ .../src/main/resources/define/param/mariadb.yml | 6 ++++++ .../src/main/resources/define/param/mysql.yml | 14 +++++++------- .../main/resources/define/param/postgresql.yml | 6 ++++++ 8 files changed, 44 insertions(+), 14 deletions(-) diff --git a/collector/src/main/java/com/usthe/collector/collect/database/JdbcCommonCollect.java b/collector/src/main/java/com/usthe/collector/collect/database/JdbcCommonCollect.java index 116d5c8..c4c74f5 100644 --- a/collector/src/main/java/com/usthe/collector/collect/database/JdbcCommonCollect.java +++ b/collector/src/main/java/com/usthe/collector/collect/database/JdbcCommonCollect.java @@ -52,11 +52,17 @@ public class JdbcCommonCollect extends AbstractCollect { } JdbcProtocol jdbcProtocol = metrics.getJdbc(); String databaseUrl = constructDatabaseUrl(jdbcProtocol); - //获取查询语句/获取链接最大超时时间 - int timeout = metrics.getJdbc().getTimeout().intValue(); + // 查询超时时间默认3000毫秒 + int timeout = 3000; + try { + // 获取查询语句超时时间 + timeout = Integer.parseInt(jdbcProtocol.getTimeout()); + } catch (Exception e) { + log.warn(e.getMessage()); + } try { Statement statement = getConnection(jdbcProtocol.getUsername(), - jdbcProtocol.getPassword(), databaseUrl,timeout); + jdbcProtocol.getPassword(), databaseUrl, timeout); switch (jdbcProtocol.getQueryType()) { case QUERY_TYPE_ONE_ROW: queryOneRow(statement, jdbcProtocol.getSql(), metrics.getAliasFields(), builder, startTime); @@ -108,7 +114,9 @@ public class JdbcCommonCollect extends AbstractCollect { try { statement = jdbcConnect.getConnection().createStatement(); // 设置查询超时时间10秒 - statement.setQueryTimeout(timeout); + int timeoutSecond = timeout / 1000; + timeoutSecond = timeoutSecond <= 0 ? 1 : timeoutSecond; + statement.setQueryTimeout(timeoutSecond); // 设置查询最大行数1000行 statement.setMaxRows(1000); } catch (Exception e) { 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 642326a..d02b61b 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 @@ -38,7 +38,7 @@ public class JdbcProtocol { /** * 超时时间 */ - private Long timeout; + private String timeout; /** * 数据库类型 mysql oracle ... */ diff --git a/manager/src/main/resources/define/app/mariadb.yml b/manager/src/main/resources/define/app/mariadb.yml index 959650d..466bfbf 100644 --- a/manager/src/main/resources/define/app/mariadb.yml +++ b/manager/src/main/resources/define/app/mariadb.yml @@ -16,6 +16,8 @@ configmap: type: 2 - key: database type: 1 + - key: timeout + type: 0 - key: url type: 1 # 指标组列表 @@ -61,6 +63,7 @@ metrics: username: ^_^username^_^ password: ^_^password^_^ database: ^_^database^_^ + timeout: ^_^timeout^_^ # SQL查询方式: oneRow, multiRow, columns queryType: columns # sql @@ -102,6 +105,7 @@ metrics: username: ^_^username^_^ password: ^_^password^_^ database: ^_^database^_^ + timeout: ^_^timeout^_^ # SQL查询方式: oneRow, multiRow, columns queryType: columns # sql @@ -134,6 +138,7 @@ metrics: username: ^_^username^_^ password: ^_^password^_^ database: ^_^database^_^ + timeout: ^_^timeout^_^ # SQL查询方式: oneRow, multiRow, columns queryType: columns # sql diff --git a/manager/src/main/resources/define/app/mysql.yml b/manager/src/main/resources/define/app/mysql.yml index 951f0b5..ba46e85 100644 --- a/manager/src/main/resources/define/app/mysql.yml +++ b/manager/src/main/resources/define/app/mysql.yml @@ -18,8 +18,6 @@ configmap: type: 1 - key: timeout type: 0 - required: false - defaultValue: 3 - key: url type: 1 # 指标组列表 @@ -107,6 +105,7 @@ metrics: username: ^_^username^_^ password: ^_^password^_^ database: ^_^database^_^ + timeout: ^_^timeout^_^ # SQL查询方式: oneRow, multiRow, columns queryType: columns # sql @@ -139,6 +138,7 @@ metrics: username: ^_^username^_^ password: ^_^password^_^ database: ^_^database^_^ + timeout: ^_^timeout^_^ # SQL查询方式: oneRow, multiRow, columns queryType: columns # sql diff --git a/manager/src/main/resources/define/app/postgresql.yml b/manager/src/main/resources/define/app/postgresql.yml index d7cc334..9bb7ad7 100644 --- a/manager/src/main/resources/define/app/postgresql.yml +++ b/manager/src/main/resources/define/app/postgresql.yml @@ -18,6 +18,8 @@ configmap: type: 1 - key: url type: 1 + - key: timeout + type: 0 # 指标组列表 metrics: - name: basic @@ -45,6 +47,7 @@ metrics: host: ^_^host^_^ # 端口 port: ^_^port^_^ + timeout: ^_^timeout^_^ platform: postgresql username: ^_^username^_^ password: ^_^password^_^ @@ -87,6 +90,7 @@ metrics: host: ^_^host^_^ # 端口 port: ^_^port^_^ + timeout: ^_^timeout^_^ platform: postgresql username: ^_^username^_^ password: ^_^password^_^ @@ -110,6 +114,7 @@ metrics: host: ^_^host^_^ # 端口 port: ^_^port^_^ + timeout: ^_^timeout^_^ platform: postgresql username: ^_^username^_^ password: ^_^password^_^ diff --git a/manager/src/main/resources/define/param/mariadb.yml b/manager/src/main/resources/define/param/mariadb.yml index 3de359b..6c436d5 100644 --- a/manager/src/main/resources/define/param/mariadb.yml +++ b/manager/src/main/resources/define/param/mariadb.yml @@ -11,6 +11,12 @@ param: required: true defaultValue: 80 placeholder: '请输入端口' + - field: timeout + name: 查询超时时间 + type: number + required: false + defaultValue: 3000 + placeholder: '查询超时时间' - field: database name: 数据库名称 type: text diff --git a/manager/src/main/resources/define/param/mysql.yml b/manager/src/main/resources/define/param/mysql.yml index a7e4fa1..791188c 100644 --- a/manager/src/main/resources/define/param/mysql.yml +++ b/manager/src/main/resources/define/param/mysql.yml @@ -11,6 +11,12 @@ param: required: true defaultValue: 80 placeholder: '请输入端口' + - field: timeout + name: 查询超时时间 + type: number + required: false + defaultValue: 3000 + placeholder: '查询超时时间' - field: database name: 数据库名称 type: text @@ -27,10 +33,4 @@ param: - field: url name: URL type: text - required: false - - field: timeout - name: 超时时间 - type: number - required: false - defaultValue: 3 - placeholder: '请输入mysql可接受的超时时间' \ No newline at end of file + required: false \ No newline at end of file diff --git a/manager/src/main/resources/define/param/postgresql.yml b/manager/src/main/resources/define/param/postgresql.yml index df52e2f..9ad189c 100644 --- a/manager/src/main/resources/define/param/postgresql.yml +++ b/manager/src/main/resources/define/param/postgresql.yml @@ -11,6 +11,12 @@ param: required: true defaultValue: 5432 placeholder: '请输入端口' + - field: timeout + name: 查询超时时间 + type: number + required: false + defaultValue: 3000 + placeholder: '查询超时时间' - field: database name: 数据库名称 type: text