行协议是什么
行协议(line protocol)是 InfluxDB 的写入格式:measurement、标签集、字段集与可选时间戳依次排列,标签与字段之间用一个空格分隔,标签之间用逗号。时间戳默认按纳秒解析,不传则由服务端补当前时间。写数据前先把结构和单位定好,因为同一 measurement 内字段的类型与顺序一致性直接影响写入是否被接受。
基本信息
| 格式 | <measurement>[,<tag_key>=<tag_value>…] <field_key>=<field_value>[,…] [<timestamp>] |
|---|---|
| 字段类型 | 浮点 1.0、整数 1i、布尔 true、字符串 "text" |
| 时间戳 | 默认纳秒,precision 参数可指定 s/ms/us/ns |
| 分隔符 | 标签集与字段集之间用空格,标签之间用逗号 |
| 转义 | 逗号、等号、空格在标签值中需转义 |
| 适用版本 | InfluxDB 1.x 与 2.x 均支持 |
典型使用场景
- 监控代理批量上报指标数据
- 脚本手工写入单条测试数据验证结构
- 从 CSV 或日志转换为行协议后批量导入
- IoT 设备按行协议上报采集值
- 数据迁移:从其他时序库转成行协议落库
- 压测时构造行协议数据体评估写入吞吐
示例
示例
cpu,host=web-1,region=cn usage=0.73,idle=99.2 1719792000000000000 # 标签在前,字段在后
http_requests,service=api,code=200 count=42i 1719792000000000000 # 整数加 i 后缀
temperature,room=office value=23.5 # 不传时间戳,服务端补当前时间
weather,location=us-midwest temperature="sunny" 1719792000000000000 # 字符串字段要加引号元素读法
| 元素 | 作用 | 注意点 |
|---|---|---|
| measurement | 表名/指标名 | 类似表名,不能为空 |
| tag | 索引化的维度,字符串类型 | 基数过高会拖垮内存 |
| field | 实际数值或文本 | 类型在同一分片内需一致 |
| timestamp | 时间点 | 默认纳秒,单位写错会错位 |
| precision | 时间戳单位 | 写入参数里指定 |
同一行里多个 field 会写入同一个点;field 的顺序与类型在同一 measurement 的同一分片周期内需保持一致,否则写入会被拒绝。
field 类型在同一分片内变更(如 1 变成 "1")会导致 field type conflict 错误,写入被拒绝,混用类型前要先统一口径。
行协议的时间戳默认纳秒,误传秒级时间戳会被解析成 1970 年附近的时间点,看不到近期数据时优先检查单位。