InfluxDB v2 HTTP API 为 InfluxDB 集群版提供了一个与 v2 兼容的编程接口,用于写入存储在 InfluxDB 集群版数据库中的数据。
InfluxDB v2 HTTP API 允许您使用 /api/v2
端点来管理保留策略映射以及写入存储在 InfluxDB v3 实例中的数据。
本文档是根据 InfluxDB OpenAPI 规范 生成的。
请参阅 入门教程,了解如何使用令牌进行身份验证、写入数据库和查询数据。
InfluxDB API 客户端库和 Flight 客户端 可用于将 InfluxDB API 与您的应用程序集成。
使用以下方案之一对 InfluxDB API 进行身份验证
使用带有 Basic
方案的 Authorization
头部来对 v1 API /write
和 /query
请求进行身份验证。在验证请求时,InfluxDB 集群版会检查解码凭据中的 password
部分是否是授权的 数据库令牌。InfluxDB 集群版会忽略解码凭据中的 username
部分。
Authorization: Basic <base64-encoded [USERNAME]:DATABASE_TOKEN>
替换以下内容
[USERNAME]
:一个可选的字符串值(由 InfluxDB 集群版忽略)。DATABASE_TOKEN
:一个 数据库令牌。[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 集群版数据库DATABASE_TOKEN
:一个具有对数据库充分权限的 数据库令牌安全方案类型 | HTTP |
---|---|
HTTP 授权方案 | basic |
使用查询字符串身份验证方案以及 InfluxDB 1.x API 参数通过查询字符串提供凭据。
在 URL 中传递 p
查询参数以对 /write
和 /query
请求进行身份验证。在验证请求时,InfluxDB 集群版会检查 p
(密码)是否是授权的数据库令牌,并忽略 u
(用户名)参数。
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 集群版数据库DATABASE_TOKEN
:一个具有对数据库充分权限的 数据库令牌安全方案类型 | API密钥 |
---|---|
查询参数名称 | u=&p= |
使用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" |
使用令牌认证方案对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
头部,以指示请求体中行协议应用的压缩。
头部 | 值类型 | 描述 |
---|---|---|
Accept | 字符串 | 客户端可以理解的内容类型。 |
Authorization | 字符串 | 授权方案和凭证。 |
Content-Length | 整数 | 发送到数据库的实体体的字节大小。 |
Content-Type | 字符串 | 请求体中数据的格式。 |
InfluxDB HTTP API端点使用标准的HTTP状态代码来表示成功和失败响应。响应体可能包含附加的详细信息。有关特定操作的响应详细信息,请参阅该操作的响应和响应样本。
API操作可能返回以下HTTP状态代码
代码 | 状态 | 描述 |
---|---|---|
200 | 成功 | |
204 | 成功。没有内容 | InfluxDB不返回请求的数据。例如,成功的写入请求返回204 状态代码,表示数据已写入并可查询。 |
400 | 错误请求 | InfluxDB无法解析请求,因为参数不正确或语法错误。如果请求体中的行协议格式不正确。响应体包含第一个格式错误的行,并指示期望的内容。对于部分写入,还包括已写入的数据点和拒绝的数据点的数量。 |
401 | 未授权 | 可能表示以下之一
|
404 | 未找到 | 请求的资源未找到。响应体中的message 提供了有关请求资源的详细信息。 |
405 | 方法不允许 | API路径不支持请求中使用的HTTP方法——例如,您向只允许GET 的端点发送了POST 请求。 |
413 | 请求实体过大 | 请求负载超过大小限制。 |
422 | 不可处理的实体 | 请求数据无效。响应体中的code 和message 提供了关于问题的详细信息。 |
429 | 请求过多 | API令牌临时超过请求配额。《Retry-After》头描述了何时再次尝试请求。 |
500 | 内部服务器错误 | |
503 | 服务不可用 | 服务器暂时不可用,无法处理请求。《Retry-After》头描述了何时再次尝试请求。 |
查询数据库中存储的数据。
InfluxQL
通过/query
端点查询v1,并以CSV或JSON格式检索数据。/api/v2/query
端点不能查询InfluxDB集群。SQL
或InfluxQL
进行查询,并以Arrow
格式检索数据。使用InfluxDB v1请求和响应格式,使用InfluxQL查询InfluxDB。
db 必需 | 字符串 查询数据的数据库。 |
epoch | |
p | 字符串 InfluxDB 1.x的密码,用于验证请求。 |
q 必需 | 字符串 要执行的InfluxQL查询。要执行多个查询,请用分号( |
rp | 字符串 查询数据的保留策略。有关更多信息,请参阅InfluxQL DBRP命名约定。 |
u | 字符串 InfluxDB 1.x的用户名,用于验证请求。 |
Accept | 字符串 默认值: application/json 枚举:"application/json" "application/csv" "text/csv" "application/x-msgpack" 客户端可以理解的媒体类型。 注意:使用 |
Accept-Encoding | 字符串 默认值: identity 枚举:"gzip" "identity" 客户端可以理解的编码(通常是压缩算法)。 |
Content-Type | 字符串 值:"application/json" |
Zap-Trace-Span | 字符串 示例: baggage,[object Object],span_id,1,trace_id,1 OpenTracing跨度上下文 |
使用InfluxDB v1或v2端点将时间序列数据写入数据库。
桶 必需 | 字符串 数据库名称或 ID。InfluxDB 将所有批处理点写入指定的数据库。 |
组织 必需 | 字符串 忽略。组织名称或 ID。 InfluxDB 忽略此参数;使用指定的数据库令牌授权请求并将数据写入指定的集群数据库。 |
组织 ID | 字符串 忽略。组织 ID。 InfluxDB 忽略此参数;使用指定的数据库令牌授权请求并将数据写入指定的集群数据库。 |
精度 | 字符串 (WritePrecision) 枚举: "ms" "s" "us" "ns" 行协议批处理中 UNIX 时间戳的精度。 |
Accept | 字符串 默认值: application/json 值:"application/json" 客户端可以理解的 MIME 类型。只有在写入失败时才会返回响应体,例如,由于格式问题或配额限制。
相关指南 |
内容编码 | 字符串 默认值: identity 枚举:"gzip" "identity" 在请求有效载荷中应用的对行协议的压缩。要发送 gzip 有效载荷,请传递 |
内容长度 | 整数 发送到 InfluxDB 的实体主体的字节数。如果长度大于 |
Content-Type | 字符串 默认值:text/plain; charset=utf-8 枚举: "text/plain" "text/plain; charset=utf-8" 请求体中数据的格式。要发送行协议有效载荷,请传递 |
Zap-Trace-Span | 字符串 示例: baggage,[object Object],span_id,1,trace_id,1 OpenTracing跨度上下文 |
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
{- "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兼容的端点,通过v1 API参数和授权使用行协议格式向InfluxDB发送数据。
InfluxDB在您发送写入请求时执行以下操作
204
状态码),确认数据已写入并可查询;否则错误。为确保InfluxDB按照您请求的顺序处理写入,在发送下一个请求之前,请等待成功响应(HTTP 2xx
状态码)。
db 必需 | 字符串 要写入的数据库。如果不存在,InfluxDB 将创建一个具有默认3天保留策略的数据库。 |
p | 字符串 InfluxDB 1.x的密码,用于验证请求。 |
精度 | 字符串 写入精度。 |
rp | 字符串 保留策略名称。 |
u | 字符串 InfluxDB 1.x的用户名,用于验证请求。 |
内容编码 | 字符串 默认值: identity 枚举:"gzip" "identity" 当存在时,其值表示数据库将对行协议体应用压缩。 |
Zap-Trace-Span | 字符串 示例: baggage,[object Object],span_id,1,trace_id,1 OpenTracing跨度上下文 |
行协议体
{- "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)"
}