Kaynağa Gözat

[manager,collector]mariadb,postgresql支持timeout,fix jdbc解析异常 (#36)

* [manager,collector]fix jdbc解析异常,mariadb支持timeout

* [manager]postgresql支持timeout设置
tomsun28 3 yıl önce
ebeveyn
işleme
ddb290bba3

+ 12 - 4
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) {

+ 1 - 1
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 ...
      */

+ 5 - 0
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

+ 2 - 2
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

+ 5 - 0
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^_^

+ 6 - 0
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

+ 7 - 7
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可接受的超时时间'
+    required: false

+ 6 - 0
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