ToolJet InfluxDB 数据源接入指南:连接配置与 11 种 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 是 ToolJet 内置支持的时间序列数据库数据源之一,开发者无需编写后端代码即可在低代码界面中完成"读数据、写数据、管理 bucket、分析 Flux 查询"等完整操作。本指南基于官方文档并结合仓库内 InfluxDB 插件源码(插件实现、数据源 schema、操作 schema),带你从零配置连接、逐项理解 11 种支持的操作及其背后的 HTTP API 调用逻辑,并给出可直接粘贴使用的示例。
数据源能力概述
ToolJet 通过官方维护的@tooljet-plugins/influxdb插件接入 InfluxDB,采用 InfluxDB 的Token 认证方案访问其 v2 API(连接配置本身与 InfluxDB v2.x 及启用 v2 兼容 API 的服务对齐)。连接建立后,你可以完成三类工作:
- 读写时间序列数据:向 bucket 写入数据点(Write)、用 Flux 脚本查询数据(Query data);
- 查询分析与辅助:生成 Flux 查询的 AST、检索查询建议、为分支建议取回建议、分析 Flux 查询;
- bucket 生命周期管理:列出、创建、检索、更新、删除 bucket。
插件包位于 plugins/packages/influxdb,其中 lib/index.ts 实现了全部查询逻辑,lib/manifest.json 定义了连接表单,lib/operations.json 定义了每种操作的参数面板。
一、建立连接:配置项与表单字段
在 ToolJet 的数据源列表中选中InfluxDB,会打开连接配置表单。根据 manifest.json,表单共 4 个字段,其中端口与协议的默认值已被内置:
| 配置项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| API token | 密码框 | 空 | InfluxDB API Token,用于认证。该字段在 manifest.json 中标记为encrypted: true,保存后会在服务端加密存储 |
| Host | 文本框 | 空 | InfluxDB 主机地址(不含协议,如localhost或influx.example.com) |
| Port | 文本框 | 8086 | InfluxDB HTTP 服务端口。InfluxDB 默认 API 端口即 8086 |
| Protocol | 下拉框 | http | 可选http/https,按是否启用 TLS 选择 |
对 InfluxDB 平台(InfluxDB Cloud / 托管服务)也可直接使用其提供的 host 与 token。Token 的生成方法参见官方 InfluxDB 文档(Token 需具备目标 bucket 与 Org 的相应读写权限)。
提示:在 ToolJet 官方文档中,API Token 生成指引见 https://docs.influxdata.com/influxdb/cloud/security/tokens/create-token/ ,接入前请先创建具有足够权限范围的 Token。
连接面板背后,testConnection的实现位于 lib/index.ts:它会向${protocol}://${host}:${port}/ping发起带Authorization: Token <token>的 GET 请求,请求成功即判定连接可用,失败则抛出错误提示你检查主机、端口与 Token。
二、支持的查询操作一览
配置好数据源后,新建查询并选择数据源即可看到操作下拉框。依据 operations.json,共有 11 种操作:
- Write(写入数据)
- Query data(查询数据)
- Generate an Abstract Syntax Tree (AST) from a query(由查询生成抽象语法树)
- Retrieve query suggestions(获取查询建议)
- Retrieve query suggestions for a branching suggestion(获取分支建议的查询建议)
- Analyze a Flux query(分析 Flux 查询)
- List buckets(列出 bucket)
- Create a bucket(创建 bucket)
- Retrieve a bucket(检索 bucket)
- Update a bucket(更新 bucket)
- Delete a bucket(删除 bucket)
每种操作在 lib/index.ts 中都有一个case分支,本质是把表单参数映射为一次对 InfluxDB v2 API 的 HTTP 请求。下文按"表单参数 → 源码实现 → API 语义"的顺序逐一展开。
三、写数据:Write
Write 操作向指定 bucket 写入数据点(line protocol 文本)。
必填参数:
- Bucket:目标 bucket 名称
- Organization name or ID:所属组织名称或 ID
- Data:遵循 InfluxDB line protocol 格式的数据内容
可选参数:
- Precision:写入时间戳的精度单位,可结合 InfluxDB 支持的精度取值使用
从源码看,Write 对应 lib/index.ts 中的 POST 请求:
- 请求地址:
${protocol}://${host}:${port}/api/v2/write - 请求头:
Content-Type: text/plain,携带Authorization: Token <api_token> - Query 参数:按表单值透传
bucket、org,若填了precision则一并附上(源码中...(precision && { precision })) - 请求体:表单中的 Data 原文
因此 Data 框中应直接填写 line protocol,例如:
sensor_data,location=room_a temperature=23.5,humidity=45.2 1700000000000000000数据成功写入后,插件将服务端响应体作为查询结果返回。
四、查数据:Query data
Query data 从 InfluxDB bucket 中检索数据,是日常使用频率最高的操作。
必填参数:
- Organization name or ID
- Flux query:Flux 脚本
源码实现位于 lib/index.ts,对应向/api/v2/query发起 POST 请求:
- 请求头使用
Content-Type: application/vnd.flux(Flux 原生内容类型),而非 JSON org通过 URL 查询参数透传- 请求体为 Flux 脚本原文
- 返回结果为响应 body(即 Flux 执行产生的CSV 格式文本,插件将其原样作为
data返回)
示例——读取最近 1 小时sensor_data中temperature测量的数据:
from(bucket: "sensor_data") |> range(start: -1h) |> filter(fn: (r) => r["_measurement"] == "temperature")得到结果后,可在查询下方通过转换器(Transformer)将 CSV 解析为结构化数组再绑定到表格组件展示。
五、Flux 查询的静态分析三件套
ToolJet 将 InfluxDB 面向查询智能化的三个静态分析接口完整暴露出来,适合在做自动补全、语法检查或查询可视化前预校验 Flux 脚本时使用。
5.1 Generate an Abstract Syntax Tree (AST) from a query
必填参数:Query(Flux 脚本)
该操作分析 Flux 查询并生成"查询规范"(AST)。对应源码 lib/index.ts:向/api/v2/query/ast发送 POST,请求体为 JSON 包裹的 Flux 脚本,返回 AST 结构。AST 便于你在程序化生成/校验 Flux 时获得机器的结构化表示。
示例——分析一条对站点指标按 URL 分组求和并排序的查询:
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)5.2 Analyze a Flux query
必填参数:Query(Flux 脚本)
该操作对 Flux 查询做语义分析(不同于 AST 的纯语法解析,analyze 会尝试完整解析脚本结构与其中引用的函数)。对应源码 lib/index.ts:向/api/v2/query/analyze发送 POST,请求体为 JSON 包裹的 Flux 脚本,返回分析结果。
示例——分析一条对传感器湿度求均值的查询:
from(bucket: "sensor_data") |> range(start: -1d) |> filter(fn: (r) => r["_measurement"] == "humidity") |> mean(column: "_value")5.3 Retrieve query suggestions(无参数)
该操作用于取回 Flux 查询建议,帮助在编辑器中做函数/关键字补全提示。对应源码 lib/index.ts:直接向/api/v2/query/suggestions发送 GET,无额外必填参数。
5.4 Retrieve query suggestions for a branching suggestion
必填参数:Name(分支建议的名称)
该操作按分支建议名称取回对应的查询建议,常配合上一操作使用。对应源码 lib/index.ts:向/api/v2/query/suggestions/${name}发送 GET,name会拼入 URL 路径。
六、Bucket 全生命周期管理
InfluxDB 中数据按 bucket(数据库 + 保留策略的集合)组织,ToolJet 把 bucket 管理的五个 REST 接口都做成了图形化操作。
6.1 List buckets(无参数)
列出数据库中全部 bucket。源码见 lib/index.ts:向/api/v2/buckets发送 GET,返回 bucket 列表 JSON。
6.2 Create a bucket
必填参数:Query(body,创建 bucket 的请求体 JSON)
对应源码 lib/index.ts:向/api/v2/buckets发送 POST,将表单中的 Query 内容解析为 JSON 作为请求体。从 operations 定义看,该字段名为 body,编辑器会以 JSON 文本形式录入。
示例——创建名为new_bucket、保留周期 3600 秒的 bucket:
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 } ] }(上例同时展示了对 InfluxDB v2 API 的原始请求形态;在 ToolJet 表单中只需把 JSON 体填入 Query 参数即可。)
6.3 Retrieve a bucket
必填参数:Bucket ID
对应源码 lib/index.ts:向/api/v2/buckets/${bucket_id}发送 GET。Bucket ID 可从 List buckets 的返回结果中获得。
6.4 Update a bucket
必填参数:
- Bucket ID
- Query(body,更新的字段 JSON)
对应源码 lib/index.ts:向/api/v2/buckets/${bucket_id}发送 PATCH,请求体为 Query 字段解析出的 JSON。
示例——把 bucket 重命名并把保留周期改为 7200 秒:
{ "name": "updated_bucket_name", "retentionRules": [ { "everySeconds": 7200 } ] }6.5 Delete a bucket
必填参数:Bucket ID
对应源码 lib/index.ts:向/api/v2/buckets/${bucket_id}发送 DELETE。删除是不可逆操作,请确认 Bucket ID 无误后再执行。
七、从源码看参数与实现细节
为了让表单与运行逻辑一致,还有几个值得注意的实现细节(均可在 lib/index.ts 中验证):
- 统一认证头:除 Write 与 Query data 外,所有操作都复用
authHeader辅助函数,即Authorization: Token <token>+Content-Type: application/json,与文档所述的 Token 认证方案完全一致。 - 表单字段与源码变量的映射:
SourceOptions(见 lib/types.ts)保存连接配置(api_token、host、port、protocol、database);QueryOptions(同文件 L8-L17)承载每次查询的操作名与参数(operation、org、bucket、bucket_id、precision、name、body、orgID)。表单中填写的字段最终被 destructure 进sourceOptions与queryOptions。 - 宽松 JSON 解析:请求体(如 Create/Update bucket、AST 的 body)在发送前会经过
parseJSON(lib/index.ts),该方法使用 JSON5 解析,因此你填写的 JSON 允许带注释、尾逗号等宽松写法,容错性更好。 - 条件拼参:Write 的
bucket/org/precision与 Query data 的org只在非空时才拼入 URL 查询参数,避免空值污染请求。 - 错误处理:整个调用包裹在
try/catch中,出错时抛出QueryError('Query could not be completed', ...),对应失败信息会回显在 ToolJet 查询结果面板,便于排查。 - Token 安全存储:连接配置中
api_token标记为加密存储(manifest.json),确保密钥不会明文落库。
八、接入后可以做什么
从 ToolJet 文档语境看,InfluxDB 数据源通常用于时序监控类内部应用。给出两个可直接落地的组合思路:
- 设备监控面板:用 Query data 按
range+filter拉取传感器最近数据,绑定到 Line/Chart 组件绘制实时曲线;配合定时刷新即可成为轻量级监控大屏。 - 写入与治理工作流:通过 Write 操作把前端采集到的事件写入 bucket;用 Create/Delete bucket 在管理页里为租户动态申请或回收数据桶,实现数据保留策略的自动化治理。
无论哪种场景,都可以把上面的 Flux 示例与操作参数说明作为起点,在 ToolJet 查询面板中逐步替换为你自己的 measurement、字段与 bucket 名称。更进一步,也可阅读仓库中的插件 manifest.json 与 operations.json,了解 ToolJet 数据源插件"连接 schema + 操作 schema + QueryService 实现"三段式结构,为扩展自己的数据源插件做参考。
【免费下载链接】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),仅供参考