InfluxDB 3 Clustered Docs Submit API issue

InfluxDB 3 Clustered API 服务

许可证: MIT

InfluxDB 3 Clustered 的 InfluxDB v2 HTTP API 为写入存储在 InfluxDB 3 Clustered 数据库中的数据提供了 v2 兼容的编程接口。

InfluxDB v2 HTTP API 允许您使用 /api/v2 端点来管理保留策略映射和写入存储在 InfluxDB 3 实例中的数据。

本文档从 InfluxDB OpenAPI 规范生成。

快速入门

请参阅入门指南教程,了解如何启动并运行身份验证令牌、写入数据库和查询数据。

InfluxDB API 客户端库和 Flight 客户端可用于将 InfluxDB API 与您的应用程序集成。

身份验证

使用以下方案之一对 InfluxDB API 进行身份验证

BasicAuthentication

Basic 身份验证方案

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

语法

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

替换以下内容

  • [USERNAME]:一个可选的字符串值(InfluxDB 3 Clustered 忽略)。
  • DATABASE_TOKEN:一个数据库令牌
  • 使用 base64 编码对 [USERNAME]:DATABASE_TOKEN 凭据进行编码,然后将编码后的字符串附加到 Authorization: Basic 标头。

示例

以下示例展示了如何将 cURL 与 Basic 身份验证方案和数据库令牌一起使用

#######################################
# Use Basic authentication with a database token
# to query the InfluxDB v1 HTTP API
#######################################
# Use the --user option with `--user username:DATABASE_TOKEN` syntax
#######################################

curl --get "http://cluster-id.a.influxdb.io/query" \
  --user "":"DATABASE_TOKEN" \
  --data-urlencode "db=DATABASE_NAME" \
  --data-urlencode "q=SELECT * FROM MEASUREMENT"

替换以下内容

  • DATABASE_NAME:您的 InfluxDB 3 Clustered 数据库
  • DATABASE_TOKEN:具有足够数据库权限的数据库令牌
安全方案类型HTTP
HTTP 授权方案basic

QuerystringAuthentication

将查询字符串身份验证方案与 InfluxDB 1.x API 参数一起使用,以通过查询字符串提供凭据。

查询字符串身份验证

在 URL 中,传递 p 查询参数以验证 /write/query 请求。在验证请求时,InfluxDB 3 Clustered 检查 ppassword)是否为授权的数据库令牌,并忽略 uusername)参数。

语法

https://cluster-id.a.influxdb.io/query/?[u=any]&p=DATABASE_TOKEN
https://cluster-id.a.influxdb.io/write/?[u=any]&p=DATABASE_TOKEN

示例

以下示例展示了如何将 cURL 与查询字符串身份验证和数据库令牌一起使用。

#######################################
# Use an InfluxDB 1.x compatible username and password
# to query the InfluxDB v1 HTTP API
#######################################
# Use authentication query parameters:
#   ?p=DATABASE_TOKEN
#######################################

curl --get "https://cluster-id.a.influxdb.io/query" \
  --data-urlencode "p=DATABASE_TOKEN" \
  --data-urlencode "db=DATABASE_NAME" \
  --data-urlencode "q=SELECT * FROM MEASUREMENT"

替换以下内容

  • DATABASE_NAME:您的 InfluxDB 3 Clustered 数据库
  • DATABASE_TOKEN:具有足够数据库权限的数据库令牌
安全方案类型API 密钥
查询参数名称u=&p=

BearerAuthentication

使用 OAuth Bearer 身份验证方案对 InfluxDB API 进行身份验证。

在您的 API 请求中,发送 Authorization 标头。对于标头值,提供单词 Bearer,后跟一个空格和一个数据库令牌。

语法

Authorization: Bearer INFLUX_TOKEN

示例

########################################################
# Use the Bearer token authentication scheme with /api/v2/write
# to write data.
########################################################

curl --request post "https://cluster-id.a.influxdb.io/api/v2/write?bucket=DATABASE_NAME&precision=s" \
  --header "Authorization: Bearer DATABASE_TOKEN" \
  --data-binary 'home,room=kitchen temp=72 1463683075'

有关示例和更多信息,请参阅以下内容

安全方案类型HTTP
HTTP 授权方案bearer
Bearer 格式"JWT"

TokenAuthentication

使用 Token 身份验证方案对 InfluxDB API 进行身份验证。

在您的 API 请求中,发送 Authorization 标头。对于标头值,提供单词 Token,后跟一个空格和一个数据库令牌。单词 Token 区分大小写。

语法

Authorization: Token INFLUX_API_TOKEN

示例

########################################################
# Use the Token authentication scheme with /api/v2/write
# to write data.
########################################################

