文档文档

使用兼容 API 和客户端库写入数据

当您需要将现有的 InfluxDB v1 或 v2 写入工作负载迁移到 InfluxDB 3.x 时,请使用兼容性 API。/api/v2/write (v2 兼容) 和 /write (v1 兼容) HTTP API 端点与 InfluxDB 客户端库Telegraf 和第三方集成配合使用,以行协议数据形式将点写入 InfluxDB 3 Core。

为您的工作负载选择写入端点

创建新的写入工作负载时,请使用 InfluxDB HTTP API /api/v3/write_lp 端点客户端库

在引入现有的 v1 写入工作负载时,请使用 InfluxDB 3 Core HTTP API 的 /write 端点

在引入现有的 v2 写入工作负载时,请使用 InfluxDB 3 Core HTTP API 的 /api/v2/write 端点

对于 Telegraf,请使用 InfluxDB v1.x outputs.influxdb 或 v2.x outputs.influxdb_v2 输出插件。请参阅如何 使用 Telegraf 写入数据

兼容性 API 与原生 API 不同

请注意,兼容性 API 在以下方面与之前版本的 v1 和 v2 API 不同

  • 表(measurement)中的标签是*不可变的*
  • 一个表中的标签和字段不能具有相同的名称。

InfluxDB v2 兼容性

/api/v2/write InfluxDB v2 兼容性端点提供与能够写入 InfluxDB OSS v2.x 和 Cloud 2 (TSM) 数据的客户端的向后兼容性。

POST /api/v2/write?bucket=mydb&precision=ns

验证 v2 API 请求

InfluxDB 3 Core 要求每个 API 请求都使用令牌进行身份验证。

使用 Authorization: BearerAuthorization: Token 方案来验证 v2 API 写入请求

语法

Authorization: Bearer DATABASE_TOKEN
Authorization: Token DATABASE_TOKEN

示例

使用 Bearer 验证 v2 写入请求

curl -i "https://:8181/api/v2/write?bucket=
DATABASE_NAME
&precision=s"
\
--header "Authorization: Bearer
DATABASE_TOKEN
"
\
--header "Content-type: text/plain; charset=utf-8" \ --data-binary 'home,room=kitchen temp=72 1641024000'

使用 Token 验证 v2 写入请求

curl -i "https://:8181/api/v2/write?bucket=
DATABASE_NAME
&precision=s"
\
--header "Authorization: Token
DATABASE_TOKEN
"
\
--header "Content-type: text/plain; charset=utf-8" \ --data-binary 'home,room=kitchen temp=72 1641024000'

v2 API 写入参数

对于 InfluxDB 3 Core v2 API /api/v2/write 请求,请设置下表中列出的参数

参数允许在已忽略Value
bucket *查询字符串已接受数据库名称
precision查询字符串已接受时间戳精度
Content-EncodingHeader已接受gzip (压缩数据) 或 identity (未压缩)
AuthorizationHeader已接受Bearer DATABASE_TOKENToken DATABASE_TOKEN
* = 必需

时间戳精度

默认情况下,InfluxDB 3 Core 使用时间戳的数值大小来自动检测精度。为避免任何歧义,您可以指定数据中时间戳的精度。

在 v2 API /api/v2/write 请求中使用以下 precision 值之一

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

InfluxDB v1 兼容性

/write InfluxDB v1 兼容性端点提供与能够写入 InfluxDB v1.x 数据的客户端的向后兼容性。

POST /write?db=mydb&precision=ns

验证 v1 API 请求

InfluxDB 3 Core 要求每个 API 请求都使用令牌进行身份验证。使用 InfluxDB 3 中的 InfluxDB v1 兼容端点,您可以使用 InfluxDB 1.x 的用户名和密码方案中的数据库令牌,在 InfluxDB v2 的 Authorization: Token 方案中,或在 OAuth 的 Authorization: Bearer 方案中使用。

使用用户名和密码方案进行身份验证

对于 InfluxDB v1 兼容端点,您可以通过将令牌作为password凭据来使用 InfluxDB 1.x 的用户名和密码约定来验证数据库写入。在验证发往 v1 API /write 端点的请求时,InfluxDB 3 Core 会检查password (p) 值是否是授权的令牌。InfluxDB 3 Core 会忽略请求中的username (u) 参数。

使用以下身份验证方案之一,适用于支持 Basic 身份验证或查询参数的客户端

Basic 身份验证

使用带有 Basic 方案的 Authorization 标头来验证 v1 API /write 请求。在验证请求时,InfluxDB 3 Core 会检查解码凭据的password部分是否是授权的令牌。InfluxDB 3 Core 会忽略解码凭据的username部分。

语法
Authorization: Basic <base64-encoded [USERNAME]:DATABASE_TOKEN>

使用 base64 编码对[USERNAME]:DATABASE_TOKEN凭据进行编码,然后将编码后的字符串附加到Authorization: Basic标头。

示例

以下示例显示了如何将 cURL 与 Basic 身份验证方案一起使用

curl -i "https://:8181/write?db=
DATABASE_NAME
&precision=s"
\
--user "any:
DATABASE_TOKEN
"
\
--header "Content-type: text/plain; charset=utf-8" \ --data-binary 'home,room=kitchen temp=72 1641024000'
查询字符串身份验证

在 URL 中,传递 p 查询参数以验证 /write 请求。在验证请求时,InfluxDB 3 Core 会检查 p (password) 值是否是授权的令牌,并忽略 u (username) 参数。

语法
https://:8181/write/?u=any&p=DATABASE_TOKEN
示例

