InfluxElixir.Write.LineProtocol (InfluxElixir v0.1.17)

Copy Markdown View Source

Encodes Point structs into InfluxDB line protocol format.

Handles tag sorting, field type encoding, escaping, multi-point delimiters, and timestamp conversion.

Line Protocol Format

measurement[,tag_key=tag_val]... field_key=field_val[,field_key=field_val]... [timestamp]

Field Type Encoding

  • Integers: suffixed with i (e.g. 42i)
  • Floats: as-is (e.g. 0.64)
  • Strings: double-quoted (e.g. "hello")
  • Booleans: true or false

Escaping Rules

  • Measurement names: spaces, commas, backslashes
  • Tag keys/values: spaces, commas, equals, backslashes
  • Field keys: spaces, commas, equals, backslashes
  • Field string values: double-quotes, backslashes

Summary

Functions

Encodes a Point or list of Points into InfluxDB line protocol binary.

Encodes a Point or list of Points into InfluxDB line protocol binary.

Types

encode_result()

@type encode_result() :: {:ok, binary()} | {:error, term()}

Functions

encode(point)

Encodes a Point or list of Points into InfluxDB line protocol binary.

Returns {:ok, binary} on success or {:error, reason} on failure.

Examples

iex> point = InfluxElixir.Write.Point.new("cpu", %{"value" => 0.64})
iex> {:ok, lp} = InfluxElixir.Write.LineProtocol.encode(point)
iex> lp
"cpu value=0.64"

iex> point = InfluxElixir.Write.Point.new("cpu", %{"count" => 42},
...>   tags: %{"host" => "server01"},
...>   timestamp: 1_630_424_257_000_000_000
...> )
iex> {:ok, lp} = InfluxElixir.Write.LineProtocol.encode(point)
iex> lp
"cpu,host=server01 count=42i 1630424257000000000"

encode!(point_or_points)

Encodes a Point or list of Points into InfluxDB line protocol binary.

Raises ArgumentError on failure.

Examples

iex> point = InfluxElixir.Write.Point.new("cpu", %{"value" => 0.64})
iex> InfluxElixir.Write.LineProtocol.encode!(point)
"cpu value=0.64"