Skip to content
RouteSpear
Documentation
Documentation menu

Metrics Explorer

Query any metric directly by name, label or platform dimension, without picking a test first or building a panel around it.

A dashboard panel answers a question you already know you will ask again. Most questions during an investigation are not that; they are “does anything else look like this”, asked once, about whatever the data will admit. Metrics Explorer is for that second kind.

Panels vs. the Explorer

Dashboard panel Metrics Explorer
Scope One test, or an explicit set of tests/agents Every record across your tenant that matches
You choose A test or agent first, then a metric A query; scope falls out of the filters you write
Where it lives Saved, arranged on a dashboard A scratchpad, with queries you can save by name
Best for The view a team looks at every day “Is anything acting weird right now”, root-causing an alert

Reach for the Explorer when you do not yet know which test, agent or label is involved, that is exactly the thing it is built to find. Once you know, and you will want to look again, either save the query, or build a panel on it, a dashboard panel’s Query language source runs the same query text, typed or saved. See Dashboards and Panels and metrics.

The query bar

Type a query and press Run (or Ctrl+Enter; Cmd+Enter on macOS). Start with a metric selector or a from source pipeline. A selector names a metric, filters dimensions, and optionally aggregates or combines values with + - * /:

http_check_total_ms{target=~"api-.*"} | avg by (agent_id)

Ctrl+Space opens IntelliSense on demand. Suggestions also appear as you type: metric names, sources, fields with units, filter operators and values, aggregations, grouping dimensions, joins, calculation aliases, ranking, and baseline profiles/statistics. Use arrow keys and Enter to accept, or Escape to dismiss. Suggestions continue into arguments after you choose a stage. The same completion engine is available in dashboard query series and alert conditions. Agent and test suggestions show names alongside IDs: selecting one in an ID filter inserts its ID, while a name filter receives its quoted name. Suggestions use current tenant metadata, so they can include entities without observations in the selected time range.

Metrics Explorer query editor suggesting Customer API availability and Customer login availability, each with its test ID. Enlarge screenshot
Example data. Completion shows readable test names beside their IDs. Selecting a suggestion in a test_id filter inserts the ID.

Use from tests for full metric names across all check types and storage sources:

from tests
| where test_type = "http_check" and test.name =~ "API.*"
| summarize p95(http_check_total_ms) as latency by test_id, test.name, agent_id, agent.name
| order by agent.name asc

Keep IDs alongside names to separate entities with duplicate names. The names are current metadata, including on historical results. Use test.group_id to select the group containing several checks.

To compare several measurements together, start with a source pipeline:

from host_resources
| where resource_kind = "process" and monitored = true
| summarize avg(cpu_percent) as cpu, max(rss_bytes) as memory
  by agent_id, process_name
| order by memory desc
| limit 20

This selects the top 20 entities by memory in each bucket and keeps their CPU and memory outputs together. Each output retains its own unit. To turn an unranked source query into an alert condition, finish with | pick cpu or another output alias. Follow the detailed walkthroughs and syntax reference in Query language.

A few examples, chosen from the metric catalog, are one click away under the query bar. Catalog membership does not guarantee observations in the selected range. With no catalog data you will instead see the general form of each:

  • One metric, split by agent: http_check_total_ms | avg by (agent_id)
  • Every metric for a check type: {test_type="http_check"} | avg by (metric_name)
  • A regex on a name, peak per metric: {metric_name=~"http_check_.*"} | max by (metric_name)

Saving queries

Save next to Run keeps the query in the editor by name, with an optional description. A saved query is private unless you switch on Share with the organization, in which case everyone in your tenant can run it from their own Explorer and build panels on it. Only the person who saved a query can edit or delete it, shared or not.

Saved queries appear in the Saved queries card on the left, yours and those shared with you, in one list. Click one to load and run it. Own queries carry a visibility toggle (the globe or lock) and a delete control. While a saved query is loaded the editor says so under the query bar; edit the text and Save offers to update that query in place or to save the edited text as a new one. Save as new from a query somebody shared with you is how you take your own copy.

What is stored is the query text, exactly as written. It is parsed again every time it runs, so a saved query keeps working across changes to your promoted dimensions, a label that was unindexed when the query was saved simply starts reading the indexed column once it is promoted.

Deleting a shared query affects anyone who built a panel on it: that panel reports the query as missing until it is pointed elsewhere. The delete confirmation says so.

The dimension browser

The panel on the left is how you find what to query without already knowing the vocabulary.

Metrics lists registered metrics and discovered custom metrics, with recent sample counts where available. Registered metrics remain discoverable with no observations. Click one to drop it into the query as the metric name.

Dimensions groups every filterable key into four sections, covered in full in Dimensions: Identity (which test, which agent, what target), Platform (context the system stamps on every record, such as transport or network scope), Entity (facts resolved after the fact, such as the device a target turned out to be), and Your labels (label keys a check or script attached to the record, plus configured agent and test labels). Promoted labels are included; other label discovery is bounded rather than exhaustive. Expand a dimension to see a sample of its recent values; clicking one appends key="value" to the query’s selector.

Reading the results

Rolling time presets keep exact times while detailed measurements are retained. For older periods, Explorer automatically excludes partial minutes or hours when needed for the chart and its comparison. A notice shows the actual start and end times used. Custom ranges keep their exact boundaries unless you enable Use complete UTC hours.

If the selected period is available but its preceding comparison period has expired, the chart and current average still appear. Explorer explains why the baseline is unavailable and leaves the deviation unscored. Queries that require expired raw samples still need a more recent range or supported summary fields.

Each row is one series: its dimension values as chips, a sparkline, its current average, and a deviation badge.

Deviation compares the current window’s mean against the mean and standard deviation of the immediately preceding window of equal length, the same span, shifted back. For a plain metric selector, the comparison uses sample-weighted averages and standard deviations, independently of the chart’s sample aggregation. For source selections, arithmetic, counter conversions, reductions, and ranked selectors, it summarizes evaluated chart buckets instead, using a common bucket width for both windows. A ratio’s comparison therefore describes its calculated output. This preceding-window comparison is separate from a learned baseline(...) profile.

Badge Meaning
no baseline The preceding window had no data, or its required detail is no longer retained; a notice explains retention limitations
z … · quiet Within about two standard deviations of the baseline
z … · notable Two to four standard deviations out
z … · severe Four or more standard deviations out

Selector results initially sort by deviation, largest first. Source queries preserve their query ordering, including order by agent.name or an output alias. You can also sort with the result table’s column headers.

Drilling in

Click a row to open it full size, with the test or agent it came from linked directly, and up to eight related metrics from the same test plotted alongside it, the fastest way to see whether this metric moved alone or something upstream of it did.

Time range and limits

The time range control at the top applies the same way it does on a dashboard; see Time range and live mode.

A query may return at most 200 series. Grouping by a high-cardinality dimension with no filter (by (target) across a whole tenant, say) can otherwise ask for thousands of series that are too many to read and expensive to score; past the limit the Explorer asks you to add a filter or narrow the by (...) clause rather than silently truncating the results in a way that could hide the one series you came for.

The Explorer uses raw samples or eligible retained summaries according to the requested time range, dimensions, and aggregation. Queries requiring detail absent from a summary still need raw retention; a rollup cannot reconstruct that detail. Source outputs share a common bucket width when one needs coarser retained data. Narrow the range or filters when a query needs too many series or raw samples that are no longer retained.

Next

Screenshot