Line Protocol

Line Protocol 格式

每行代表一个数据点。格式:measurement[,tag_key=tag_val ...] field_key=field_val [timestamp]

# Format (spaces are significant!)
# measurement,tag_key=tag_val field_key=field_val timestamp
#             ^               ^                   ^
#             comma (no space) space               space

# Example: CPU metrics
cpu,host=server01,region=us-east usage_user=23.4,usage_system=5.1 1609459200000000000

# Multiple fields (comma-separated, no spaces around =)
temperature,location=room1,sensor=dht22 celsius=22.5,humidity=45.2

# No tags (jump straight to fields after measurement)
disk_io read_bytes=1048576i,write_bytes=524288i

# Omit timestamp: InfluxDB uses server time
cpu,host=web01 usage_user=12.5

数据类型

# Float (default for undecorated numbers)
temperature value=22.5
temperature value=2.25e1

# Integer (append 'i')
requests count=1000i
bytes_sent total=1048576i

# Unsigned integer (append 'u')
uptime seconds=86400u

# String (double-quoted)
status message="all systems operational"

# Boolean
service active=true
service active=false
service active=t     # shorthand: t/f/T/F/TRUE/FALSE

# Tag values are always strings (no suffix needed)
cpu,host=server01,region=us-east usage=22.4

# Timestamps (nanoseconds by default)
# ns:  1609459200000000000
# us:  1609459200000000
# ms:  1609459200000
# s:   1609459200

转义特殊字符

# In measurement name: escape comma, space
my\ measurement,tag=val field=1i
my\,measurement,tag=val field=1i

# In tag keys/values: escape comma, space, equals
cpu,host=my\ server usage=22.4
cpu,app=key\=value  usage=22.4

# In field keys: escape comma, space, equals
cpu,host=s1 field\ key=1i

# In field string values: escape double-quotes, backslash
status message="system \"ok\""

# Timestamp precision when writing via API
# ?precision=s   seconds
# ?precision=ms  milliseconds
# ?precision=us  microseconds
# ?precision=ns  nanoseconds (default)

通过 HTTP API 写入数据

# InfluxDB 2.x write endpoint
curl -XPOST "http://localhost:8086/api/v2/write?org=myorg&bucket=metrics&precision=ns" \
  --header "Authorization: Token my_api_token" \
  --header "Content-Type: text/plain; charset=utf-8" \
  --data-binary 'cpu,host=s1 usage=22.4 1609459200000000000
temperature,sensor=t1 celsius=20.1 1609459200000000000'

# InfluxDB 1.x write endpoint
curl -XPOST "http://localhost:8086/write?db=mydb" \
  --data-binary 'cpu,host=s1 usage=22.4'

# Batch writes: newline-separated points
# Max recommended batch size: 5000 lines or 5 MB

标签与字段对比

标签字段
类型仅字符串浮点、整数、无符号整数、字符串、布尔
是否索引是(倒排索引)
查询过滤较慢(扫描)
基数保持低(避免 UUID)任意
适用于host、region、env、sensor_id测量值(温度、字节数)