> ## Documentation Index
> Fetch the complete documentation index at: https://docs.insaion.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Compare panel

> Put two groups of robots side by side, two tag values or two time ranges, and see which metrics moved and whether for better or worse.

The Compare panel answers questions such as "Is software 1.4.2 better than 1.4.1?" or "Did the fleet get worse after last week's rollout?". It takes two groups of robots, A and B, measures the same metrics on both, and ranks the metrics by how much B differs from A.

The Compare panel is available on the Starter plan and above.

![Compare panel screenshot](https://mintcdn.com/insaion/VXH-ojP4YQTVK3OB/assets/monitoring/compare-panel.png?fit=max\&auto=format\&n=VXH-ojP4YQTVK3OB\&q=85\&s=bdbfcccb0de18d535011e701a18bd55e)

## Two ways to compare

| Mode | A | B | Use it for |
| - | - | - | - |
| **Two tag values** | Robots with one value of a tag | Robots with another value of the same tag | Releases, customers, hardware revisions, sites |
| **Before and after** | One time range | Another time range | The effect of a rollout, a config change or a new site layout |

**Two tag values** compares both groups over the dashboard's time range. Tags count as they were at each moment, so a robot upgraded halfway through counts for `1.4.1` until the upgrade and for `1.4.2` after it.

**Before and after** compares two periods. Each side can use:

* **Previous period**: the same length, right before the dashboard's range. This is the default for A.
* **Dashboard range**: the dashboard's current time range. This is the default for B.
* **Custom period**: any range from the time picker, either fixed dates or a relative range such as the last 7 days.

In this mode the tag is optional. Pick a tag and one value to compare only those robots, or leave it empty to compare every robot in scope.

A is always the baseline. B is compared to A.

## Add a Compare panel

1. Open a dashboard and click **Add panel**, then choose **Compare**.
2. Under **Compare**, choose **Two tag values** or **Before and after**.
3. Pick a **Tag** (any device tag, `site`, or a detected tag such as `agent.version`).
4. For each side, pick a value (**Two tag values**) or a time range (**Before and after**).
5. Optionally narrow both sides with **Scope**, for example `site:madrid`. The dashboard's variables and filters apply too.
6. Optionally tick **Same robots only** to keep only robots that reported on both sides, so a different fleet mix does not skew the result.
7. Choose the metrics, then save.

A line under the sides spells out what is being compared, for example "Robots with software\_version:1.4.2 (B) against robots with software\_version:1.4.1 (A), over the dashboard's time range."

![Compare editor screenshot](https://mintcdn.com/insaion/VXH-ojP4YQTVK3OB/assets/monitoring/compare-editor.png?fit=max\&auto=format\&n=VXH-ojP4YQTVK3OB\&q=85\&s=25fffa85a7fc570609e218e3e924d251)

### From a chart grouped by tag

When a Timeseries panel groups its lines by a device tag, its panel menu offers **Compare by \<key>**. It opens a new Compare panel already set to that tag.

## Metrics

A new panel starts with these metrics:

| Metric | What it measures |
| - | - |
| Incidents per 100 device-hours | Incidents opened on the group's robots while they were in the group |
| CPU p95 | 95th percentile of total CPU usage |
| Memory p95 | 95th percentile of memory used, in percent |
| ROS topic stalls per device-hour | 5 s windows where a topic's longest gap was over three times its average gap, so each topic is judged by its own rhythm |
| Lost ROS messages per device-hour | Messages a publisher sent that never reached the agent |

You can also turn on:

| Metric | What it measures |
| - | - |
| ROS message age p95 | How long messages took from publisher to agent, 95th percentile |
| ROS topic rate dips per device-hour | Minutes a ROS topic published at less than half its usual rate |
| Recording upload failures | Share of recording uploads that failed, leaving out a full storage quota |

The ROS topic metrics use the agent's topic statistics and need agent 1.2.0 or later. Lost messages and message age also need ROS 2 Jazzy or later.

### Custom metrics

Click **Add metric** to compare any numeric field from host metrics, OpenTelemetry or ROS 2 topics. For each one set:

* **Topic** and **Field**.
* **Aggregation**: Average, Median, p95, p99, Minimum, Maximum, or Samples per device-hour.
* **Direction**: **Lower is better**, **Higher is better** or **No direction**. The direction decides whether a change is colored as better or worse.
* **Label** (optional), shown in the table instead of the field name.

A panel holds up to 20 metrics.

## Read the results

![Compare table row chart screenshot](https://mintcdn.com/insaion/VXH-ojP4YQTVK3OB/assets/monitoring/compare-row-chart.png?fit=max\&auto=format\&n=VXH-ojP4YQTVK3OB\&q=85\&s=0acd19b3abd43656405b55f347df3139)

The header shows each side with its number of devices and device-hours, so you can judge how much data stands behind each number. If one side has no reporting devices, the panel says so and that side's values are empty.

The table has one row per metric:

* **A** and **B**: the metric on each side.
* **B vs A**: how B differs from A, relative to A, for example `+12%`. A metric that moved away from zero reads **up from 0** or **down from 0**.

Rows are ranked by how much they moved. Green means B is better, red means B is worse, and gray means the change is under 5% or the metric has no direction.

**Click a row** to plot that metric over time for A and B. In **Two tag values** both lines share the real time axis. In **Before and after** both periods start at zero on a relative axis, so you can lay one week over the other.

**Ask Copilot why** sends the table to [Copilot](https://docs.insaion.com/copilot/incident-analysis.md) as the context of a question, to help explain what changed.

If the scope includes conditions on data tags (such as `cpu:cpu-total`), the footer says how many were not applied: data tags filter the rows of one metric, not which robots are compared.

## Tips

* Compare like with like. Use **Scope** or **Same robots only** when the two groups differ in site, customer or workload.
* Check the device-hours in the header before trusting a large change. A few robots for a few hours can swing a percentage a lot.
* For a rollout, set `software_version` with the real rollout time on the [device tags](https://docs.insaion.com/devices/tags.md), then use **Two tag values** on that key.
* Add a Compare panel next to a Timeseries panel with **Show Tag Changes** on, to see both the summary and the moment things changed.

If something's unclear or you hit a blocker, contact us on

[Discord](https://discord.gg/ZJMPfMmu3S)

or [[contact@insaion.com](mailto:contact@insaion.com)](mailto:contact@insaion.com)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.