Copy as Markdown[Open in ChatGPT](https://chatgpt.com/?q=Read%20https%3A%2F%2Fdocs-docusaurus.kinsta.page%2Fuser-guides%2Fdata_exploration%2Fmetrics-explorer.md%20and%20help%20me%20with%20my%20question%20about%20this%20Coralogix%20documentation%20page.)[Open in Claude](https://claude.ai/new?q=Read%20https%3A%2F%2Fdocs-docusaurus.kinsta.page%2Fuser-guides%2Fdata_exploration%2Fmetrics-explorer.md%20and%20help%20me%20with%20my%20question%20about%20this%20Coralogix%20documentation%20page.)

# Explore metrics with metric explorer

Query any Prometheus-compatible metric, visualize the results, and drill down by label dimensions without setting up a dashboard first. Metric Explorer gives you a dedicated workspace to investigate metric behavior, compare series across labels, and surface outliers across your entire label space from a single screen.

Use Metric Explorer to:

* **Query without a dashboard**: Build and run PromQL queries in a dedicated workspace, using a no-code builder or a code editor.
* **Visualize and compare**: See metric trends as time series charts, filter by labels, apply aggregations, and combine expressions to derive new signals.
* **Find what's driving anomalies**: Drill down by label dimensions to identify which label values are contributing to unusual behavior, without writing additional queries.

## What you need[​](#what-you-need "Direct link to What you need")

* The `METRICS.DATA-API#HIGH:READDATA` permission.
* Metrics data ingested into Coralogix.

## Open Metric Explorer[​](#open-metric-explorer "Direct link to Open Metric Explorer")

Navigate to **Explore**, then **Metric Explorer**.

## Build a query[​](#build-a-query "Direct link to Build a query")

Metric Explorer provides 2 query modes: **Builder** and **Query**. Use **Builder** for guided, no-code query construction. Switch to **Query** to write PromQL directly.

### Filter by label[​](#filter-by-label "Direct link to Filter by label")

Use **Filter by** to narrow the metric to a specific subset of your data before running the query. Select a label from the dropdown, then select a value to apply as a filter.

[![Screenshot of Metric Explorer Builder mode showing the Filter by label dropdown with available label options](/assets/images/metric_explorer_filter_by-8e3de2445c579db5da206dc3aa215fef.webp)](https://docs-docusaurus.kinsta.page/assets/images/metric_explorer_filter_by-8e3de2445c579db5da206dc3aa215fef.webp)

*Shows the `RUM_duration` metric with the **Filter by** label dropdown open. The available labels include city, source, and replica fields. Selecting a label filters all results to matching series only, and the chart and table update immediately.*

#### Use case[​](#use-case "Direct link to Use case")

You are investigating elevated RUM page load times across your application. You select the `RUM_duration` metric and open **Filter by** to see which labels are available. You select the city label to understand how duration varies by city, immediately surfacing that Frankfurt am Main (last value: 320) and Mumbai (last value: 251) are the highest contributors.

### Add a function[​](#add-a-function "Direct link to Add a function")

Use **Function** to shape your query results. Select from aggregation, count, rollup, and rank functions.

#### Aggregation[​](#aggregation "Direct link to Aggregation")

Aggregation functions calculate a set of values and return a single value. Once you select the function, select the label to aggregate by.

| Function             | Description                                                                                                                       |
| -------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
| `avg`                | The average value of all data points within the selected time range.                                                              |
| `count`              | The total number of data points within the selected time range.                                                                   |
| `min`                | The smallest value among the data points within the selected time range.                                                          |
| `max`                | The largest value among the data points within the selected time range.                                                           |
| `sum`                | The sum of all data points within the selected time range.                                                                        |
| `quantile`           | Computes the phi-quantile for each group of labels within the time series. The value of `phi` must fall within the range \[0, 1]. |
| `histogram_quantile` | Computes the phi-percentile based on the provided histogram buckets. The value of `phi` must be between 0 and 1.                  |

[![Screenshot of Metric Explorer Builder mode showing the Function dropdown open with Aggregation options](/assets/images/metric_explorer_function-66231ede5c95d4eed8088bf13bfa76da.webp)](https://docs-docusaurus.kinsta.page/assets/images/metric_explorer_function-66231ede5c95d4eed8088bf13bfa76da.webp)

*Shows the **Function** menu open with all aggregation options visible. Selecting **Avg** with a **By** label groups the average across each dimension, producing 1 series per label value in the chart and table.*

#### Use case[​](#use-case-1 "Direct link to Use case")

After filtering by city, you add an aggregation to see the average load time per city over the last 15 minutes. You select **Function → Aggregation → Avg**, then set **By** to the city label. The chart shows a separate trend line per city, making it easy to compare which cities are consistently exceeding your latency threshold.

#### Count[​](#count "Direct link to Count")

Count functions run calculations on a set of values and return a single value.

| Function            | Description                                                                       |
| ------------------- | --------------------------------------------------------------------------------- |
| `count`             | The total number of data points within the selected time range.                   |
| `absent`            | Returns 1 if time series have no data points. Otherwise, returns an empty result. |
| `absent over time`  | Returns 1 if the provided time range contains no raw samples.                     |
| `present over time` | Returns 1 if there is at least 1 raw sample in the provided time range.           |
| `changes`           | The number of times the time series value changed within the provided time range. |
| `resets`            | The number of counter resets within the provided time range.                      |

#### Rollup[​](#rollup "Direct link to Rollup")

Rollup functions aggregate time series data over a specified time range. Once you select the function, select the range to query as a hard number or `${__range}` (the duration of the selected time range).

| Function             | Description                                                                                   |
| -------------------- | --------------------------------------------------------------------------------------------- |
| `average over time`  | Computes the average of time series values over a time range.                                 |
| `max over time`      | Finds the maximum value of time series data over a time range.                                |
| `min over time`      | Determines the minimum value of time series data over a time range.                           |
| `sum over time`      | Calculates the sum of time series values over a time range.                                   |
| `count over time`    | Counts the number of elements with valid numeric values in the time series over a time range. |
| `quantile over time` | Computes the specified quantile of time series data over a time range.                        |

#### Rank[​](#rank "Direct link to Rank")

Rank functions sort, rank, and filter data within your queries.

| Function          | Description                                                             |
| ----------------- | ----------------------------------------------------------------------- |
| `TOPK`            | Retrieves the top K results from a dataset based on a specified metric. |
| `SORT`            | Orders data in ascending order based on the selected metric.            |
| `SORT Descending` | Orders data in descending order based on the selected metric.           |

### Write a query directly[​](#write-a-query-directly "Direct link to Write a query directly")

Switch to **Query** mode to write PromQL expressions directly. The **Result preview** shows the generated query string as you type, so you can verify the syntax before running.

[![Screenshot of Metric Explorer Query mode with a PromQL expression in the code editor and a single aggregated time series in the chart](/assets/images/metric_explorer_query_mode-f8055c6940ea883da4501cae4d2a0a97.webp)](https://docs-docusaurus.kinsta.page/assets/images/metric_explorer_query_mode-f8055c6940ea883da4501cae4d2a0a97.webp)

*Shows a PromQL expression entered in the code editor. The result is a single aggregated series displayed in the chart, with a trend line and last value in the table.*

#### Use case[​](#use-case-2 "Direct link to Use case")

You want to calculate the global average RUM duration, unfiltered by city or source. You switch to **Query** mode and enter `avg(RUM_duration{})`. The chart shows a single line trending upward near the end of the 15-minute window, confirming a recent degradation that is not city-specific.

### Set the time range and automatic refresh[​](#set-the-time-range-and-automatic-refresh "Direct link to Set the time range and automatic refresh")

Use the time range picker to control the window of data Metric Explorer analyzes. The **Quick** tab provides preset options from Last 1 minute to Last 7 Days. Use **Relative**, **Custom**, or **Tag** to define a precise range.

Turn on **Refresh query automatically** to keep the results live. Set the refresh interval (for example, 30 seconds) so the chart and table update without manual intervention.

[![Screenshot of Metric Explorer showing the time range picker with Quick tab options and the Refresh query automatically toggle active](/assets/images/metric_explorer_time_picker_automatic_refresh-73584f49d7f6a58be42db50b614804a7.webp)](https://docs-docusaurus.kinsta.page/assets/images/metric_explorer_time_picker_automatic_refresh-73584f49d7f6a58be42db50b614804a7.webp)

*Shows the time range picker open with **Last 15 Minutes** selected and automatic refresh set to 30 seconds.*

#### Use case[​](#use-case-3 "Direct link to Use case")

You are watching for a RUM duration spike during a deployment that recently rolled out. You set the time range to **Last 15 Minutes** and turn on **Refresh query automatically** at 30 seconds. The chart updates every 30 seconds, so you can watch the trend in real time.

### Combine expressions[​](#combine-expressions "Direct link to Combine expressions")

Select **Add expression** to add a second metric or expression to the query. You can combine 2 expressions using arithmetic: **Division**, **Multiplication**, **Addition**, or **Subtraction**. Use this to derive new signals such as ratios, deltas, or normalized values from multiple metrics.

[![Screenshot of Metric Explorer showing the Add expression panel with operator options Division, Multiplication, Addition, and Subtraction](/assets/images/metric_explorer_add_an_expression-c55a70b549f078440134d5c52656fc83.webp)](https://docs-docusaurus.kinsta.page/assets/images/metric_explorer_add_an_expression-c55a70b549f078440134d5c52656fc83.webp)

*Shows the expression operator menu open with **Division** selected. The first expression uses a filtered `RUM_duration` metric, and the result preview reflects the combined formula.*

#### Use case[​](#use-case-4 "Direct link to Use case")

You want to calculate the ratio of average city duration to the global average to normalize for baseline performance differences. You add a second expression for the global average and set the operator to **Division**. The result shows how much each city deviates from the global average, making outliers stand out clearly.

### Switch the metric without losing your context[​](#switch-the-metric-without-losing-your-context "Direct link to Switch the metric without losing your context")

To change the metric, select a different metric in your query. Metric Explorer keeps your filters and group-by expressions in place, so you can explore one metric across a cluster or environment, then swap to another metric while keeping the same expressions, instead of rebuilding the query each time.

If the new metric does not carry a label you filtered on, the results show no data. This is expected: adjust or remove that filter to see results for the new metric.

## Run a query[​](#run-a-query "Direct link to Run a query")

After you build or edit a query, select **Run query**, or use the Cmd+Enter or Ctrl+Enter keyboard shortcut, to run it. Metric Explorer runs a query only when you ask it to, so you control exactly when a query fires.

### Read query error messages[​](#read-query-error-messages "Direct link to Read query error messages")

When a query cannot run, Metric Explorer shows the specific reason and how to resolve it rather than a generic failure. For example, a series limit reached message means the query matches too many series. Narrow the query with filters, or use [recording rules](https://docs-docusaurus.kinsta.page/user-guides/data-transformation/metric-rules/recording-rules/.md) to pre-aggregate the data.

## Visualize results[​](#visualize-results "Direct link to Visualize results")

After running a query, Metric Explorer displays results in the **Query over time** chart and a table.

The chart shows each series as a color-coded line. Hover over any timestamp to see the exact values for each series at that moment. Use the legend to identify or toggle individual series.

The table lists each series with:

* **Trend**: a trend line showing the shape of each series over the selected period.
* **Label columns**: the label dimensions that differentiate each series.
* **Last value**: the most recent recorded value for the series.

Select a column header to sort the table. Use **Search series** to filter rows by label value.

The table and chart interact: hovering or selecting a row in the table highlights the corresponding series in the chart.

### Filter values from the table[​](#filter-values-from-the-table "Direct link to Filter values from the table")

Hover over a value in the results table to filter it in or out. Metric Explorer adds the filter directly to your query, so you do not edit the expression by hand. Run the query again to apply the new filter.

<!-- -->

### Group by a column from the table[​](#group-by-a-column-from-the-table "Direct link to Group by a column from the table")

Hover over a column header to reveal its menu icon, then select an aggregation to group by that column: avg, sum, max, min, or count. Metric Explorer adds the aggregation to your query, for example `sum(rum_data_cx_docs_total{}) by (context_rating)`, without requiring you to write PromQL.

[![Metric Explorer results table with a column menu open showing avg, sum, max, min, and count aggregation options](/assets/images/metric_explorer_group_by_menu-9f5e1094ed2269b89b4f6f20ebebeaf8.webp)](https://docs-docusaurus.kinsta.page/assets/images/metric_explorer_group_by_menu-9f5e1094ed2269b89b4f6f20ebebeaf8.webp)

Shows the group-by menu on a results-table column, with the avg, sum, max, min, and count options.

#### Use case[​](#use-case-5 "Direct link to Use case")

You are investigating why your documentation site shows degraded performance. You select the `rum_data_cx_docs_total` metric and select **Run query**. The table returns many series across pages, ratings, and countries, so you hover the `good` value in the `context_rating` column and filter it out to focus on the ratings that need attention. To break the remaining volume down, you hover the `context_rating` column and group by it with **Sum**. One grouped row carries most of the volume, so you select its drilldown arrow to open **Drill-down by label dimensions** and find that a single page and country drive the result. You then switch the metric to a related latency metric, keeping the same filter and group-by, to confirm the same page is also slow. This chains the new controls into one path: run on demand, narrow from the table, aggregate without PromQL, drill into the cause, then pivot to a related metric without rebuilding the query.

## Drill down by label dimensions[​](#drill-down-by-label-dimensions "Direct link to Drill down by label dimensions")

Select any row in the table to open the **Drill-down by label dimensions** panel. Use it to understand how the selected series distributes across all available label dimensions without writing additional queries.

When a query is aggregated with a group-by, each grouped row shows a drilldown arrow at the end of the row. Select it to open the panel for that row. Unaggregated queries have nothing to drill into, so the arrow does not appear.

The panel applies the selected series value as a filter to the query and shows a grid of subseries charts, one chart per available label. Each chart displays all values for that label as separate series, so you can compare behavior across dimensions.

[![Drill-down by label dimensions panel showing a grid of subseries charts, one per label such as cx\_source, app\_name, and context\_name](/assets/images/metric_explorer_drilldown-5a2f87199b588081fa67ee37d47417ca.webp)](https://docs-docusaurus.kinsta.page/assets/images/metric_explorer_drilldown-5a2f87199b588081fa67ee37d47417ca.webp)

Shows the Drill-down by label dimensions panel with one subseries chart per label.

To control which labels appear in the grid, use **Labels to explore** in the panel. You can add or remove labels, with up to 30 labels visible at a time.

Select **Update main screen** to apply the current drilldown selections back to the main query view.

## Explore metric labels and values[​](#explore-metric-labels-and-values "Direct link to Explore metric labels and values")

Before running a query, you can use [Browse Metric Labels and Values](https://docs-docusaurus.kinsta.page/user-guides/data_exploration/metric-explorer/.md) to browse available metrics, labels, and label values, and generate a starting PromQL query without prior knowledge of the metric structure.

## Permissions[​](#permissions "Direct link to Permissions")

| Permission                       | Action                                 |
| -------------------------------- | -------------------------------------- |
| `METRICS.DATA-API#HIGH:READDATA` | Access Metric Explorer and run queries |

## Learn more[​](#learn-more "Direct link to Learn more")

* [Browse Metric Labels and Values](https://docs-docusaurus.kinsta.page/user-guides/data_exploration/metric-explorer/.md)

## Next steps[​](#next-steps "Direct link to Next steps")

Navigate metrics, labels, and label values without writing PromQL in [Browse metric labels and values](https://docs-docusaurus.kinsta.page/user-guides/data_exploration/metric-explorer/.md).
