APM Traces

Overview

The Traces Explorer shows raw trace and span data. Filter by service, endpoint, span type, and other attributes, then pick a view mode suited to what you’re looking for: a raw list to browse individual requests, or an aggregated chart to spot a trend. By default, Kloudfuse filters traces to the services, environment, and operations currently in scope from wherever you navigated in from.

For attribute cardinality — which attributes are safe to filter and group by — see Trace Attribute Cardinality.

Click APM in the top navigation, then Explorer under Traces. To see traces scoped to a single service, open that service’s Service detail page and click its Traces tab instead.

View modes

A tab strip at the top switches between six view modes. Errors only and the Span type drop-down above the tabs apply to all of them.

Traces

The default view: a raw list of individual traces, newest first, above a stacked Traces by service chart. Each row shows timestamp, service, span name, duration, method, status, endpoint, span count, and a latency breakdown bar. Click a row to open its trace detail flyout.

Use Search / the filter bar (for example, service_name=web, span_type=http) to narrow the list — see Filtering traces for the full set of filterable attributes. Use COLUMNS to control which columns are shown, and the download icon to export the current list.

Timeseries

Plots an aggregated metric over time using the query builder described in The query builder and FormulasShow count of, by, roll up every, Span Filter, and Limit — with support for multiple queries and formulas. Use COMPARE to overlay the same query from an earlier period (for example, one day back).

Table

The same query builder rendered as a table instead of a chart — useful when you want exact numbers per group (for example, per span_name) rather than a visual trend.

Top List

Ranks the groups produced by the query builder from highest to lowest value — the fastest way to answer "which N services/endpoints/pods are driving this metric."

Pie Chart

Shows the relative share each group contributes to the total — useful for questions like "what fraction of requests are going to each downstream service."

Stat

A single large number (with a small sparkline) for the current query — useful for dashboards or a quick at-a-glance total, such as total request count in range.

Trace detail

