Desktop Only
These koans require a larger screen. Please visit on a desktop browser.

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

In practice, these backends have names you'll encounter:

Jaeger A tracing tool that accepts binary-encoded data
Prometheus A metrics system that scrapes key=value text
Elasticsearch / Loki Logging tools that ingest structured JSON

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

Different destinations need different envelopes.

Continue →