Documentation

使用 InfluxDB v1 HTTP 写入 API

使用 InfluxDB v1 HTTP API /write 端点和 InfluxQL 来写入存储在 InfluxDB Cloud Serverless 中的数据。/write 端点为您迁移到 InfluxDB 3 的 InfluxDB 1.x 工作负载提供了兼容性。

v1写入和查询API需要映射数据库和保留策略到桶

将数据库和保留策略映射到存储桶

v1 写入和查询 API 需要将映射数据库和保留策略与存储桶关联。

InfluxDB 可以 自动生成一个存储桶和 DBRP 映射 以用于写入请求,或者您可以在写入之前 创建一个存储桶和 DBRP

自动生成一个桶和DBRP映射

要让InfluxDB自动生成一个桶和一个相关的DBRP映射,在将数据写入v1 /write端点时传递以下参数:

如果不存在名为 DATABASE_NAME/RETENTION_POLICY_NAME 的桶,InfluxDB 会在将数据写入桶之前创建一个桶和一个 DBRP。

要了解更多关于DBRP映射的信息,请参阅v1 API兼容性指南

创建一个存储桶和DBRP映射

要为一个桶创建一个DBRP:

  1. 如果它还不存在,请创建要写入的存储桶
  2. 查找要写入的存储桶的 ID
  3. 创建一个 DBRP,它将数据库名称和保留策略名称映射到前一步的桶 ID。

如果您的 /write 请求中的 db=DATABASE_NAMErp=RETENTION_POLICY 参数映射到一个现有的 DBRP,InfluxDB 会写入映射的桶。

写入 v1 HTTP /write 端点

POST https://cloud2.influxdata.com/write

参数

对于 InfluxDB Cloud 无服务器 v1 API /write 请求,设置如下表所示的参数:

