Przeglądaj źródła

[monitor]feature:support hide advanced params define (#68)

* feature:support hide advanced params define
* feature:all monitors set advanced params
* feature:remove duplicate port monitor yml
tomsun28 4 lat temu
rodzic
commit
ce528808c7

+ 6 - 0
common/src/main/java/com/usthe/common/entity/manager/ParamDefine.java

@@ -123,6 +123,12 @@ public class ParamDefine {
     private String valueAlias;
 
     /**
+     * 是否是高级隐藏参数 true-是 false-否
+     */
+    @ApiModelProperty(value = "是否是高级隐藏参数 true-是 false-否", example = "true", accessMode = READ_WRITE, position = 11)
+    private boolean hide = false;
+
+    /**
      * 此条记录创建者
      */
     @ApiModelProperty(value = "此条记录创建者", example = "tom", accessMode = READ_ONLY, position = 11)

+ 0 - 25
manager/src/main/resources/define/app/telnet.yml

@@ -1,25 +0,0 @@
-category: service
-app: telnet
-name:
-  zh-CN: TELNET端口可用性
-  en-US: PORT TELNET
-configmap:
-  - key: host
-    type: 1
-  - key: port
-    type: 0
-  - key: timeout
-    type: 0
-metrics:
-  - name: summary
-    priority: 0
-    fields:
-      - field: responseTime
-        type: 0
-        unit: ms
-    protocol: telnet
-# 当protocol为telnet协议时具体的采集配置
-    telnet:
-      host: ^_^host^_^
-      port: ^_^port^_^
-      timeout: ^_^timeout^_^

+ 2 - 0
manager/src/main/resources/define/param/A-example.yml

@@ -26,10 +26,12 @@ param:
     # 当type为text时,用limit表示字符串限制大小
     limit: 20
     required: false
+    hide: true
   - field: password
     name: 密码
     type: password
     required: false
+    hide: true
   - field: ssl
     name: 启动SSL
     # 当type为boolean时,前端用switch展示开关

+ 5 - 0
manager/src/main/resources/define/param/api.yml

@@ -60,15 +60,18 @@ param:
     type: text
     placeholder: '请求BODY资源类型'
     required: false
+    hide: true
   - field: payload
     name: 请求BODY
     type: textarea
     placeholder: 'POST PUT请求时有效'
     required: false
+    hide: true
   - field: authType
     name: 认证方式
     type: radio
     required: false
+    hide: true
     # 当type为radio单选框,checkbox复选框时,option表示可选项值列表 {name1:value1,name2:value2}
     options:
       - label: Basic Auth
@@ -81,7 +84,9 @@ param:
     # 当type为text时,用limit表示字符串限制大小
     limit: 20
     required: false
+    hide: true
   - field: password
     name: 密码
     type: password
     required: false
+    hide: true

+ 3 - 1
manager/src/main/resources/define/param/mariadb.yml

@@ -17,6 +17,7 @@ param:
     required: false
     defaultValue: 6000
     placeholder: '查询超时时间'
+    hide: true
   - field: database
     name: 数据库名称
     type: text
@@ -33,4 +34,5 @@ param:
   - field: url
     name: URL
     type: text
-    required: false
+    required: false
+    hide: true

+ 3 - 1
manager/src/main/resources/define/param/mysql.yml

@@ -15,6 +15,7 @@ param:
     name: 查询超时时间
     type: number
     required: false
+    hide: true
     defaultValue: 6000
     placeholder: '查询超时时间'
   - field: database
@@ -33,4 +34,5 @@ param:
   - field: url
     name: URL
     type: text
-    required: false
+    required: false
+    hide: true

+ 3 - 1
manager/src/main/resources/define/param/oracle.yml

@@ -15,6 +15,7 @@ param:
     name: 查询超时时间
     type: number
     required: false
+    hide: true
     defaultValue: 6000
     placeholder: '查询超时时间'
   - field: database
@@ -33,4 +34,5 @@ param:
   - field: url
     name: URL
     type: text
-    required: false
+    required: false
+    hide: true

+ 3 - 1
manager/src/main/resources/define/param/postgresql.yml

@@ -15,6 +15,7 @@ param:
     name: 查询超时时间
     type: number
     required: false
+    hide: true
     defaultValue: 6000
     placeholder: '查询超时时间'
   - field: database
@@ -33,4 +34,5 @@ param:
   - field: url
     name: URL
     type: text
-    required: false
+    required: false
+    hide: true

+ 3 - 1
manager/src/main/resources/define/param/sqlserver.yml

@@ -15,6 +15,7 @@ param:
     name: 查询超时时间
     type: number
     required: false
+    hide: true
     defaultValue: 6000
     placeholder: '查询超时时间'
   - field: database
@@ -33,4 +34,5 @@ param:
   - field: url
     name: URL
     type: text
-    required: false
+    required: false
+    hide: true

+ 0 - 27
manager/src/main/resources/define/param/telnet.yml

@@ -1,27 +0,0 @@
-# 监控应用类型名称(与文件名保持一致) eg: linux windows tomcat mysql aws...
-app: telnet
-# 强制固定必须参数 - host(ipv4,ipv6,域名)
-param:
-    # field-字段名称标识符
-  - field: host
-    # name-参数字段显示名称
-    name: 主机Host
-    # type-字段类型,样式(大部分映射input标签type属性)
-    type: host
-    # 是否是必输项 true-必填 false-可选
-    required: true
-  - field: port
-    name: 端口
-    type: number
-    # 当type为number时,用range表示范围
-    range: '[0,65535]'
-    required: true
-    defaultValue: 80
-  - field: timeout
-    name: Telnet超时时间
-    type: number
-    # 当type为number时,用range表示范围
-    range: '[0,100000]'
-    required: true
-    placeholder: '请输入超时时间,单位毫秒'
-    defaultValue: 6000

+ 4 - 1
manager/src/main/resources/define/param/website.yml

@@ -33,6 +33,7 @@ param:
     name: 认证方式
     type: radio
     required: false
+    hide: true
     # 当type为radio单选框,checkbox复选框时,option表示可选项值列表 {name1:value1,name2:value2}
     options:
       - label: Basic Auth
@@ -45,7 +46,9 @@ param:
     # 当type为text时,用limit表示字符串限制大小
     limit: 20
     required: false
+    hide: true
   - field: password
     name: 密码
     type: password
-    required: false
+    required: false
+    hide: true

+ 2 - 0
web-app/src/app/pojo/ParamDefine.ts

@@ -12,4 +12,6 @@ export class ParamDefine {
   // 当type为key-value时有效,表示别名描述
   keyAlias!: string;
   valueAlias!: string;
+  // 此参数是否隐藏 即默认不显示, 在高级设置区显示
+  hide: boolean = false;
 }

+ 141 - 1
web-app/src/app/routes/monitor/monitor-edit/monitor-edit.component.html

@@ -162,11 +162,151 @@
         </nz-form-control>
       </nz-form-item>
 
+      <nz-collapse [nzGhost]="true">
+        <nz-collapse-panel nzHeader="高级" [nzHeader]="extraColHeader" [nzShowArrow]="false">
+          <nz-form-item *ngFor="let paramDefine of advancedParamDefines; let i = index">
+            <nz-form-label
+              *ngIf="paramDefine.field !== 'host' && paramDefine.type === 'text'"
+              nzSpan="7"
+              [nzRequired]="paramDefine.required"
+              [nzFor]="paramDefine.field"
+              >{{ paramDefine.name }}
+            </nz-form-label>
+            <nz-form-control
+              *ngIf="paramDefine.field !== 'host' && paramDefine.type === 'text'"
+              nzSpan="8"
+              [nzErrorTip]="'validation.required' | i18n"
+            >
+              <input
+                nz-input
+                [(ngModel)]="advancedParams[i].value"
+                [required]="paramDefine.required"
+                [name]="paramDefine.field"
+                [type]="paramDefine.type"
+                [id]="paramDefine.field"
+                [placeholder]="paramDefine.placeholder ? paramDefine.placeholder : ''"
+              />
+            </nz-form-control>
+
+            <nz-form-label
+              *ngIf="paramDefine.type === 'textarea'"
+              nzSpan="7"
+              [nzRequired]="paramDefine.required"
+              [nzFor]="paramDefine.field"
+              >{{ paramDefine.name }}
+            </nz-form-label>
+            <nz-form-control *ngIf="paramDefine.type === 'textarea'" nzSpan="8" [nzErrorTip]="'validation.required' | i18n">
+              <textarea
+                nz-input
+                [(ngModel)]="advancedParams[i].value"
+                [required]="paramDefine.required"
+                [name]="paramDefine.field"
+                [id]="paramDefine.field"
+                [placeholder]="paramDefine.placeholder ? paramDefine.placeholder : ''"
+                rows="3"
+              ></textarea>
+            </nz-form-control>
+
+            <nz-form-label
+              *ngIf="paramDefine.type === 'password'"
+              nzSpan="7"
+              [nzRequired]="paramDefine.required"
+              [nzFor]="paramDefine.field"
+              >{{ paramDefine.name }}
+            </nz-form-label>
+            <nz-form-control *ngIf="paramDefine.type === 'password'" nzSpan="8" [nzErrorTip]="'validation.required' | i18n">
+              <nz-input-group [nzSuffix]="suffixTemplate" style="width: 100%">
+                <input
+                  [type]="passwordVisible ? 'text' : 'password'"
+                  nz-input
+                  placeholder="input password"
+                  [required]="paramDefine.required"
+                  [(ngModel)]="advancedParams[i].value"
+                  [id]="paramDefine.field"
+                  [name]="paramDefine.field"
+                  [placeholder]="paramDefine.placeholder ? paramDefine.placeholder : ''"
+                />
+              </nz-input-group>
+              <ng-template #suffixTemplate>
+                <i nz-icon [nzType]="passwordVisible ? 'eye-invisible' : 'eye'" (click)="passwordVisible = !passwordVisible"></i>
+              </ng-template>
+            </nz-form-control>
+
+            <nz-form-label *ngIf="paramDefine.type === 'number'" nzSpan="7" [nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
+              >{{ paramDefine.name }}
+            </nz-form-label>
+            <nz-form-control *ngIf="paramDefine.type === 'number'" nzSpan="8" [nzErrorTip]="'validation.required' | i18n">
+              <nz-input-number
+                [(ngModel)]="advancedParams[i].value"
+                [required]="paramDefine.required"
+                [nzMin]="-1000"
+                [nzMax]="65535"
+                [nzStep]="1"
+                [nzPlaceHolder]="paramDefine.placeholder ? paramDefine.placeholder : ''"
+                [name]="paramDefine.field"
+                [id]="paramDefine.field"
+              ></nz-input-number>
+            </nz-form-control>
+
+            <nz-form-label *ngIf="paramDefine.type === 'boolean'" nzSpan="7" [nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
+              >{{ paramDefine.name }}
+            </nz-form-label>
+            <nz-form-control *ngIf="paramDefine.type === 'boolean'" nzSpan="8" [nzErrorTip]="'validation.required' | i18n">
+              <nz-switch
+                [(ngModel)]="advancedParams[i].value"
+                [required]="paramDefine.required"
+                [name]="paramDefine.field"
+                [id]="paramDefine.field"
+              ></nz-switch>
+            </nz-form-control>
+
+            <nz-form-label *ngIf="paramDefine.type === 'radio'" nzSpan="7" [nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
+              >{{ paramDefine.name }}
+            </nz-form-label>
+            <nz-form-control *ngIf="paramDefine.type === 'radio'" nzSpan="8" [nzErrorTip]="'validation.required' | i18n">
+              <nz-radio-group
+                [(ngModel)]="advancedParams[i].value"
+                [required]="paramDefine.required"
+                nzButtonStyle="solid"
+                [name]="paramDefine.field"
+                [id]="paramDefine.field"
+              >
+                <label nz-radio-button [nzValue]="optionItem.value" *ngFor="let optionItem of paramDefine.options">
+                  {{ optionItem.label }}
+                </label>
+              </nz-radio-group>
+            </nz-form-control>
+
+            <nz-form-label
+              *ngIf="paramDefine.type === 'key-value'"
+              nzSpan="7"
+              [nzRequired]="paramDefine.required"
+              [nzFor]="paramDefine.field"
+              >{{ paramDefine.name }}
+            </nz-form-label>
+            <nz-form-control *ngIf="paramDefine.type === 'key-value'" nzSpan="8" [nzErrorTip]="'validation.required' | i18n">
+              <app-key-value-input
+                [(value)]="advancedParams[i].value"
+                [id]="paramDefine.field"
+                keyAlias="Header Name"
+                valueAlias="Header Value"
+              ></app-key-value-input>
+            </nz-form-control>
+          </nz-form-item>
+        </nz-collapse-panel>
+      </nz-collapse>
+      <ng-template #extraColHeader>
+        <button style="top: -10px; margin-left: 40%" nz-button nzType="dashed" nz-tooltip nzTooltipTitle="设置高级可选参数">
+          <span>高级设置</span>
+          <i nz-icon nzType="down-circle" nzTheme="outline"></i>
+        </button>
+      </ng-template>
+
       <nz-divider></nz-divider>
 
       <nz-form-item>
         <nz-form-label nzSpan="7" nzFor="intervals" nzTooltipTitle="监控周期性采集数据间隔时间,单位秒"> 采集间隔 </nz-form-label>
-        <nz-form-control nzSpan="10">
+        <nz-form-control nzSpan="8">
           <nz-input-number [(ngModel)]="monitor.intervals" [nzMin]="10" [nzMax]="604800" [nzStep]="60" name="intervals" id="intervals">
           </nz-input-number>
         </nz-form-control>

+ 8 - 0
web-app/src/app/routes/monitor/monitor-edit/monitor-edit.component.less

@@ -0,0 +1,8 @@
+.dynamic-button {
+  font-size: 20px;
+  margin-left: 45%;
+}
+
+.dynamic-button:hover {
+  font-size: 30px;
+}

+ 26 - 6
web-app/src/app/routes/monitor/monitor-edit/monitor-edit.component.ts

@@ -16,7 +16,7 @@ import { MonitorService } from '../../../service/monitor.service';
 @Component({
   selector: 'app-monitor-modify',
   templateUrl: './monitor-edit.component.html',
-  styles: []
+  styleUrls: ['./monitor-edit.component.less']
 })
 export class MonitorEditComponent implements OnInit {
   constructor(
@@ -30,6 +30,8 @@ export class MonitorEditComponent implements OnInit {
 
   paramDefines!: ParamDefine[];
   params!: Param[];
+  advancedParamDefines!: ParamDefine[];
+  advancedParams!: Param[];
   paramValueMap = new Map<String, Param>();
   monitor = new Monitor();
   profileForm: FormGroup = new FormGroup({});
@@ -59,7 +61,6 @@ export class MonitorEditComponent implements OnInit {
                 this.paramValueMap.set(item.field, item);
               });
             }
-            this.params = message.data.params;
             this.detected = message.data.detected ? message.data.detected : true;
           } else {
             console.warn(message.msg);
@@ -73,7 +74,10 @@ export class MonitorEditComponent implements OnInit {
         if (message.code === 0) {
           this.paramDefines = message.data;
           this.params = [];
-          this.paramDefines.forEach(define => {
+          this.advancedParams = [];
+          this.paramDefines = [];
+          this.advancedParamDefines = [];
+          message.data.forEach(define => {
             let param = this.paramValueMap.get(define.field);
             if (param === undefined) {
               param = new Param();
@@ -100,7 +104,13 @@ export class MonitorEditComponent implements OnInit {
                 }
               }
             }
-            this.params.push(param);
+            if (define.hide) {
+              this.advancedParams.push(param);
+              this.advancedParamDefines.push(define);
+            } else {
+              this.params.push(param);
+              this.paramDefines.push(define);
+            }
           });
         } else {
           console.warn(message.msg);
@@ -144,10 +154,15 @@ export class MonitorEditComponent implements OnInit {
         param.value = (param.value as string).trim();
       }
     });
+    this.advancedParams.forEach(param => {
+      if (param.value != null && typeof param.value == 'string') {
+        param.value = (param.value as string).trim();
+      }
+    });
     let addMonitor = {
       detected: this.detected,
       monitor: this.monitor,
-      params: this.params
+      params: this.params.concat(this.advancedParams)
     };
     this.isSpinning = true;
     this.monitorSvc.editMonitor(addMonitor).subscribe(
@@ -188,10 +203,15 @@ export class MonitorEditComponent implements OnInit {
         param.value = (param.value as string).trim();
       }
     });
+    this.advancedParams.forEach(param => {
+      if (param.value != null && typeof param.value == 'string') {
+        param.value = (param.value as string).trim();
+      }
+    });
     let detectMonitor = {
       detected: this.detected,
       monitor: this.monitor,
-      params: this.params
+      params: this.params.concat(this.advancedParams)
     };
     this.isSpinning = true;
     this.monitorSvc.detectMonitor(detectMonitor).subscribe(

+ 140 - 0
web-app/src/app/routes/monitor/monitor-new/monitor-new.component.html

@@ -171,6 +171,146 @@
         </nz-form-control>
       </nz-form-item>
 
+      <nz-collapse [nzGhost]="true">
+        <nz-collapse-panel nzHeader="高级" [nzHeader]="extraColHeader" [nzShowArrow]="false">
+          <nz-form-item *ngFor="let paramDefine of advancedParamDefines; let i = index">
+            <nz-form-label
+              *ngIf="paramDefine.field !== 'host' && paramDefine.type === 'text'"
+              nzSpan="7"
+              [nzRequired]="paramDefine.required"
+              [nzFor]="paramDefine.field"
+              >{{ paramDefine.name }}
+            </nz-form-label>
+            <nz-form-control
+              *ngIf="paramDefine.field !== 'host' && paramDefine.type === 'text'"
+              nzSpan="8"
+              [nzErrorTip]="'validation.required' | i18n"
+            >
+              <input
+                nz-input
+                [(ngModel)]="advancedParams[i].value"
+                [required]="paramDefine.required"
+                [name]="paramDefine.field"
+                [type]="paramDefine.type"
+                [id]="paramDefine.field"
+                [placeholder]="paramDefine.placeholder ? paramDefine.placeholder : ''"
+              />
+            </nz-form-control>
+
+            <nz-form-label
+              *ngIf="paramDefine.type === 'textarea'"
+              nzSpan="7"
+              [nzRequired]="paramDefine.required"
+              [nzFor]="paramDefine.field"
+              >{{ paramDefine.name }}
+            </nz-form-label>
+            <nz-form-control *ngIf="paramDefine.type === 'textarea'" nzSpan="8" [nzErrorTip]="'validation.required' | i18n">
+              <textarea
+                nz-input
+                [(ngModel)]="advancedParams[i].value"
+                [required]="paramDefine.required"
+                [name]="paramDefine.field"
+                [id]="paramDefine.field"
+                [placeholder]="paramDefine.placeholder ? paramDefine.placeholder : ''"
+                rows="3"
+              ></textarea>
+            </nz-form-control>
+
+            <nz-form-label
+              *ngIf="paramDefine.type === 'password'"
+              nzSpan="7"
+              [nzRequired]="paramDefine.required"
+              [nzFor]="paramDefine.field"
+              >{{ paramDefine.name }}
+            </nz-form-label>
+            <nz-form-control *ngIf="paramDefine.type === 'password'" nzSpan="8" [nzErrorTip]="'validation.required' | i18n">
+              <nz-input-group [nzSuffix]="suffixTemplate" style="width: 100%">
+                <input
+                  [type]="passwordVisible ? 'text' : 'password'"
+                  nz-input
+                  placeholder="input password"
+                  [required]="paramDefine.required"
+                  [(ngModel)]="advancedParams[i].value"
+                  [id]="paramDefine.field"
+                  [name]="paramDefine.field"
+                  [placeholder]="paramDefine.placeholder ? paramDefine.placeholder : ''"
+                />
+              </nz-input-group>
+              <ng-template #suffixTemplate>
+                <i nz-icon [nzType]="passwordVisible ? 'eye-invisible' : 'eye'" (click)="passwordVisible = !passwordVisible"></i>
+              </ng-template>
+            </nz-form-control>
+
+            <nz-form-label *ngIf="paramDefine.type === 'number'" nzSpan="7" [nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
+              >{{ paramDefine.name }}
+            </nz-form-label>
+            <nz-form-control *ngIf="paramDefine.type === 'number'" nzSpan="8" [nzErrorTip]="'validation.required' | i18n">
+              <nz-input-number
+                [(ngModel)]="advancedParams[i].value"
+                [required]="paramDefine.required"
+                [nzMin]="-1000"
+                [nzMax]="65535"
+                [nzStep]="1"
+                [nzPlaceHolder]="paramDefine.placeholder ? paramDefine.placeholder : ''"
+                [name]="paramDefine.field"
+                [id]="paramDefine.field"
+              ></nz-input-number>
+            </nz-form-control>
+
+            <nz-form-label *ngIf="paramDefine.type === 'boolean'" nzSpan="7" [nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
+              >{{ paramDefine.name }}
+            </nz-form-label>
+            <nz-form-control *ngIf="paramDefine.type === 'boolean'" nzSpan="8" [nzErrorTip]="'validation.required' | i18n">
+              <nz-switch
+                [(ngModel)]="advancedParams[i].value"
+                [required]="paramDefine.required"
+                [name]="paramDefine.field"
+                [id]="paramDefine.field"
+              ></nz-switch>
+            </nz-form-control>
+
+            <nz-form-label *ngIf="paramDefine.type === 'radio'" nzSpan="7" [nzRequired]="paramDefine.required" [nzFor]="paramDefine.field"
+              >{{ paramDefine.name }}
+            </nz-form-label>
+            <nz-form-control *ngIf="paramDefine.type === 'radio'" nzSpan="8" [nzErrorTip]="'validation.required' | i18n">
+              <nz-radio-group
+                [(ngModel)]="advancedParams[i].value"
+                [required]="paramDefine.required"
+                nzButtonStyle="solid"
+                [name]="paramDefine.field"
+                [id]="paramDefine.field"
+              >
+                <label nz-radio-button [nzValue]="optionItem.value" *ngFor="let optionItem of paramDefine.options">
+                  {{ optionItem.label }}
+                </label>
+              </nz-radio-group>
+            </nz-form-control>
+
+            <nz-form-label
+              *ngIf="paramDefine.type === 'key-value'"
+              nzSpan="7"
+              [nzRequired]="paramDefine.required"
+              [nzFor]="paramDefine.field"
+              >{{ paramDefine.name }}
+            </nz-form-label>
+            <nz-form-control *ngIf="paramDefine.type === 'key-value'" nzSpan="8" [nzErrorTip]="'validation.required' | i18n">
+              <app-key-value-input
+                [(value)]="advancedParams[i].value"
+                [id]="paramDefine.field"
+                keyAlias="Header Name"
+                valueAlias="Header Value"
+              ></app-key-value-input>
+            </nz-form-control>
+          </nz-form-item>
+        </nz-collapse-panel>
+      </nz-collapse>
+      <ng-template #extraColHeader>
+        <button style="top: -10px; margin-left: 40%" nz-button nzType="dashed" nz-tooltip nzTooltipTitle="设置高级可选参数">
+          <span>高级设置</span>
+          <i nz-icon nzType="down-circle" nzTheme="outline"></i>
+        </button>
+      </ng-template>
+
       <nz-divider></nz-divider>
 
       <nz-form-item>

+ 25 - 5
web-app/src/app/routes/monitor/monitor-new/monitor-new.component.ts

@@ -20,6 +20,8 @@ import { MonitorService } from '../../../service/monitor.service';
 export class MonitorNewComponent implements OnInit {
   paramDefines!: ParamDefine[];
   params!: Param[];
+  advancedParamDefines!: ParamDefine[];
+  advancedParams!: Param[];
   monitor!: Monitor;
   detected: boolean = true;
   passwordVisible: boolean = false;
@@ -53,9 +55,11 @@ export class MonitorNewComponent implements OnInit {
       )
       .subscribe(message => {
         if (message.code === 0) {
-          this.paramDefines = message.data;
           this.params = [];
-          this.paramDefines.forEach(define => {
+          this.advancedParams = [];
+          this.paramDefines = [];
+          this.advancedParamDefines = [];
+          message.data.forEach(define => {
             let param = new Param();
             param.field = define.field;
             if (define.type === 'number') {
@@ -77,7 +81,13 @@ export class MonitorNewComponent implements OnInit {
                 param.value = define.defaultValue;
               }
             }
-            this.params.push(param);
+            if (define.hide) {
+              this.advancedParams.push(param);
+              this.advancedParamDefines.push(define);
+            } else {
+              this.params.push(param);
+              this.paramDefines.push(define);
+            }
           });
         } else {
           console.warn(message.msg);
@@ -125,10 +135,15 @@ export class MonitorNewComponent implements OnInit {
         param.value = (param.value as string).trim();
       }
     });
+    this.advancedParams.forEach(param => {
+      if (param.value != null && typeof param.value == 'string') {
+        param.value = (param.value as string).trim();
+      }
+    });
     let addMonitor = {
       detected: this.detected,
       monitor: this.monitor,
-      params: this.params
+      params: this.params.concat(this.advancedParams)
     };
     this.isSpinning = true;
     this.monitorSvc.newMonitor(addMonitor).subscribe(
@@ -169,10 +184,15 @@ export class MonitorNewComponent implements OnInit {
         param.value = (param.value as string).trim();
       }
     });
+    this.advancedParams.forEach(param => {
+      if (param.value != null && typeof param.value == 'string') {
+        param.value = (param.value as string).trim();
+      }
+    });
     let detectMonitor = {
       detected: true,
       monitor: this.monitor,
-      params: this.params
+      params: this.params.concat(this.advancedParams)
     };
     this.isSpinning = true;
     this.monitorSvc.detectMonitor(detectMonitor).subscribe(

+ 3 - 1
web-app/src/app/routes/monitor/monitor.module.ts

@@ -16,6 +16,7 @@ import { MonitorEditComponent } from './monitor-edit/monitor-edit.component';
 import { MonitorListComponent } from './monitor-list/monitor-list.component';
 import { MonitorNewComponent } from './monitor-new/monitor-new.component';
 import { MonitorRoutingModule } from './monitor-routing.module';
+import { NzCollapseModule } from 'ng-zorro-antd/collapse';
 
 const COMPONENTS: Array<Type<void>> = [
   MonitorNewComponent,
@@ -37,7 +38,8 @@ const COMPONENTS: Array<Type<void>> = [
     NzRadioModule,
     NgxEchartsModule,
     NzLayoutModule,
-    NzSpaceModule
+    NzSpaceModule,
+    NzCollapseModule
   ],
   declarations: COMPONENTS
 })