InfluxDB

InfluxDB 是一个用于存储和分析时间序列数据的数据库,其强大的数据吞吐能力以及稳定的性能表现使其非常适合物联网领域。EMQX 目前支持通过数据桥接的方式连接不同版本的 InfluxDB Cloud、InfluxDB OSS 以及 InfluxDB Enterprise。

提示

EMQX 企业版功能。EMQX 企业版可以为您带来更全面的关键业务场景覆盖、更丰富的数据集成支持,更高的生产级可靠性保证以及 24/7 的全球技术支持,欢迎免费试用InfluxDB - 图1 (opens new window)

前置准备

功能清单

快速开始

安装 InfluxDB

  1. 通过 Docker 安装并启动 InfluxDB,详细步骤请参考 Install InfluxDBInfluxDB - 图3 (opens new window)
  1. # 启动一个 InfluxDB 容器
  2. docker run --name influxdb -p 8086:8086 influxdb:2.5.1
  1. 访问 http://localhost:8086InfluxDB - 图4 (opens new window) 打开 InfluxDB UI,设置用户名、密码、组织名称、Bucket 名称。

  2. 前往 InfluxDB UI Load Data -> API Token,按照 Create All-Access tokensInfluxDB - 图5 (opens new window) 指引创建 Token。

创建 InfluxDB 数据桥接

  1. 转到 Dashboard 数据集成 -> 数据桥接页面。

  2. 点击页面右上角的创建

  3. 数据桥接类型中选择 InfluxDB,点击下一步

  4. 输入数据桥接名称,要求是大小写英文字母和数字的组合。

  5. 根据情况选择 InfluxDB 版本,默认为 V2。

  6. 输入 InfluxDB 连接信息

    • 服务器地址填写 127.0.0.1:8086。如果是 InfluxDB Cloud 需要指定端口为 443,即填入 {url}:443 并启用 TLS 连接。
    • 按照安装 InfluxDB 步骤的设定完成 Token组织Bucket 设置。注:如选择 InfluxDB v1 版本,请完成数据库用户名密码的设定。
  7. 设定时间精度,默认为毫秒。

  8. 设置是否启用TLS。

  9. 定义数据格式为 JSON 或 Line Protocol。

    • 对于 JSON 格式,需设置数据的 MeasurementFieldsTimestampTags,键值均支持变量,可以使用行协议InfluxDB - 图6 (opens new window)进行设置。

    • 对于 Line Protocol 格式,请通过一段语句指定数据点的 Measurement、Fields、Timestamp 与 Tags,键值均支持变量,可按照行协议InfluxDB - 图7 (opens new window)进行设置。

提示

  1. 高级配置(可选),根据情况配置同步/异步模式,队列等参数,详细请参考配置参数

  2. 设置完成后,您可点击测试连接按钮进行验证。

  3. 点击创建按钮完成数据桥接创建。

至此您已经完成数据桥接创建流程,接下来将继续创建一条规则来指定需要写入的数据:

创建规则

  1. 转到 Dashboard 数据集成 -> 规则页面
  2. 点击页面右上角的创建
  3. 输入规则 ID my_rule,在 SQL 编辑器中输入规则,此处选择将 t/# 主题的 MQTT 消息存储至 InfluxDB,请确规则选择出来的字段(SELECT 部分)包含第 7 步中用到的变量,此处规则 SQL 如下:
  1. SELECT
  2. *
  3. FROM
  4. "t/#"
  1. 添加动作,在动作下拉框中选择 使用数据桥接转发 选项,选择先前创建好的 InfluxDB 数据桥接。
  2. 点击最下方创建按钮完成规则创建。

至此您已经完成整个创建过程,可以前往 数据集成 -> Flows 页面查看拓扑图,此时应当看到 t/# 主题的消息经过名为 my_rule 的规则处理,处理结果交由 InfluxDB 进行存储。

测试数据桥接与规则

使用 MQTTX 向 t/1 主题发布消息,此操作同时会触发上下线事件:

  1. mqttx pub -i emqx_c -t t/1 -m '{ "msg": "hello InfluxDB" }'

分别查看两个数据桥接运行统计,命中、发送成功次数均 +1。

前往 InfluxDB UI Data Explorer 查看数据是否已经写入 InfluxDB 中。