创建 InfluxDB 规则
创建 InfluxDB 规则
- 搭建 InfluxDB 数据库环境,以 MacOS X 为例:
$ docker pull influxdb
$ git clone -b v1.0.0 https://github.com/palkan/influx_udp.git
$ cd influx_udp
$ docker run --name=influxdb --rm -d -p 8086:8086 -p 8089:8089/udp -v ${PWD}/files/influxdb.conf:/etc/influxdb/influxdb.conf:ro -e INFLUXDB_DB=db influxdb:latest
- 创建规则:
打开 emqx dashboard
(opens new window) ,选择左侧的 “规则” 选项卡。
选择触发事件 “消息发布”,然后填写规则 SQL:
3.4.0 以及更老版本:
``` SELECT payload.host as host, payload.location as location, payload.internal as internal, payload.external as external FROM "message.publish"
>
> 3.4.1 以及以后版本:
>
> ```
SELECT
json_decode(payload) as p,
p.host as host,
p.location as location,
p.internal as internal,
p.external as external
FROM
"message.publish"
- 关联动作:
在 “响应动作” 界面选择 “添加”,然后在 “动作” 下拉框里选择 “保存数据到 InfluxDB”。
![]()
- 填写动作参数:
“保存数据到 InfluxDB” 动作需要六个参数:
1). Measurement。指定写入到 InfluxDB 的 data point 的 measurement。
2). Field Keys。指定写入到 InfluxDB 的 data point 的 fields 的值从哪里获取。
3). Tags Keys。指定写入到 InfluxDB 的 data point 的 tags 的值从哪里获取。
4). Timestamp Key。指定写入到 InfluxDB 的 data point 的 timestamp 的值从哪里获取。
5). 设置时间戳。未指定 Timestamp Key 时是否自动生成。
6). 关联资源。现在资源下拉框为空,可以点击右上角的 “新建资源” 来创建一个 InfluxDB 资源:
![]()
选择 “InfluxDB 资源”:
![]()
- 填写资源配置:
本示例中所有配置保持默认值即可,点击 “测试连接” 按钮,确保连接测试成功。
最后点击 “新建” 按钮。
![]()
- 返回响应动作界面,点击 “确认”。
- 返回规则创建界面,点击 “新建”。
- 规则已经创建完成,现在发一条消息:
Topic: “t/1”
QoS: 0
Retained: false
Payload: “{“host”:”serverA”,”location”:”roomA”,”internal”:25,”external”:37}”
然后检查 InfluxDB,新的 data point 是否添加成功:
``` $ docker exec -it influxdb influx
use db Using database db select * from "temperature" name: temperature time external host internal location ---- -------- ---- -------- -------- 1561535778444457348 35 serverA 25 roomA ```
在规则列表里,可以看到刚才创建的规则的命中次数已经增加了 1:
(opens new window)