From 7c12eda30e188dbc913fc76749b9efb009df814c Mon Sep 17 00:00:00 2001 From: tomsun28 Date: Tue, 8 Mar 2022 02:57:49 +0000 Subject: [PATCH] =?UTF-8?q?[alerter,webapp]feature=20=E5=91=8A=E8=AD=A6?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E6=94=AF=E6=8C=81=E5=A4=9A=E6=8C=87=E6=A0=87?= =?UTF-8?q?=E9=9B=86=E5=90=88=20!10=20*=20[alerter,webapp]feature=20?= =?UTF-8?q?=E5=91=8A=E8=AD=A6=E9=85=8D=E7=BD=AE=E6=94=AF=E6=8C=81=E5=A4=9A?= =?UTF-8?q?=E6=8C=87=E6=A0=87=E9=9B=86=E5=90=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../usthe/alert/calculate/CalculateAlarm.java | 13 ++---- .../alert-setting.component.html | 41 ++++++++++++------- .../alert-setting/alert-setting.component.ts | 21 ++++++++++ .../routes/dashboard/dashboard.component.ts | 2 +- 4 files changed, 53 insertions(+), 24 deletions(-) diff --git a/alerter/src/main/java/com/usthe/alert/calculate/CalculateAlarm.java b/alerter/src/main/java/com/usthe/alert/calculate/CalculateAlarm.java index a9fb04f..7b8ee72 100644 --- a/alerter/src/main/java/com/usthe/alert/calculate/CalculateAlarm.java +++ b/alerter/src/main/java/com/usthe/alert/calculate/CalculateAlarm.java @@ -138,32 +138,24 @@ public class CalculateAlarm { } List fields = metricsData.getFieldsList(); Map fieldValueMap = new HashMap<>(16); - fieldValueMap.put("app", app); - fieldValueMap.put("metrics", metrics); for (CollectRep.ValueRow valueRow : metricsData.getValuesList()) { if (!valueRow.getColumnsList().isEmpty()) { + fieldValueMap.clear(); String instance = valueRow.getInstance(); if (!"".equals(instance)) { fieldValueMap.put("instance", instance); - } else { - fieldValueMap.remove("instance"); } for (int index = 0; index < valueRow.getColumnsList().size(); index++) { String valueStr = valueRow.getColumns(index); CollectRep.Field field = fields.get(index); - fieldValueMap.put("metric", field.getName()); if (field.getType() == CommonConstants.TYPE_NUMBER) { Double doubleValue = CommonUtil.parseDoubleStr(valueStr); if (doubleValue != null) { fieldValueMap.put(field.getName(), doubleValue); - } else { - fieldValueMap.remove(field.getName()); } } else { if (!"".equals(valueStr)) { fieldValueMap.put(field.getName(), valueStr); - } else { - fieldValueMap.remove(field.getName()); } } } @@ -187,6 +179,9 @@ public class CalculateAlarm { } } else { int times = 1; + fieldValueMap.put("app", app); + fieldValueMap.put("metrics", metrics); + fieldValueMap.put("metric", define.getField()); Alert alert = Alert.builder() .monitorId(monitorId) .alertDefineId(define.getId()) diff --git a/web-app/src/app/routes/alert/alert-setting/alert-setting.component.html b/web-app/src/app/routes/alert/alert-setting/alert-setting.component.html index 92d6fba..c51de16 100644 --- a/web-app/src/app/routes/alert/alert-setting/alert-setting.component.html +++ b/web-app/src/app/routes/alert/alert-setting/alert-setting.component.html @@ -127,7 +127,14 @@ 指标对象 - + @@ -138,8 +145,11 @@ {{ cascadeValues[2] }} : 选中的指标对象 - - instance : 所属行实例值 + + {{ item }} : 所属行其它指标对象 + + + instance : 所属行实例 支持操作符函数 : equals(str1,str2), ==, <, <=, >, >=, !=, ( ), +, -, &&, || @@ -167,7 +177,7 @@ nz-input name="expr" id="expr" - placeholder='根据此表达式计算判断是否触发阈值. 示例: equals(instance,"cpu1") && usage>40' + placeholder="根据此表达式计算判断是否触发阈值. 示例: responseTime>40" > @@ -204,20 +214,23 @@ - - ${metric} : 选中的指标对象名称 + + ${app} : 监控类型名称 + + + ${metrics} : 监控指标集合名称 - ${{ '{' + cascadeValues[2] + '}' }} : 选中的指标对象值 + ${metric} : 监控指标名称 + + + ${{ '{' + cascadeValues[2] + '}' }} : 监控指标对象值 + + + ${{ '{' + item + '}' }} : 所属行其它指标值 - ${instance} : 所在行实例值 - - - ${app} : 所属监控类型名称 - - - ${metrics} : 所属监控指标组名称 + ${instance} : 所属行实例值 diff --git a/web-app/src/app/routes/alert/alert-setting/alert-setting.component.ts b/web-app/src/app/routes/alert/alert-setting/alert-setting.component.ts index cf3057d..705a7f3 100644 --- a/web-app/src/app/routes/alert/alert-setting/alert-setting.component.ts +++ b/web-app/src/app/routes/alert/alert-setting/alert-setting.component.ts @@ -136,6 +136,7 @@ export class AlertSettingComponent implements OnInit { if (message.code === 0) { this.define = message.data; this.cascadeValues = [this.define.app, this.define.metric, this.define.field]; + this.cascadeOnChange(this.cascadeValues); } else { this.notifySvc.error('查询此监控定义详情失败!', message.msg); } @@ -234,6 +235,26 @@ export class AlertSettingComponent implements OnInit { isManageModalAdd = true; define!: AlertDefine; cascadeValues: string[] = []; + otherMetrics: string[] = []; + cascadeOnChange(values: string[]): void { + if (values == null || values.length != 3) { + return; + } + this.appHierarchies.forEach(hierarchy => { + if (hierarchy.value == values[0]) { + hierarchy.children.forEach((metrics: { value: string; children: any[]}) => { + if (metrics.value == values[1]) { + this.otherMetrics = []; + metrics.children.forEach(item => { + if (item.value != values[2]) { + this.otherMetrics.push(item.value); + } + }); + } + }); + } + }); + } onManageModalCancel() { this.isManageModalVisible = false; } diff --git a/web-app/src/app/routes/dashboard/dashboard.component.ts b/web-app/src/app/routes/dashboard/dashboard.component.ts index b6c9ea3..626821b 100644 --- a/web-app/src/app/routes/dashboard/dashboard.component.ts +++ b/web-app/src/app/routes/dashboard/dashboard.component.ts @@ -127,7 +127,7 @@ export class DashboardComponent implements OnInit, OnDestroy { }; this.alertsTheme = { title: { - subtext: '告警等级分布', + subtext: '告警分布', left: 'center' }, tooltip: {