以下示例显示了如何将 cURL 与查询字符串身份验证一起使用

curl -i "https://:8181/write?db=
DATABASE_NAME
&precision=s&p=
DATABASE_TOKEN
"
\
--header "Content-type: text/plain; charset=utf-8" \ --data-binary 'home,room=kitchen temp=72 1641024000'

使用令牌方案进行身份验证

使用 Authorization: BearerAuthorization: Token 方案来传递令牌,用于验证 v1 API /write 请求。

在 InfluxDB 3 Core 中,BearerToken 是等效的。Token 方案用于 InfluxDB 2.x API。BearerOAuth 2.0 Framework定义。InfluxDB API 客户端对其中一种的支持可能有所不同。

语法
Authorization: Bearer DATABASE_TOKEN
Authorization: Token DATABASE_TOKEN
示例

使用 Bearer 验证 v1 写入请求

curl -i "https://:8181/write?db=
DATABASE_NAME
&precision=s"
\
--header "Authorization: Bearer
DATABASE_TOKEN
"
\
--header "Content-type: text/plain; charset=utf-8" \ --data-binary 'home,room=kitchen temp=72 1641024000'

使用 Token 验证 v1 写入请求

curl -i "https://:8181/write?db=
DATABASE_NAME
&precision=s"
\
--header "Authorization: Token
DATABASE_TOKEN
"
\
--header "Content-type: text/plain; charset=utf-8" \ --data-binary 'home,room=kitchen temp=72 1641024000'

v1 API 写入参数

对于 InfluxDB 3 Core v1 API /write 请求,请设置下表中列出的参数

参数允许在已忽略Value
consistency查询字符串已忽略N/A
db *查询字符串已接受数据库名称
precision查询字符串已接受时间戳精度
rp查询字符串已接受,但不推荐Retention policy
u查询字符串已忽略对于查询字符串身份验证,任意字符串
p查询字符串已接受对于查询字符串身份验证,一个令牌
Content-EncodingHeader已接受gzip (压缩数据) 或 identity (未压缩)
AuthorizationHeader已接受Bearer DATABASE_TOKEN, Token DATABASE_TOKEN, 或 Basic <base64 [USERNAME]:DATABASE_TOKEN>
* = 必需

时间戳精度

默认情况下,InfluxDB 3 Core 使用时间戳的数值大小来自动检测精度。为避免任何歧义,您可以指定数据中时间戳的精度。

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

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

客户端库示例

使用特定于语言的客户端库与您的自定义代码一起将数据写入 InfluxDB 3 Core。

v1 客户端库

v1 客户端库将数据以行协议语法发送到 v1 API /write 端点。

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

const Influx = require('influx')

// Instantiate a client for writing to InfluxDB 3 Core v1 API
const client = new Influx.InfluxDB({
  host: 'localhost:8181',
  port: 443,
  protocol: 'https',
  database: '
DATABASE_NAME
'
,
username: 'ignored', password: '
DATABASE_TOKEN
'
})

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

from influxdb import InfluxDBClient

# Instantiate a client for writing to InfluxDB 3 Core v1 API
client = InfluxDBClient(
  host='localhost:8181',
  ssl=True,
  database='
DATABASE_NAME
'
,
username='', password='
DATABASE_TOKEN
'
,
headers={'Content-Type': 'text/plain; charset=utf-8'} )

v2 客户端库

v2 客户端库将数据以行协议语法发送到 v2 API /api/v2/write 端点。

有关使用 v2 客户端库的更多信息,请参阅v2 客户端库

Telegraf 配置

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

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

参数已忽略Value
database已接受数据库名称
retention_policy已接受,但不推荐Duration
username已忽略String or empty
password已接受token
content_encoding已接受gzip (压缩数据) 或 identity (未压缩)
skip_database_creation已忽略N/A (请参阅如何创建数据库)

要配置 v1.x 输出插件以写入 InfluxDB 3 Core,请在您的 telegraf.conf 文件中添加以下 outputs.influxdb 配置

[[outputs.influxdb]]
  urls = ["https://:8181"]
  database = "
DATABASE_NAME
"
skip_database_creation = true retention_policy = "" username = "ignored" password = "
DATABASE_TOKEN
"
content_encoding = "gzip"

替换以下配置值

  • DATABASE_NAME:要写入的数据库的名称
  • DATABASE_TOKEN:您的 InfluxDB 3 Core 令牌

此页面是否有帮助?

感谢您的反馈!


InfluxDB 3.8 新特性

InfluxDB 3.8 和 InfluxDB 3 Explorer 1.6 的主要增强功能。

查看博客文章

InfluxDB 3.8 现已适用于 Core 和 Enterprise 版本,同时发布了 InfluxDB 3 Explorer UI 的 1.6 版本。本次发布着重于操作成熟度,以及如何更轻松地部署、管理和可靠地运行 InfluxDB。

更多信息,请查看

InfluxDB Docker 的 latest 标签将指向 InfluxDB 3 Core

在 **2026 年 2 月 3 日**,InfluxDB Docker 镜像的 latest 标签将指向 InfluxDB 3 Core。为避免意外升级,请在您的 Docker 部署中使用特定的版本标签。

如果使用 Docker 来安装和运行 InfluxDB,latest 标签将指向 InfluxDB 3 Core。为避免意外升级,请在您的 Docker 部署中使用特定的版本标签。例如,如果使用 Docker 运行 InfluxDB v2,请将 latest 版本标签替换为 Docker pull 命令中的特定版本标签 — 例如

docker pull influxdb:2