Skip to main content
bronto traces gives you APM-style views over the OpenTelemetry spans Bronto stores in the .traces logset. You don’t pass -d. To get spans into Bronto in the first place, see Send Traces to Bronto, and for the web app’s trace views, Explore Traces.

From a slow service to the span that caused it

All subcommands take --since for the lookback. The default is 15m, except for show and shape, which default to 1h.

Start wide: services and operations

bronto traces services shows span counts and latency per service:
bronto traces operations breaks that down by service and operation. Narrow it to one service with -s:
Both take --errors to count only error spans, and -n to cap the number of rows.

Find spans

bronto traces list lists individual spans. Filter by service, operation, minimum duration, or errors:
Every failing request leaves two 30-second error spans in payments-api: the POST /charge handler and the provider.authorize call inside it. Filtering by duration instead of service shows the whole chain of one slow request, from web-frontend down:

One trace as a waterfall

Pass a trace id to bronto traces show to render the trace as a waterfall: each span on its own line, indented under its parent, with a bar showing when it ran and for how long.
The database query is fast. The time goes into payments-api’s provider.authorize call, which runs for 30 seconds and fails. --bar-width changes the width of the bars, -n the maximum number of spans fetched (default 500). If the trace is older than an hour, widen --since. Log events often carry the trace id. In search output it’s the message_kvs.trace_id field, so a search gets you ids to feed into traces show. -r prints them without JSON quotes, ready to pass to another command:

The shape of many traces

bronto traces shape samples traces and merges their call trees into one, so you can see which calls a request usually makes and where the time goes, without picking a single trace:
The last column counts the sampled traces that contain each call: 6 of these 10 traces are checkouts and 4 are cart loads. By default it samples by entry (server) spans. --any-span samples by any span matching --operation instead. --min-traces drops branches seen in fewer traces than you set, which trims rare paths. --errors, --min-duration-ms, and -w/--where (a raw WHERE clause) narrow the sample.

Aggregate by attribute

bronto traces aggregate groups spans by one or more attributes and reports counts and latency for each value:
It looks at root spans unless you pass --all-spans. -k/--kind filters by span kind (server, client, and so on), and --include-empty keeps rows where the attribute is missing.

Output

Piped, every traces subcommand prints JSONL like search does. traces show and traces shape draw their own views at a terminal, so --fields doesn’t apply to them. See Output formats.