curl --request post "https://cluster-id.a.influxdb.io/api/v2/write?bucket=DATABASE_NAME&precision=s" \
  --header "Authorization: Token DATABASE_TOKEN" \
  --data-binary 'home,room=kitchen temp=72 1463683075'
安全方案类型API 密钥
标头参数名称Authorization

标头

InfluxDB HTTP API 端点使用标准 HTTP 请求和响应标头。下表显示了许多 InfluxDB API 端点使用的常用标头。某些端点可能使用执行更特定于这些端点功能的其他标头——例如,POST /api/v2/write 端点接受 Content-Encoding 标头以指示应用于请求正文中行协议的压缩。

标头值类型描述
Acceptstring客户端可以理解的内容类型。
Authorizationstring授权方案和凭据。
Content-Lengthinteger发送到数据库的实体主体的大小(以字节为单位)。
Content-Typestring请求正文中的数据格式。

响应代码

InfluxDB HTTP API 端点使用标准 HTTP 状态代码来表示成功和失败响应。响应正文可能包含其他详细信息。有关特定操作响应的详细信息,请参阅该操作的响应响应示例

API 操作可能会返回以下 HTTP 状态代码

 代码 状态描述
200成功
204成功。无内容InfluxDB 不返回请求的数据。例如,成功的写入请求返回 204 状态代码,确认数据已写入且可查询。
400错误请求InfluxDB 无法解析请求,原因是参数不正确或语法错误。如果请求正文中的行协议格式错误。响应正文包含第一个格式错误的行,并指示预期内容。对于部分写入,还包括写入的点数和拒绝的点数。
401未授权可能表示以下情况之一
  • Authorization: Token 标头缺失或格式错误
  • API 令牌值从标头中缺失
  • API 令牌没有权限。有关令牌类型和权限的更多信息,请参阅管理令牌
404未找到未找到请求的资源。响应正文中的 message 提供有关请求资源的详细信息。
405方法不允许API 路径不支持请求中使用的 HTTP 方法——例如,您向仅允许 GET 的端点发送 POST 请求。
413请求实体过大请求负载超过大小限制。
422不可处理的实体请求数据无效。响应正文中的 codemessage 提供有关问题的详细信息。
429请求过多API 令牌暂时超过请求配额。Retry-After 标头描述了何时再次尝试请求。
500内部服务器错误
503服务不可用服务器暂时无法处理请求。Retry-After 标头描述了何时再次尝试请求。

系统信息端点

Ping

获取实例状态

检索实例的状态和 InfluxDB 版本。

使用此端点来监控 InfluxDB 实例的正常运行时间。响应返回 HTTP 204 状态代码,以告知您实例可用。

此端点不需要身份验证。

授权

响应

获取实例状态

返回实例的状态和 InfluxDB 版本。

使用此端点来监控 InfluxDB 实例的正常运行时间。响应返回 HTTP 204 状态代码,以告知您实例可用。

此端点不需要身份验证。

授权

响应

查询

查询存储在数据库中的数据。

  • HTTP 客户端可以使用 InfluxQL 查询 v1 /query 端点,并以 CSVJSON 格式检索数据。
  • /api/v2/query 端点无法查询 InfluxDB 3 Clustered。
  • Flight + gRPC 客户端可以使用 SQLInfluxQL 进行查询,并以 Arrow 格式检索数据。

使用 InfluxDB v1 HTTP API 进行查询

使用 InfluxQL 和 InfluxDB v1 请求和响应格式查询 InfluxDB。

query 参数
db
必需
string

要从中查询数据的数据库

epoch
string
枚举: "ns" "u" "µ" "ms" "s" "m" "h"

Unix 时间戳精度。将时间戳格式化为指定精度的unix(epoch)时间戳,而不是具有纳秒精度的RFC3339 时间戳

p
string

用于验证请求的 InfluxDB 1.x 密码。

q
必需
string

要执行的 InfluxQL 查询。要执行多个查询,请用分号 (;) 分隔查询。

rp
string

要从中查询数据的保留策略。有关更多信息,请参阅InfluxQL DBRP 命名约定

u
string

用于验证请求的 InfluxDB 1.x 用户名。

header 参数
Accept
string
默认: application/json
枚举: "application/json" "application/csv" "text/csv" "application/x-msgpack"

客户端可以理解的媒体类型。

注意:使用 application/csv,查询结果包括unix 时间戳,而不是RFC3339 时间戳

Accept-Encoding
string
默认: identity
枚举: "gzip" "identity"

客户端可以理解的内容编码(通常是压缩算法)。

Content-Type
string
值: "application/json"
Zap-Trace-Span
string
示例: baggage,[object Object],span_id,1,trace_id,1

