代码拉取完成,页面将自动刷新
同步操作将从 贾文斌/xiniu-cloud-iot-trigger 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
组件在运行时,依赖ETCD服务端、kafka服务端运行
/registry/triggers/project/
的所以数据——value。value中的数据是触发事件的规则。iot-trigger/template/
的所以数据——value。value中的数据是消息模板,根据消息模板生成消息内容(暂未实现)。devicedata-clean
中拉取设备数据;生成了消息,会放进kafka中的对应的topic中。[trigger]$ cd src/main/resources/
[resources]$ vim application.properties
在配置项的说明如下
key | 类型 | 说明 | 举例 |
---|---|---|---|
etcd_endpoints | string | etcd服务端的链接地址 | http://172.168.1.240:2379 |
trigger.thread.pool.size | int | 触发器线程池的大小 | 20 |
kafka_consumer_bootstrap_servers | string | kafka消费者的ip和端口 | 172.168.1.233:9092或者172.168.1.233:9092,172.168.1.233:9093,172.168.1.233:9094 |
kafka_producer_bootstrap_servers | string | kafka生产者的ip和端口 | 172.168.1.233:9092或者172.168.1.233:9092,172.168.1.233:9093,172.168.1.233:9094 |
kafka.consumer.topic | string | kafka消费者topic | devicedata-clean |
kafka.consumer.topic | string | kafka生产者topic | devicedata-alert |
[trigger]$ mvn package -Dmaven.test.skip=true
[trigger]$ nohup java -jar target/iot-trigger-0.0.1-SNAPSHOT.jar > log.log &
[trigger]$ tail -f target/log.log
进入etcd客户端进行命令操作
查看所有的触发规则
$ etcdctl get /registry/triggers/project/ --prefix
消息发送至数据总线,需要准许ETCD中的消息规则,如下的ETCD中的某个key
/registry/messages/project/{project_id}/{topic}/{partition}/<rule_name>
project_id
下设备产生的消息,发送到kafka中的topic
中,选择的partition
为{partition}
触发规则key设置:
/registry/triggers/project/{project_id}/{rule_name}
触发规则字段表达式,etcd中拉取的数据格式
{
"expr": {
"uncap": {
"sins":[{"gt": 0},{"leq":3}],
"rp":"0 AND 1"
},
"xValue":{
"sins":[{"gt": 0},{"leq":3}],
"rp":"0 AND 1"
}
},
"rp":"OR",
"modelId":"9e9cc553-f4d3-48d7-9926-041284309339",
"includeIds":[],
"excludeIds":[],
"serverity": "Warning",
"templateId": "templateId-1",
"msg": "xxxx{{uncap}}xxxx",
"name":"trigger3",
"multi_alert":1
}
规则说明
expr
中定义了需要进行判断的字段,有两个部分key分别是 sins
和rp
sins
该字段的多种判断方式的数组,比如 [{"gt":0},{"leq":3}]
,索引0对象表达大于于0,索引1的对象表达小于或等于3
gt
代表大于lt
代表小于eq
代表相等neq
代表不相等geq
代表大于或则等于leq
代表小于或则等于lt-delta
和gt-delta
代表变化超过的范围时,就会触发。
gt-delta
会触发DeviceAlert
,当变化范围恢复时,会触发DeviceRecovery
。lt-delta
会触发DeviceAlert
,当变化范围恢复时,会触发DeviceRecovery
。sigma
。nsigma
和psigma
rp
表示了每个表达式之间的关系比如0 AND 1
,结合sins
一起理解,表达的意思是:该字段如果值是大于0且小于等于3时,计算该字段的表达式结果为truerp
表示字段与字段之间的关系OR
是或的关系,AND
是与的关系,并且支持简单的表达式,比如: field1 AND (field2 OR field3)
templateId
中定义了,条件满足出发后生生的消息提内容模板。(暂未实现模板定制消息内容的功能)msg
中则是消息体中的 msg
字段中的内容,其中双花括号{{}}
中可以填写需要显示的字段的值,比如msg的值是我想看看uncap的值,值为:{{uncap}}
,那么出发告警后,得到的msg中的内容为我想看看uncap的值,值为:1
serverity
告警级别,包括Private
Information
Warnning
Averag
High
Critical
Disaster
includeIds
需要准守这条规则的设备IDexcludeIds
该组件,展示还不检查该字段multi_alert
表示是否需要重复发送告警消息,0
---不需要重复发送告警 非0
---需要重复发送告警举例
projectID
为10000
项目中的所有设备都遵循rule_name_1
中的处罚规则/registry/triggers/project/10000/rule_name_1
规则内容如上述的json,表示当 uncap 的值 或则 xValue的值 大于0且小于等于3,时会触发该条规则,并发送事件消息。
操作规则
$ etcdctl put /registry/triggers/project/10000/rule_name_1 '{}'
$ etcdctl del /registry/triggers/project/10000/rule_name_1
消息模板(暂未实现)
iot-trigger/template/templateId-1 = "field-1,field-2,fielt3"
发送到kafka中的消息
{
"rule": <PlateformBuild>/<ruleName>,
"type": "DeviceAlert/DeviceRecovery",
"time": 1578965231254,
"serverity": "",
"expersion": '{}',
"producer": "iot-trigger",
"data": '{"device": "", status": ""}',
"msg":"xxxxxxxxxxxx"
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。