ToolJet 集成 InfluxDB 数据源:从连接配置到 Flux 查询与 Bucket 管理的完整指南
2026/9/12 21:29:07 网站建设 项目流程

ToolJet 集成 InfluxDB 数据源:从连接配置到 Flux 查询与 Bucket 管理的完整指南

【免费下载链接】ToolJetOpen-source foundation of ToolJet AI - the enterprise app generation platform for internal tools, dashboards, business applications, workflows and AI agents. Build visually, from a prompt, or from Claude Code, Codex and Cursor over MCP 🚀项目地址: https://gitcode.com/GitHub_Trending/to/ToolJet

InfluxDB 是专为时序数据(time-series data)设计的开源数据库,广泛用于监控指标、传感器数据、IoT 设备与业务分析等场景。ToolJet 通过内置的 InfluxDB 数据源插件(plugins/packages/influxdb/lib/index.ts),让开发者可以在可视化应用中以 Token 认证方式连接 InfluxDB 2.x 的 HTTP API,直接执行 Flux 查询、写入时序数据,并完成 Bucket 的全生命周期管理。读完本文,你将掌握如何在 ToolJet 中配置 InfluxDB 连接、使用 11 种内置操作读写与治理数据,并理解这些操作在底层如何映射到 InfluxDB v2 REST API。

连接配置

ToolJet 通过 InfluxDB 的 v2 HTTP API 进行通信,认证方案为API Token(Token authentication scheme)。创建数据源时需要填写以下四项:

