使用 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端点时传递以下参数:
- a
db=DATABASE_NAME参数. - 可选: 一个
rp=RETENTION_POLICY_NAME参数。 默认保留策略名称是autogen。 - 一个令牌(例如全访问令牌)具有写入DBRPs和存储桶的权限。
如果不存在名为 DATABASE_NAME/RETENTION_POLICY_NAME 的桶,InfluxDB 会在将数据写入桶之前创建一个桶和一个 DBRP。
要了解更多关于DBRP映射的信息,请参阅v1 API兼容性指南。
创建一个存储桶和DBRP映射
要为一个桶创建一个DBRP:
- 如果它还不存在,请创建要写入的存储桶。
- 查找要写入的存储桶的 ID。
- 创建一个 DBRP,它将数据库名称和保留策略名称映射到前一步的桶 ID。
如果您的 /write 请求中的 db=DATABASE_NAME 和 rp=RETENTION_POLICY 参数映射到一个现有的 DBRP,InfluxDB 会写入映射的桶。
写入 v1 HTTP /write 端点
POST https://cloud2.influxdata.com/write参数
对于 InfluxDB Cloud 无服务器 v1 API /write 请求,设置如下表所示的参数:
| 参数 | 允许在 | 被忽略 | 值 |
|---|---|---|---|
consistency | 查询字符串 | 忽略 | 不适用 |
db * | 查询字符串 | 被尊重的 | 数据库(请参阅如何 将数据库和保留策略映射到桶) |
precision | 查询字符串 | 已尊重 | 时间戳精度 |
rp | 查询字符串 | 尊敬的 | 保留策略(查看如何 将数据库和保留策略映射到存储桶) |
Authorization 头或者 u 和 p | 令牌 |
时间戳精度
在 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 policyAPI_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: 数据库 databaseRETENTION_POLICY: 保留策略 retention policyAPI_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: 一个具有足够权限的令牌,用于指定的存储桶