
lfedge/ekuiper获取帮助:
官方网站
GitHub 仓库
文档
提交问题: [***]
支持的架构
amd64、arm64v8、arm32v7、i386
支持的 Docker 版本: 最新版本
LF Edge eKuiper 是一款轻量级物联网数据分析与流处理引擎,运行于资源受限的边缘设备。其主要目标是在边缘侧提供类似 Apache Flink 的流处理框架。eKuiper 的 规则引擎 允许用户通过 SQL 或图形化(类似 Node-RED)规则,在几分钟内创建物联网边缘分析应用。
!eKuiper 架构图
应用场景
可运行于多种物联网边缘场景,例如:
在边缘侧进行 eKuiper 处理可显著降低系统响应延迟、节省网络带宽和存储成本,并提升系统安全性。
特性
轻量级
跨平台
数据分析支持
高度可扩展
支持通过 Golang 或 Python 扩展 Source(数据源)、Functions(函数)和 Sink(数据目标):
管理能力
与 EMQX 产品集成 与 EMQX、Neuron 和 NanoMQ 无缝集成,提供从工业物联网、车联网等场景的端到端解决方案
在本 Docker 镜像下执行命令:
shelldocker run -d -v `pwd`:$somewhere lfedge/ekuiper:$tag $somecommand
示例:
shelldocker run -p 9081:9081 -d --name ekuiper -e MQTT_SOURCE__DEFAULT__SERVER="$MQTT_BROKER_ADDRESS" lfedge/ekuiper:$tag
注意:在 v1.5.0 版本前,MQTT 服务器属性为数组类型。详情请查看 迁移指南。
将 eKuiper 数据源设置为 MQTT 服务器。本示例使用公共 MQTT 测试服务器 tcp://broker.emqx.io:1883(由 EMQ 提供)。
shell
docker run -p 9081:9081 -d --name ekuiper -e MQTT_SOURCE__DEFAULT__SERVER="tcp://broker.emqx.io:1883" lfedge/ekuiper:$tag
2. 创建流 — 流定义流数据的 schema,类似数据库中的表定义。假设温度和湿度数据发送至 `broker.emqx.io`,并将在本地运行的 eKuiper 容器中处理。以下步骤创建名为 `demo` 的流,数据发送至 `devices/device_001/messages` 主题(`device_001` 可替换为其他设备,如 `device_002`,所有设备数据均由 `demo` 流订阅处理)。 ```shell # 在主机执行 docker exec -it ekuiper /bin/sh # 在容器内执行 bin/kuiper create stream demo '(temperature float, humidity bigint) WITH (FORMAT="JSON", DATASOURCE="devices/+/messages")' Connecting to 127.0.0.1:20498... Stream demo is created. bin/kuiper query Connecting to 127.0.0.1:20498... kuiper > select * from demo where temperature > 30; Query was submit successfully.
使用 MQTT 客户端(如 MQTT X)向 broker.emqx.io 的 devices/device_001/messages 主题发布传感器数据:
shell
mqttx pub -h broker.emqx.io -m '{"temperature": 40, "humidity" : 20}' -t devices/device_001/messages
4. 若一切正常,在 `bin/kuiper query` 窗口将显示消息。尝试发布温度低于 30 的消息,将被 SQL 的 WHERE 条件过滤:
kuiper > select * from demo WHERE temperature > 30; [{"temperature": 40, "humidity" : 20}]
若有问题,请查看 `log/stream.log` 日志。 5. 按 `ctrl + c` 停止 `bin/kuiper query` 命令控制台以结束测试。 您也可参考 eKuiper 控制台文档 获得更好的使用体验。 如需探索 eKuiper 更多功能,可参考以下边缘侧应用及与 AWS/Azure IoT 云平台集成方案: - 轻量级边缘计算 eKuiper 与 Azure IoT Hub 集成方案 - 轻量级边缘计算 eKuiper 与 AWS IoT Hub 集成方案 # 镜像变体 `lfedge/ekuiper` 镜像提供多种版本,适用于不同场景: ## `lfedge/ekuiper:<tag>` 默认镜像。若不确定需求,建议使用此版本。自 1.7.1 版本起,它是 `lfedge/ekuiper:<tag>-alpine`(见下文)的别名;此前版本等同于 `lfedge/ekuiper:<tag>-dev` 镜像。 ## `lfedge/ekuiper:<tag>-alpine` 基于 Alpine Linux(`alpine` 官方镜像)构建,体积更小(约 5MB 基础镜像)。适合对镜像大小有严格要求的场景。注意其使用 musl libc 而非 glibc,部分软件可能存在兼容性问题,但多数场景下可安全使用。如需额外工具,需在 Dockerfile 中自行安装(参考 `alpine` 镜像说明)。 ## `lfedge/ekuiper:<tag>-slim` 基于 Debian 构建,仅包含运行 eKuiper 所需的最小依赖包。与开发镜像(`lfedge/ekuiper:<tag>-dev`)的区别是不含 Golang 开发环境,推荐用于部署已编译的自定义插件。 ## `lfedge/ekuiper:<tag>-slim-python` 在 slim 版本基础上增加 Python 环境,推荐用于运行 eKuiper Python 可移植插件。 ## `lfedge/ekuiper:<tag>-dev` 开发环境镜像,基于 Debian 并包含 Golang 构建环境。适合临时容器(挂载源码编译插件、运行应用)或作为基础镜像构建其他镜像。注意此镜像体积最大,通常用于开发场景。 注意:此镜像等效于 0.3.x 版本中的 `x.x.x-dev` 开发镜像。 # 配置 eKuiper 支持通过环境变量修改容器内配置文件。环境变量需按指定格式设置,例如:
KUIPER__BASIC__DEBUG => 对应 etc/kuiper.yaml 中的 basic.debug MQTT_SOURCE__DEMO_CONF__QOS => 对应 etc/mqtt_source.yaml 中的 demo_conf.qos
环境变量通过两个下划线(__)分隔,第一部分匹配配置文件名,其余部分匹配配置项的层级结构。 # 迁移指南 自 1.5.0 版本起,eKuiper 将 MQTT 源代理配置从 `servers`(数组)改为 `server`(单地址),用户仅能配置一个 MQTT 代理。若使用旧版本并通过环境变量配置 MQTT 源地址,需将环境变量从 `MQTT_SOURCE__DEFAULT__SERVERS=[tcp://broker.emqx.io:1883]` 修改为 `MQTT_SOURCE__DEFAULT__SERVER="tcp://broker.emqx.io:1883"`。 # 关于 EdgeX `etc/sources/edgex.yaml` 的配置内容与 EdgeX core data 服务的 `cmd/core-data/res/configuration.toml` 相关,例如:
[MessageQueue] Protocol = 'tcp' Host = '*' Port = 5563 Type = 'zero' Topic = 'events'
[Service] ... Host = 'localhost' Port = 48080 ...
如需配置更多选项,可将配置文件挂载到 eKuiper 容器:
docker run --name ekuiper -v /path/to/mqtt_sources.yaml:/kuiper/etc/mqtt_sources.yaml -v /path/to/edgex.yaml:/kuiper/etc/sources/edgex.yaml lfedge/ekuiper:$tag
# 更多信息 如需了解项目详情,请参考 GitHub 项目文档。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务