参数允许在被忽略
consistency查询字符串忽略不适用
db *查询字符串被尊重的数据库(请参阅如何 将数据库和保留策略映射到桶
precision查询字符串已尊重时间戳精度
rp查询字符串尊敬的保留策略(查看如何 将数据库和保留策略映射到存储桶
Authorization 头或者 up令牌
* = Required

时间戳精度

在 v1 API /write 请求中使用以下 precision 值之一:

  • ns: 纳秒
  • us: 微秒
  • ms: 毫秒
  • s: 秒
  • m: 分钟
  • h: 小时

数据

在请求体中,包含您想要写入桶的 行协议 数据。

授权

要授权对现有存储桶的写入,请包含一个具有写入权限的 token。使用 Token 身份验证 或 v1 兼容的 用户名和密码身份验证 在请求中包含一个令牌。

为了使InfluxDB自动生成桶和DBRP,您必须使用一个token,例如一个完全访问令牌,该令牌具有对桶和DBRP的写入权限。

用于向 v1 API 进行写入的工具

当使用v1 API及相关工具时,在请求参数中传递DBRP映射的数据库名称和保留政策名称。

以下工具可与 InfluxDB Cloud Serverless /write 端点一起使用:

Telegraf

如果您有使用Telegraf的现有v1工作负载,您可以使用InfluxDB v1.x influxdb Telegraf输出插件来写入数据。

查看如何 使用 Telegraf 和 v2 API 来处理不再使用 v1 API 的新工作负载。

下表显示了 outputs.influxdb 插件参数和用于写入 InfluxDB Cloud Serverless v1 API 的值:

参数被忽略
database荣誉桶名称
retention_policy已遵循持续时间
username忽略字符串或空
password尊敬的API token 具有写入桶的权限
content_encoding尊敬的gzip(压缩数据)或 identity(未压缩)
skip_database_creation被忽略不适用(查看如何创建一个桶

要配置 v1.x 输出插件以写入 InfluxDB Cloud Serverless,请在你的 telegraf.conf 文件中添加以下 outputs.influxdb 配置:

[[outputs.influxdb]]
  urls = ["https://cloud2.influxdata.com"]
  database = "DATABASE_NAME"
  skip_database_creation = true
  retention_policy = "
RETENTION_POLICY
"
username = "ignored" password = "
API_TOKEN
"
content_encoding = "gzip

替换以下内容:

  • DATABASE_NAME: 数据库
  • RETENTION_POLICY: 保留策略 retention policy
  • API_TOKEN: 一个token,具有对映射存储桶的足够权限
其他 Telegraf 配置选项

influx_uint_support: 在 InfluxDB 3 中支持。

有关更多插件选项,请参见 influxdb 在 GitHub 上。

交互式客户端

要通过命令行交互式测试 InfluxDB v1 API 写入,可以使用常见的 HTTP 客户端,如 cURL 和 Postman。

对于生产用例,使用诸如 客户端库 的工具来为您构建行协议并提供批量写入选项。

curl -i "https://cloud2.influxdata.com/write?db=
DATABASE_NAME
&rp=
RETENTION_POLICY
&precision=s"
\
--header "Authorization: Token
API_TOKEN
"
\
--header "Content-type: text/plain; charset=utf-8" \ --data-binary 'home,room=kitchen temp=72 1463683075'
curl -i "https://cloud2.influxdata.com/write?db=
DATABASE_NAME
&rp=
RETENTION_POLICY
&precision=s"
\
-user "ignored":"
API_TOKEN
"
\
--header "Content-type: text/plain; charset=utf-8" \ --data-binary 'home,room=kitchen temp=72 1463683075'
curl -i "https://cloud2.influxdata.com/write?db=
DATABASE_NAME
&rp=
RETENTION_POLICY
&precision=s"
\
--header "Content-type: text/plain; charset=utf-8" \ --data-urlencode "u=ignored" \ --data-urlencode "p=DATABASE_TOKEN" \ --data-binary 'home,room=kitchen temp=72 1463683075'

替换以下内容:

  • DATABASE_NAME: 数据库 database
  • RETENTION_POLICY: 保留策略 retention policy
  • API_TOKEN: 一个具有足够权限的令牌,用于映射的存储桶

v1 influx 命令行界面(不支持)

不要在 InfluxDB Cloud Serverless 中使用 v1 influx CLI。虽然它可能偶然有效,但并不被正式支持。

客户端库

使用特定语言的 v1 客户端库 和您的自定义代码将数据写入 InfluxDB。 v1 客户端库以 行协议 语法将数据发送到 v1 API /write 端点。

以下示例展示了如何配置 v1 客户端库以写入 InfluxDB Cloud Serverless:

使用node-influx JavaScript客户端库创建一个v1 API客户端:

const Influx = require('influx')

// Instantiate a client for writing to InfluxDB Cloud Serverless v1 API
const client = new Influx.InfluxDB({
  host: 'cloud2.influxdata.com',
  port: 443,
  protocol: 'https'
  database: '
BUCKET_NAME
'
,
username: 'ignored', password: '
API_TOKEN
'
}) // When calling write or query functions, specify the retention policy name in options.

使用influxdb-python Python客户端库创建v1 API客户端:

from influxdb import InfluxDBClient

# Instantiate a client for writing to InfluxDB Cloud Serverless v1 API
client = InfluxDBClient(
  host='cloud2.influxdata.com',
  ssl=True,
  database='
DATABASE_NAME
'
,
username='', password='
API_TOKEN
'
headers={'Content-Type': 'text/plain; charset=utf-8'} ) # When calling write or query functions, specify the retention policy name in options.

替换以下内容:

  • DATABASE_NAME: 数据库
  • RETENTION_POLICY: 保留策略
  • API_TOKEN: 一个具有足够权限的令牌,用于指定的存储桶


Flux的未来

Flux 正在进入维护模式。您可以像现在一样继续使用它,而无需对您的代码进行任何更改。

阅读更多

InfluxDB 3 开源版本现已公开Alpha测试

InfluxDB 3 Open Source is now available for alpha testing, licensed under MIT or Apache 2 licensing.

我们将发布两个产品作为测试版的一部分。

InfluxDB 3 核心,是我们新的开源产品。 它是一个用于时间序列和事件数据的实时数据引擎。 InfluxDB 3 企业版是建立在核心基础之上的商业版本,增加了历史查询能力、读取副本、高可用性、可扩展性和细粒度安全性。

有关如何开始的更多信息,请查看:

InfluxDB 云端无服务器