从 eKuiper 0.9.1 版本开始,每发布一个 eKuiper 新版本,会随之发布对应版本的管理控制台。本文以一个实际例子来说明如何使用管理控制台对 eKuiper 节点进行操作与管理。文中将订阅来自于 MQTT 服务器的数据,通过 eKuiper 写好的规则,经过处理后发送到指定的文件中,演示说明如下:
tcp://broker.emqx.io:1883
,devices/device_001/messages
,{"temperature": 40, "humidity" : 20}
在实际场景中,eKuiper 通常安装在边缘端,而 eKuiper manager 安装在网关或云端,负责管理一个或多个边缘端的 eKuiper。这种情况下,两者部署在不同的物理机器上,需要分开部署。本章将采用此种方式进行部署。 在测试场景种,用户可采用 docker compose 的方式一键安装部署,详情请参考使用管理控制台运行。
ekuiper:1.8-slim
镜像(ekuiper:1.8-alpine
镜像比较小,安装比较方便,但是由于缺少一些必要的库文件,插件无法正常运行;而 ekuiper:1.8-dev
镜像是开发版本的镜像,适合于开发阶段使用)。 docker pull lfedge/ekuiper:1.8-slim
-e
选项设置地址)。如果您想通过主机访问 eKuiper 实例,可以通过在启动容器的时候加入 -p 9081:9081
参数来暴露 9081 端口。 # docker run -d --name kuiper -e MQTT_SOURCE__DEFAULT__SERVER="tcp://broker.emqx.io:1883" lfedge/ekuiper:1.8-slim
在运行容器时通过 -e
选项设置了 MQTT 服务器地址,数据写到了 MQTT 源配置文件中,通过以下命令可以查看:
# docker exec -it kuiper sh
# cat etc/mqtt_source.yaml
该文件的部分输出如下所示,server
的值被设置为 tcp://broker.emqx.io:1883
。
default:
concurrency: 1
qos: 1
server: tcp://broker.emqx.io:1883
sharedSubscription: true
....
1.8-ief
为华为 IEF 用户专用镜像,本例使用1.8
镜像。 docker pull emqx/ekuiper-manager:1.8
docker run --name kuiperManager -d -p 9082:9082 -e DEFAULT_EKUIPER_ENDPOINT="http://$your_ekuiper_host:9081" emqx/ekuiper-manager:1.8
登录时需要提供 kuiper-manager 的地址,用户名、密码。如下图所示:
地址:http://$yourhost:9082
用户名:admin
密码:public
创建 eKuiper 服务时需要填写「服务类型」,「服务名称」和「端点 URL 」。
服务类型 : 选择 直接连接服务
(华为 IEF 服务
专用于华为用户)。
服务名称 : 自拟,本例为 example
。
端点URL:http://$IP:9081
,IP 获取命令如下:
docker inspect kuiper | grep IPAddress
创建 eKuiper 服务样例如下图所示,如果把端口暴露到了主机,那么也可以直接使用主机上的 9081 端口地址。
如下图,创建一个名为 demoStream
的流,
用于订阅地址为 tcp://broker.emqx.io:1883
的 MQTT 服务器消息
消息主题为 devices/device_001/messages
流结构体定义包含了以下两个字段。
用户也可以去掉「是否为带结构的流」来定义一个 schemaless 的数据源。
「流类型」可以不选择,不选的话为缺省的「mqtt」,或者如下图所示直接选择「mqtt」
「配置组」,与「流类型」类似,用户不选的话,使用缺省的「default」
「流格式」,与「流类型」类似,用户不选的话,使用缺省的「json」
如上所示用的是缺省的「default」配置组。用户也可以根据需求编写自己的配置,具体操作为,在创建流的页面中点击源配置
,跳转到配置页面,展开你需要的配置类型,点击加号创建源配置,弹出如下对话框。
如下图,创建一条名为 demoRule 的规则,将数据中 temperature > 30 的数据过滤出来。SQL 编辑器在用户写 SQL 的过程中可以给出提示,方便用户完成 SQL 的编写。
单击「添加」按钮,弹出对话框如下所示。输入结果存储的文件路径为 /kuiper/demoFile
。更多关于 file 目标的信息可以查看帮助文件。目标 file 处于 Beta
状态,不能作为实际生产环境使用。
创建规则后,如果一切正常,那么规则处于运行状态。
进入 eKuiper 容器创建文件:
# docker exec -it kuiper sh
# touch demoFile
# tail -f demoFile
使用 MQTT 客户端工具 mosquitto_pub
将传感器数据发送到 MQTT 服务器 tcp://broker.emqx.io:1883
的主题 devices/device_001/messages
中,命令如下。如一切正常,此时名为demoFile
的文件将收到数据:{"temperature": 40, "humidity" : 20}
。
# mosquitto_pub -h broker.emqx.io -m '{"temperature": 40, "humidity" : 20}' -t devices/device_001/messages
查看规则更多信息
如下图所示,选项中提供了三个按钮 ,从左到右依次为。读者可以点击进行试用。