Click any row in the Traces Explorer (or a span in K-Lens's View spans) to open a trace as a flyout panel over the list. The flyout header shows the trace ID, overall status, total duration, sample rate label (for example p85), and timestamp.

The flyout has two halves: a trace-wide view at the top (Flame graph, Waterfall, Span list, or JSON), and, once you select a span, that span’s detail at the bottom.

Flame graph

The flame graph lays every span out on a shared time axis, indented by parent/child relationship, and colored by service (or, via Color by, span count instead of execution time). This is the fastest way to see which service or span dominates the trace’s total duration. A panel alongside the graph totals Exec time or Span count per service across the whole trace. Click any bar in the flame graph to select that span and populate the span detail panel below.

Waterfall

The same spans as the flame graph, but laid out as an indented list (service and operation name) rather than a nested timeline — useful when the call tree is deep and the flame graph’s timeline gets visually cramped. Selecting a span here populates the same detail panel as the flame graph.

Span list

Groups every span in the trace by service and span type, reporting Name, Spans, Duration, Exec Time, and Exec % per group. Expand a group to see its individual spans, and use Search spans or the span-type quick filters (custom, db, http, queue, gRPC) above the list to narrow a long trace down to the spans you care about.

JSON

The raw JSON for the entire trace — useful for copying exact attribute values or for pasting into a support ticket.

Span detail

Selecting a span in any of the views above populates the panel at the bottom of the flyout, with five tabs:

Info

The span’s full attribute set as key-value pairs: span ID, parent span ID, trace ID, name, service, start/end time, and every other attribute attached to the span (host, Kubernetes, cloud, and custom attributes). For error spans, this includes the captured stack trace at the point of failure. Hover any value to copy it.

JSON

The raw JSON for just this span, as opposed to the trace-wide JSON tab above.

Metrics

Requests/s, Latency, and Error Rate for the span’s service, matching the same charts on that service’s Service detail page.

Logs

Log lines correlated to this specific span (by trace ID and span ID), so you can see exactly what the service logged while handling this request without leaving the trace.

RUM

If the trace originated from an instrumented frontend, this tab links the span to the corresponding Real User Monitoring session — useful for tracing a slow page load back through the backend requests it triggered.

Filtering traces

The same facet panel and filter categories apply across Services, the Databases table, Service Map, Traces, and K-Lens. Use the panel on the left of each screen to check/uncheck values, or type directly into a screen’s filter bar (for example, service_name=web, span_type=http).

telemetry type

The specific category of data collected through telemetry, such as logs, events, or distributed tracing.

span type

Kloudfuse associates every service with a type, determined automatically from the span.type attribute — the name of the application or framework the Kloudfuse agent integrated with. Options include cache, custom, db, http, grpc, queue, and web (for example, cache for Redis/Memcache, db for PostgreSQL/MySQL/Cassandra).

language

The programming language of the integrated telemetry SDK: go, nodejs, cpp, java, dotnet, rust, python, php, or ruby. The language filter includes a search function.

version

The service version (service_version); this is the same value the Deployments tab breaks down by.

service

Choose the service by its type and facet, or use the Search service option. Services may have duplicate names; each one is tagged with the facets that identify it as a unique combination — see Service Identity.

service name

Choose the service by its bare service name, or use the Search Service Name option, when you don’t need to distinguish between duplicate-named services.

span name

Choose the span by its span name, or use the Search Span Name option.

duration (ms)

Filter traces by their total duration.

error

Filter to only spans/traces that resulted in an error.

cloud

Attributes of cloud-based services — availability zone, cloud account id, instance type, project, and region.

host

The host where the trace ran. Includes host arch, host id, and host name.

Kubernetes

Attributes of services running in Kubernetes — cluster name, container name, namespace, node, pod name, and related workload attributes (deployment, replica set, stateful set, daemon set, job, cronjob).

app

Filters on the name of the application.

code

Filters on properties found in the code. Includes code filepath, code function, and code namespace.

container

Attributes of container-based virtualizations (Docker, EC2/bare metal, and so on), including container id.

custom

Filters that Kloudfuse extracts from the data in the incoming time series, including env, environment, and outcome (success or failure).

db

Attributes of database operations, such as db instance, db name, db redis database index, db system, db type, and db user.

Not sure whether an attribute is worth filtering or grouping by? See Trace Attribute Cardinality to check how many distinct values it has before you build a query around it.

The query builder

The Timeseries, Table, Top List, Pie Chart, and Stat views all share one query builder, opened with + Query and + Formula. When you specify the first filter, you define the first query, labeled A in the interface. Add additional queries — B, C, and so on — to compare or combine them.

Specify a query

  1. In the Show count of drop-down, select All spans (default), any named span, or any other filter. These filters are the ones that appear in the facet panel; see Filtering traces. Depending on the selected filter, the aggregation changes from Count of to Count unique of automatically — see Aggregations.

  2. In the by drop-down, choose Everything, or one of the many prepared labels. You can add multiple options to the by clause; they appear as separate tiles.

  3. In the limit to drop-down, select either bottom or top, and specify the number of records to show: 2, 5, 10, 15, 25, 30, 50, or 100.

  4. In the roll up every drop-down, select a time-based grouping. The available choices change depending on the overall time interval.

For example, using a time interval of 3 hours, grouping by the app_ads_contextKeys value, limiting the query to the top 100, and rolling up every 2 minutes produces a chart of the top 100 app_ads_contextKeys values over 2-minute buckets across the 3-hour window.

Add a query

Select Add Query to add a second query, labeled B, as a duplicate of the first. This makes it easy to perform calculations across the time series retrieved by both queries — change the filter in query B to compare it against query A.

By default, multiple queries render on the same chart. Deselect Combine all queries into one chart to render each query as its own chart instead — useful when the queries have significantly different value ranges and are hard to compare on a shared Y axis. Select the option again to recombine them.

Refresh the query

A query loaded with a relative time interval (the default is Last 15 minutes) reflects the data as of when it last ran. Select Refresh at the top right of the interface to re-fetch the data for the same options.

Remove a query

You cannot remove the only (last) query on the page; instead, select a different query in the first drop-down. To remove one query out of several, hover over its tile and select Remove. To clear the whole query (remove all tiles), select Remove all.

Formulas

Formulas let you create custom calculations and transformations of your trace data across multiple views. Apply formulas to derive metrics, filter results, or display computed values based on your trace attributes, tailoring the analysis to your specific troubleshooting and investigation needs. A formula combines the results of one or more queries — build the underlying queries first; see The query builder.

You can use formulas in the Timeseries, Table, Top List, and Pie Chart views.

Add a formula

  1. Select Add Formula.

  2. An empty formula line appears under the query lines, labeled with a number (for example, 1).

  3. Type the formula in the text box next to the label — reference queries by their letter (for example, a / b to divide query A by query B).

The interface displays graphs for the underlying queries and the new formula.

Remove a formula

Select Remove next to the formula you want to delete. The formula is removed from the interface; the underlying queries are unaffected.

Aggregations

When using the Query builder, Kloudfuse automatically applies an aggregation based on the data type of the attribute you group by:

Count

When you examine all spans, Kloudfuse applies the count aggregation.

Average

When examining facets with a DURATION data type, Kloudfuse applies the average aggregation. You can change the aggregation formula — in addition to avg, you can use max, median, min, and sum, or the latencies p75, p90, p95, and p99.

Unique count

When examining attributes with other data types (NUMBER, STRING, and IP_ADDRESS), Kloudfuse applies the distinct count aggregation.