gw auth api ord inv db
Some paths require a wider view.
Return on a larger screen.

Data Formats

The message is the same. Only the language changes.
A system that speaks one language reaches one listener.
A system that speaks many reaches all.
Exporter Log
14:23:01 otel-exporter Sending span checkout to metrics backend...
14:23:01 ERROR Export failed: unsupported format. Cannot parse binary encoding.
14:23:01 ERROR Expected: plain text exposition format

The exporter sent valid telemetry, but the backend rejected it. Why?

the same span, three representations
Format A  - Structured JSON
{ "traceId": "a1b2c3d4e5f6...", "spanId": "f7e8d9c0...", "name": "checkout", "startTimeUnixNano": 1710284521204000000, "endTimeUnixNano": 1710284521346000000, "attributes": [{ "key": "order.id", "value": { "stringValue": "8842" } }] }
Format B  - Compact Binary
Binary encoding (not human-readable) █▓░▒█░▓█ traceId [binary encoded] ▒█░▓▒░ spanId [binary encoded] ▓█▒░▓█░ name "checkout" ░▒█▓░█ start [binary encoded] ▒░▓█▒░ end [binary encoded] █░▒▓█▒░ attr order.id = "8842" Same data as Format A, packed into a compact binary format.
Format C  - Plain Text
trace_id=a1b2c3d4e5f6... span_id=f7e8d9c0... name=checkout start=1710284521204000000 end=1710284521346000000 attr.order.id=8842
Backend 1
Accepts compact binary-encoded data
Backend 2
Reads plain text, one key=value pair per line
Backend 3
Accepts structured JSON with named fields

Some backends you may encounter (many others exist):

Tracing — accepts binary-encoded data (e.g. Jaeger, Tempo)
Metrics — scrapes key=value text (e.g. Prometheus, Mimir)
Logging — ingests structured JSON (e.g. Elasticsearch, Loki)

Many observability platforms combine all three. The format is what matters, not the tool.

The data is the same. The format is the envelope.

Different destinations need different envelopes.

Continue →