InfluxDB 2.x API 写入数据
官方文档
https://docs.influxdata.com/influxdb3/core/write-data/http-api/compatibility-apis/
注意:InfluxDB 的接口数据采用的 Line Protocol(行协议) 严格要求每行以 \n结尾,不支持 \r\n
\n(换行符,十六进制 0A) 而不是 \r\n(回车+换行,十六进制 0D 0A)


名词解释
一、组织(Organization):工作空间
是什么?
组织(Org)是 InfluxDB 的顶层租户单位。它不是一个具体的数据库,而是一个包含用户、存储桶、任务和仪表板的逻辑工作空间。
作用是什么?
数据与权限隔离:不同团队(如“运维部”和“业务部”)可以使用不同的组织,彼此数据完全不可见。
资源管理边界:API Token、任务(Task)、告警规则(Check)都隶属于特定的组织。
多租户支持:一个 InfluxDB 实例可以承载多个独立的组织。
类比理解:
就像你电脑上的用户账户。你登录了“张三”这个账户,就看不到“李四”账户里的桌面文件和下载记录。
二、存储桶(Bucket):数据仓库
是什么?
存储桶是 InfluxDB 2.x 中实际存储时间序列数据的地方。它是 1.x 版本中“数据库(Database)”和“保留策略(Retention Policy)”的合并体。
作用是什么?
数据分类存储:你可以创建不同的桶来存放不同类型的数据(例如:
system_metrics存服务器监控,app_logs存应用日志)。定义数据生命周期:每个桶可以独立设置数据保留策略(Retention Policy),自动删除过期数据。
例如:监控数据保留 30 天,日志数据保留 7 天。
权限控制粒度:Token(访问令牌)的读写权限是按桶来分配的。
类比理解:
就像组织(用户账户)下的文件夹。你可以在“张三”的账户下创建“工作文档”(保留1年)和“临时缓存”(保留7天)两个不同的文件夹,它们拥有独立的清理规则。
通用数据模型(理解这三点就能写数据):
Measurement:测量指标名,类似 SQL 的表名(如
cpu)。Tag:标签(索引字段),用于分类筛选(如
host=server01)。Field:字段(数值/字符串/布尔),存储实际指标值(如
usage=58.2)。Time:时间戳(自动生成或指定)。
precision=ns指定写入数据时时间戳的精度。这是 InfluxDB 中一个非常重要的参数,直接关系到数据写入的正确性。
precision参数告诉 InfluxDB:“我发送的时间戳数值,单位是什么?”
精度值
含义
示例时间戳
1683723600表示
ns纳秒
2023-05-10T09:00:00.000000000Z
u 或us微秒
2023-05-10T09:00:00.000000Z
ms毫秒
2023-05-10T09:00:00.000Z
s秒
2023-05-10T09:00:00Z
m分钟
2023-05-10T09:00:00Z (精度到分)
h小时
2023-05-10T09:00:00Z (精度到小时)
获取token
方法一:通过终端直接获取(推荐)
这是最快捷的方式,无需登录 Web 界面。
进入 InfluxDB 容器内部命令行。
执行以下命令列出所有 Token(需要已初始化):
influx auth list在输出结果中,找到
description为admin's Token或你自定义名称的条目,复制token列的长字符串即可。方法二:通过 Web UI 界面查看
如果你在部署时设置了 Web 服务并记得密码,可以使用此方法。
InfluxDB 外部访问 地址(通常是
http://服务器IP:8086)。浏览器打开该地址,使用初始化时设置的账号密码登录。
点击左侧菜单栏的 Load Data -> API Tokens。
找到对应的 Token,点击 Copy to Clipboard 复制。


python验证数据写入
http请求方式
import requests
url = "http://localhost:8086/api/v2/write"
params = {"bucket": "chang_feng", "org": "hua_heng"}
headers = {
"Authorization": "Token q57rRF3q7cYHPBj_19eoNgBhHyfKTttHJPZ9lzgCIuGekfIeG9f7AjXav_RyWnYYReNNZXJFJa5AznBLO3CzSw==",
"Content-Type": "text/plain"
}
# python 会使用 \n 连接多行数据
data = """
cpu,host=serverA usage=0.64
cpu,host=serverB usage=0.63
"""
# 直接显示使用 \n 连接多行数据也可以
# data = """
# cpu,host=serverA usage=0.64 \n cpu,host=serverB usage=0.63
# """
resp = requests.post(url, params=params, headers=headers, data=data)
print(resp.status_code)
influxdb_client库方式
import influxdb_client, os, time
from influxdb_client import InfluxDBClient, Point, WritePrecision
from influxdb_client.client.write_api import SYNCHRONOUS
url = "http://localhost:8086"
org = "hua_heng"
token = "q57rRF3q7cYHPBj_19eoNgBhHyfKTttHJPZ9lzgCIuGekfIeG9f7AjXav_RyWnYYReNNZXJFJa5AznBLO3CzSw=="
bucket="chang_feng"
client = influxdb_client.InfluxDBClient(url=url, token=token, org=org)
# 写入
write_api = client.write_api(write_options=SYNCHRONOUS)
for value in range(5):
point = (
Point("measurement1")
.tag("tagname1", "tagvalue1")
.field("field1", value)
)
write_api.write(bucket=bucket, org=org, record=point)
time.sleep(1) # separate points by 1 second
# 查询
query_api = client.query_api()
query = f"""from(bucket: "{bucket}")
|> range(start: -10m)
|> filter(fn: (r) => r._measurement == "measurement1")"""
tables = query_api.query(query)
for table in tables:
for record in table.records:
print(record)
# 聚合查询
query_api = client.query_api()
query = f"""from(bucket: "{bucket}")
|> range(start: -100m)
|> filter(fn: (r) => r._measurement == "measurement1")
|> mean()"""
tables = query_api.query(query)
for table in tables:
for record in table.records:
print(record)
windows命令行验证数据写入
@REM 多行模式使用 @语法发送文件内容
@REM curl --data-binary @temp.txt http://example.com
curl -X POST "http://localhost:8086/api/v2/write?org=hua_heng&bucket=chang_feng&precision=ms" ^
--header "Content-Type: text/plain" ^
--header "Authorization: Token q57rRF3q7cYHPBj_19eoNgBhHyfKTttHJPZ9lzgCIuGekfIeG9f7AjXav_RyWnYYReNNZXJFJa5AznBLO3CzSw==" ^
--data-raw "dcs_data2,tag=通道1.设备1.TT_001 value=300"
http验证数据写入
### 上报数据
POST http://localhost:8086/api/v2/write?org=hua_heng&bucket=chang_feng&precision=ms
Content-Type: text/plain
Authorization: Token q57rRF3q7cYHPBj_19eoNgBhHyfKTttHJPZ9lzgCIuGekfIeG9f7AjXav_RyWnYYReNNZXJFJa5AznBLO3CzSw==
dcs_data,tag=CD01_F1 value_bool=false 1775806114554
更多推荐




所有评论(0)