OpenTracing span 上下文

响应

响应示例

内容类型
无示例

写入

使用 InfluxDB v1 或 v2 端点将时间序列数据写入数据库

写入数据

将数据写入数据库。

使用此端点以行协议格式向 InfluxDB 发送数据。

当您发送写入请求时,InfluxDB 会执行以下操作

  1. 验证请求
  2. 如果成功,则尝试摄取数据;否则为错误
  3. 如果成功,则以成功(HTTP 204 状态代码)响应,确认数据已写入且可查询;否则为错误

为确保 InfluxDB Cloud 按照您请求的顺序处理写入,请等待成功响应(HTTP 2xx 状态代码),然后再发送下一个请求。

query 参数
bucket
必需
string

数据库名称或 ID。InfluxDB 将批处理中的所有点写入指定的数据库。

org
必需
string

已忽略。组织名称或 ID。

InfluxDB 忽略此参数;使用指定的数据库令牌授权请求,并将数据写入指定的集群数据库。

orgID
string

已忽略。组织 ID。

InfluxDB 忽略此参数;使用指定的数据库令牌授权请求,并将数据写入指定的集群数据库。

precision
string (WritePrecision)
枚举: "ms" "s" "us" "ns"

行协议批处理中 unix 时间戳的精度。

header 参数
Accept
string
默认: application/json
值: "application/json"

客户端可以理解的内容类型。写入仅在失败时才返回响应正文——例如,由于格式问题或配额限制。

  • 格式和限制错误仅返回 application/json
  • 某些配额限制错误仅返回 text/html
Content-Encoding
string
默认: identity
枚举: "gzip" "identity"

应用于请求负载中行协议的压缩。要发送 gzip 负载,请传递 Content-Encoding: gzip 标头。

Content-Length
integer

发送到 InfluxDB 的实体主体的大小(以字节为单位)。如果长度大于 max body 配置选项,服务器将以状态代码 413 响应。

Content-Type
string
默认: text/plain; charset=utf-8
枚举: "text/plain" "text/plain; charset=utf-8"

请求正文中的数据格式。要发送行协议负载,请传递 Content-Type: text/plain; charset=utf-8

Zap-Trace-Span
string
示例: baggage,[object Object],span_id,1,trace_id,1

OpenTracing span 上下文

请求正文架构:text/plain

在请求正文中,以行协议格式提供数据。

要发送压缩数据,请执行以下操作

  1. 使用gzip压缩行协议数据。
  2. 在您的请求中,发送压缩数据和 Content-Encoding: gzip 标头。
string <byte>

响应

请求示例

内容类型
text/plain
airSensors,sensor_id=TLM0201 temperature=73.97038159354763,humidity=35.23103248356096,co=0.48445310567793615 1630424257000000000
airSensors,sensor_id=TLM0202 temperature=75.30007505999716,humidity=35.651929918691714,co=0.5141876544505826 1630424257000000000

响应示例

内容类型
application/json
{
  • "code": "invalid",
  • "message": "failed to parse line protocol: error writing line 2: Unable to insert iox::column_type::field::integer type into column temp with type iox::column_type::field::string"
}

使用 InfluxDB v1 HTTP API 写入数据

将数据写入数据库。

使用此 InfluxDB v1 兼容端点,使用 v1 API 参数和授权,以行协议格式向 InfluxDB 发送数据。

当您发送写入请求时,InfluxDB 会执行以下操作

  1. 验证请求
  2. 如果成功,则尝试摄取数据;否则为错误
  3. 如果成功,则以成功(HTTP 204 状态代码)响应,确认数据已写入且可查询;否则为错误

为确保 InfluxDB 按照您请求的顺序处理写入,请等待成功响应(HTTP 2xx 状态代码),然后再发送下一个请求。

query 参数
db
必需
string

要写入的数据库。如果不存在,InfluxDB 将创建一个具有默认 3 天保留策略的数据库。

p
string

用于验证请求的 InfluxDB 1.x 密码。

precision
string

写入精度。

rp
string

保留策略名称。

u
string

用于验证请求的 InfluxDB 1.x 用户名。

header 参数
Content-Encoding
string
默认: identity
枚举: "gzip" "identity"

存在时,其值向数据库指示压缩已应用于行协议主体。

Zap-Trace-Span
string
示例: baggage,[object Object],span_id,1,trace_id,1

OpenTracing span 上下文

请求正文架构:text/plain

行协议主体

string

响应

响应示例

内容类型
application/json
示例
{
  • "code": "invalid",
  • "line": 2,
  • "message": "no data written, errors encountered on line(s): error message for first rejected point</n> error message for second rejected point</n> error message for Nth rejected point (up to 100 rejected points)"
}