配置项说明默认值
API Token访问 InfluxDB API 所需的令牌,创建后在表单中以密码框呈现,存储时会被加密(见 manifest.json 中api_token"encrypted": true
HostInfluxDB 服务所在主机地址
PortInfluxDB HTTP API 端口8086
Protocol连接协议,下拉选择HTTPHTTPShttp

API Token 的生成方式请参考 InfluxDB 官方文档(在 ToolJet 连接表单的帮助文本中同样提供了该链接)。Token 需要具备目标 Bucket 的读写权限,建议按最小权限原则创建专用 Token。

从源码角度看,这四个配置项被定义为SourceOptions(lib/types.ts),连接建立后,插件会据此拼接出完整的 API 基地址${protocol}://${host}:${port},并将 Token 以Authorization: Token <api_key>请求头携带(lib/index.ts)。

ToolJet 还提供连接测试功能:点击测试后,插件会向${protocol}://${host}:${port}/influxdb/cloud/api//ping发起 GET 请求,请求成功即判定连接可用(lib/index.ts)。

支持的查询操作总览

InfluxDB 数据源在查询编辑器的 Operation 下拉中提供 11 种操作(定义见 operations.json):

操作作用底层 API
Write data向 Bucket 写入时序数据POST /api/v2/write
Query data执行 Flux 查询并读取数据POST /api/v2/query
Generate an Abstract Syntax Tree (AST) from a query解析 Flux 查询并生成查询规范(AST)POST /api/v2/query/ast
Retrieve query suggestions获取 Flux 函数建议列表GET /api/v2/query/suggestions
Retrieve query suggestions for a branching suggestion获取某个分支建议的 Flux 函数建议GET /api/v2/query/suggestions/{name}
Analyze a Flux query分析 Flux 查询,返回错误与函数调用信息POST /api/v2/query/analyze
List buckets列出数据库中所有 BucketGET /api/v2/buckets
Create a bucket新建 BucketPOST /api/v2/buckets
Retrieve a bucket按 ID 查询单个 BucketGET /api/v2/buckets/{bucket_id}
Update a bucket更新 Bucket(如改名、调整保留策略)PATCH /api/v2/buckets/{bucket_id}
Delete a bucket删除 BucketDELETE /api/v2/buckets/{bucket_id}

下面按“数据读写 → 查询辅助 → Bucket 管理”三个层次逐项说明。

数据读写

Write Data(写入数据)

向指定 Bucket 写入一条或多条时序数据点,对应POST /api/v2/write

必填参数:

  • Bucket:目标 Bucket 名称
  • Organization name or ID:InfluxDB 组织名称或组织 ID
  • Data:要写入的数据,按 InfluxDB Line Protocol 文本格式书写

可选参数:

  • Precision:时间戳精度,如ns(纳秒)、us(微秒)、ms(毫秒)、s(秒),不填则使用 InfluxDB 默认精度

写入示例(Line Protocol 格式):

sensor_data,device=thermo-01 temperature=22.5,humidity=41.2 1694563200000000000

从源码看,Write 操作将 Bucket、Organization、Precision 拼入 URL 查询参数,请求体以text/plain类型原样发送(lib/index.ts),因此 Data 字段应直接填写符合 Line Protocol 规范的行文本。

Query Data(查询数据)

使用 Flux 脚本从 InfluxDB Bucket 中检索数据,对应POST /api/v2/query

必填参数:

  • Organization name or ID:组织名称或 ID
  • Flux query:完整的 Flux 查询脚本

示例 Flux 查询(查询最近 1 小时temperature测量值):

from(bucket: "sensor_data") |> range(start: -1h) |> filter(fn: (r) => r["_measurement"] == "temperature")

该操作在源码中通过Content-Type: application/vnd.flux发送 Flux 脚本本体,并将org作为查询参数附带(lib/index.ts),返回结果为 InfluxDB 的 CSV 文本响应,可直接绑定到表格、图表等组件上进行可视化。

查询辅助与解析

这组操作面向 Flux 脚本的编写辅助与调试,在 ToolJet 查询编辑器中均可直接调用。

Generate an Abstract Syntax Tree (AST) from a Query

对 Flux 查询进行词法与语法解析,生成结构化查询规范(Abstract Syntax Tree),对应POST /api/v2/query/ast

必填参数:

  • Query:Flux 查询脚本

示例:

from(bucket: "website_metrics") |> range(start: -7d) |> filter(fn: (r) => r["_measurement"] == "page_views") |> group(columns: ["url"]) |> sum(column: "_value") |> sort(columns: ["_value"], desc: true)

Retrieve Query Suggestions

获取 InfluxDB 提供的 Flux 函数建议列表(即 Flux 标准库中可用的函数名与简介),无参数,对应GET /api/v2/query/suggestions。返回结果可用于在编辑器中辅助提示可用的 Flux 函数。

Retrieve Query Suggestions for a Branching Suggestion

按函数名获取某个分支建议对应的 Flux 函数建议详情,对应GET /api/v2/query/suggestions/{name}

必填参数:

  • Name:分支建议的名称(即上一操作返回列表中的函数名)

Analyze a Flux Query

对 Flux 查询做静态分析,返回脚本中的语法错误、位置信息及调用的函数列表,对应POST /api/v2/query/analyze,适合在运行查询前先校验脚本。

必填参数:

  • Query:Flux 查询脚本

示例:

from(bucket: "sensor_data") |> range(start: -1d) |> filter(fn: (r) => r["_measurement"] == "humidity") |> mean(column: "_value")

Bucket 管理

Bucket 是 InfluxDB 中数据组织与保留策略的基本单元。ToolJet 提供从列查到增删改的完整管理能力,操作返回的响应体(JSON)会以data形式暴露给后续查询与组件使用。

List Buckets

列出数据库中的所有 Bucket,无参数,对应GET /api/v2/buckets

Create a Bucket

创建新的 Bucket,对应POST /api/v2/buckets

必填参数:

  • Query:JSON 请求体,包含 Bucket 名称、组织 ID 与保留规则

示例请求体:

POST http://localhost:8086/api/v2/buckets Content-Type: application/json Authorization: Token your_auth_token { "name": "new_bucket", "orgID": "your_org_id", "retentionRules": [ { "everySeconds": 3600 } ] }

其中retentionRules.everySeconds指定数据保留时长(秒),示例中3600表示数据保留 1 小时。

Retrieve a Bucket

按 Bucket ID 查询单个 Bucket 的详细信息,对应GET /api/v2/buckets/{bucket_id}

必填参数:

  • Bucket ID:目标 Bucket 的唯一标识

Update a Bucket

更新 Bucket 的名称或保留策略,对应PATCH /api/v2/buckets/{bucket_id}

必填参数:

  • Bucket ID:目标 Bucket 的唯一标识
  • Query:JSON 请求体,仅包含需要修改的字段

示例请求体(重命名并将保留时长改为 2 小时):

{ "name": "updated_bucket_name", "retentionRules": [ { "everySeconds": 7200 } ] }

Delete a Bucket

删除指定 Bucket(该操作不可恢复,Bucket 内数据将一并删除),对应DELETE /api/v2/buckets/{bucket_id}

必填参数:

  • Bucket ID:目标 Bucket 的唯一标识

底层实现:插件如何工作

InfluxDB 数据源以 ToolJet 插件体系中的独立包形式存在(plugins/packages/influxdb),核心执行逻辑集中在 lib/index.ts 的run方法中:

  • 认证方式:所有请求统一携带Authorization: Token <api_token>头,Token 通过数据源配置的api_token字段注入,存储时加密、传输时仅用于内存中的请求组装;
  • 操作分发:根据查询的operation字段走switch分支,每个分支对应一个 InfluxDB v2 REST 端点(见上文表格),其中query_datawrite使用application/vnd.fluxtext/plain内容类型分别发送 Flux 脚本与 Line Protocol 数据,其余 JSON 交互类操作统一使用application/json
  • 参数拼接orgbucketprecision等动态参数通过searchParams按需附加到 URL(仅当值非空时携带),避免产生无效查询串;
  • 响应解析:JSON 响应通过JSON5.parse解析(lib/index.ts),可容忍注释与宽松语法,而查询类的文本响应则直接透传原始 CSV 内容;
  • 错误处理:任何请求异常都会被捕获并包装为QueryError,在查询运行器中呈现错误信息,便于在构建应用时快速定位连接或脚本问题。

插件包同时提供 manifest.json(定义数据源表单字段与默认值)与 operations.json(定义 11 种操作的 UI 表单),这两份 schema 与运行时代码共同决定了你在 ToolJet 界面中看到的所有配置项与参数输入框。数据源暴露的变量包括isLoadingdatarawDatacustomTesting,方便在应用逻辑中监听查询状态与结果。

典型应用场景

将以上能力组合起来,可以在 ToolJet 中快速搭建时序数据应用,例如:

  • 监控看板:用 Query Data 拉取近 N 小时/天的指标(range(start: -1h)),绑定图表组件实时呈现温度、流量等时序曲线;
  • 数据采集入口:用 Write Data 接收表单或上游 Webhook 传来的传感器读数,按 Line Protocol 格式写入对应 Bucket;
  • 存储治理:用 List Buckets 概览所有 Bucket,配合 Create / Update 调整保留策略,或用 Delete 清理废弃 Bucket;
  • 查询调试:在把 Flux 脚本接入正式查询前,先用 Analyze a Flux Query 校验语法,用 AST 生成确认解析结果。

注意事项

  • 本文所述连接方式与操作均基于 InfluxDB 2.x 的 v2 API(默认端口 8086);若使用 1.x 版本,接口路径与认证机制不同,需要先完成版本升级或适配。
  • API Token 是唯一认证凭据,请勿在应用定义或查询中明文硬编码;ToolJet 会对其加密存储。
  • Delete a Bucket 为不可逆操作,建议在正式环境使用前先在测试环境验证 Bucket ID 与数据影响范围。
  • Write 与 Query 操作中的 Organization 参数既支持名称也支持 ID,二者由 InfluxDB 服务端解析,保持一致即可。

【免费下载链接】ToolJetOpen-source foundation of ToolJet AI - the enterprise app generation platform for internal tools, dashboards, business applications, workflows and AI agents. Build visually, from a prompt, or from Claude Code, Codex and Cursor over MCP 🚀项目地址: https://gitcode.com/GitHub_Trending/to/ToolJet

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询