单元 4:配置告警¶
为监测设备的性能,你可以为任何设备异常自定义告警级别,告警类型,告警内容和告警规则。本单元展示如何启用告警以监控水表的数据。详细步骤如下。
步骤 1:创建告警源¶
由于水表的数据为非 EnOS 标准数据格式,本步骤将创建告警源以监控 Kafka 消息,并自定义转换方式,使用数据映射 JAR 包构建告警指标。
数据映射 JAR 包¶
JAR 包将实现 StandardMetricResolver
方法,该方法将在创建告警源时定义,以取出 Kafka 消息中的 flow 值并将其转换为告警数据。
更多信息,参见 告警源。
添加以下依赖。
<dependency> <groupId>com.envisioniot.enos</groupId> <artifactId>alert-engine-share</artifactId> <version>0.1.10-SNAPSHOT</version> <exclusions> <exclusion> <groupId>*</groupId> <artifactId>*</artifactId> </exclusion> </exclusions> </dependency>
使用以下示例代码创建一个实现
StandardMetricResolver
的解析类。package com.example.alertsource; import com.envisioniot.enos.alert_engine.core.share.datasource.dto.codec.StandardMetricResolver; import com.envisioniot.enos.alert_engine.core.share.metric.dto.Metric; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import lombok.extern.slf4j.Slf4j; import java.util.Map; @Slf4j public class CodecAlertData implements StandardMetricResolver { private static final String METRIC = "flow"; private static final String ORG_ID = "yourOrgId"; private static final String INSTANCE = "XolflP2C"; private static final String TIMEZONE = "+08:00"; private static final Gson GSON = new Gson(); @Override public void init() { // do nothing } @Override public Metric decode(String msg, Map<String, String> context) { log.info("consume msg: {}, context: {}", msg, context); Metric metric = new Metric(); try { Map<String, Object> inputData = GSON.fromJson(msg, new TypeToken<Map<String, Object>>() {}.getType()); final long timestamp = System.currentTimeMillis(); metric.setMetric(METRIC); metric.setOrgId(ORG_ID); metric.setInstance(INSTANCE); metric.setTimezone(TIMEZONE); metric.setTimestamp(timestamp); metric.setValue(String.valueOf(inputData.get(METRIC))); log.info("output metric: {}", metric); return metric; } catch (Throwable t) { log.error("process data error, ", t); return metric; } } }
创建一个 JAR 文件。
告警源¶
在 EnOS 管理控制台 中选择 告警管理 > 告警源。
点击 新建告警源,在 接入源 页面配置下列信息。
名称:水表告警源
类型:Kafka 客户端
Topic:输入在 单元 3 中 Kafka Pub 节点中的 topic。
点击 下一步,在 数据映射 页面配置下列信息。
方式:JAR
类名:com.example.alertsource.CodecAlertData
文件:上传以上创建的 JAR 文件。
点击 确认 创建该告警源。
在 告警源 页面中启用告警源。
步骤 2:创建告警级别¶
在 EnOS 管理控制台 中选择 告警管理 > 告警级别。
点击 新增级别,在 添加级别 页面配置下列信息。
级别编号:WaterMeterWarning
级别描述:警告
点击 确认 创建该告警级别。
更多信息,参见 告警级别。
步骤 3:创建告警类型¶
在 EnOS 管理控制台 中选择 告警管理 > 告警类型。
点击 新建类型,在 添加类型 页面配置下列信息。
类型编号:FlowOverThreshold
类型描述:流量超过阈值
点击 确认 创建该告警类型。
更多信息,参见 告警类型。
步骤 3:创建告警规则¶
在 EnOS 管理控制台 中选择 告警管理 > 告警规则。
点击 新建规则,并在 添加告警规则 页面配置下列信息后点击 确认。
更多信息,参见 告警规则。
基本信息¶
规则名称:水表规则
规则编号:RuleForWaterMeter
触发器¶
指定触发指标。
触发器源:其他
Alert Source:选择步骤 1 中创建的告警源(水表告警源)
指标:flow
数据类型:Number
告警条件¶
设置告警条件,当 flow 值等于或超过 10000 时触发告警。
告警条件:阈值
触发器:flow
运算符:>=
类型:Value
值:10000
告警详情¶
告警内容:流量超过 10000
告警级别:选择步骤 2 中创建的告警级别(警告)。
告警类型:选择步骤 3 中创建的告警类型(流量超过阈值)。