# Metric monitor page

Every monitor in Soda has its own dedicated detail page. This page is designed to help you explore the monitor's history, understand its behavior over time, and take action when needed. From here, you can investigate anomalies, give feedback to improve the detection algorithm, create incidents, and fine-tune the monitor's sensitivity or configuration.

The page consists of two main components:

1. **An interactive plot** that visualizes metric trends, anomalies, and historical context
2. **A results table** that lists all metric values and events visible in the plot

## **The Interactive Monitor Plot**

The interactive plot gives you a time-based view of how the monitor metric has evolved. It combines metric values, expected behavior, and any detected anomalies in a single visual.

<figure><img src="https://1123167021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FA2PmHkO5cBgeRPdiPPOG%2Fuploads%2FbEQu1QSvzdvPxrwTghTe%2Fimage.png?alt=media&#x26;token=09f0d74c-b79f-4016-b4d7-64d073d6e690" alt=""><figcaption></figcaption></figure>

#### **Navigating the Plot**

* **Select a time window** using the range slider below the plot to zoom in or out on a specific period

<figure><img src="https://1123167021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FA2PmHkO5cBgeRPdiPPOG%2Fuploads%2FJInpimvQWIbAz6wqrR7A%2Ftime_window.gif?alt=media&#x26;token=02206fca-17a3-4235-b27e-785510a76d6d" alt=""><figcaption></figcaption></figure>

* **Click and drag** to zoom into a custom time range

<figure><img src="https://1123167021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FA2PmHkO5cBgeRPdiPPOG%2Fuploads%2FnlSKZaid0yCPgtVuwRPR%2Ftime_window_select.gif?alt=media&#x26;token=87deac07-847f-455c-bd55-827d0a3a6e25" alt=""><figcaption></figcaption></figure>

* **Hover over data points** to view detailed information for each result

<figure><img src="https://1123167021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FA2PmHkO5cBgeRPdiPPOG%2Fuploads%2F8K5B6MQ5uJGe4PLIVbjv%2Fplot_hover.gif?alt=media&#x26;token=0d32cee2-250b-4005-b486-48b69d4f1ac9" alt=""><figcaption></figcaption></figure>

#### **What the plot shows**

* **Expected range:** the shaded area that represents the predicted normal behavior, as defined by the anomaly detection model
* **Measurement**: the actual metric value for each scan
* **Anomaly:** points marked when the metric falls outside the expected range and is flagged by the algorithm
* **Missing:** scans where no metric could be collected, typically due to unavailable data or delayed scans
* **Feedback:** shows if the user provided feedback on a result (e.g. confirmed or dismissed an anomaly)
* **Configuration change:** visual markers indicating when the monitor’s configuration was updated

<figure><img src="https://1123167021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FA2PmHkO5cBgeRPdiPPOG%2Fuploads%2FswQAJsB58brYc7eg7sPx%2Fimage.png?alt=media&#x26;token=6fc0ef43-8a66-454d-84ea-a5004d75b087" alt=""><figcaption></figcaption></figure>

#### **Key events in the plot**

* **Monitor created:** marks the date the monitor is created
* **Initial configuration:** shows the starting settings used when the monitor was first enabled
* **Configuration updated:** marks changes to thresholds, exclusions, or sensitivity applied over time

## **Using the Results Table**

Below the plot, the table lists all historical scan results, including metric values, anomaly status, and any user actions (like feedback or incidents). The plot is aligned with the table, so each data point in the plot directly corresponds to a result in the table

This makes it easy to correlate visual trends with specific events, compare changes, and drill into the context of any anomaly or data quality issue.

With the three dots it is possible to give feedback to the anomaly detection algorithm, in bulk for multiple results at once or create and link the results to an incident

<figure><img src="https://1123167021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FA2PmHkO5cBgeRPdiPPOG%2Fuploads%2FllGFTKs9Wf9beWF7cU4C%2FScreenshot%202025-06-06%20at%2019.30.50.png?alt=media&#x26;token=28b51123-2e38-4395-9e5d-4e022c7dc0b2" alt=""><figcaption></figcaption></figure>

## How to fine-tune Metric Monitoring

Soda's Observability tools work out of the box with predefined baselines, but you can fine-tune them to your specific needs. Do this from the page for each specific metric.

### Set Threshold Strategy

By default Soda uses an adaptive statistical method, but you can control which sides of the expected range should trigger an anomaly alert:

<figure><img src="https://1123167021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FA2PmHkO5cBgeRPdiPPOG%2Fuploads%2F1KQeSAuhd77Ayl65PmoB%2Fthreshold_strategy.gif?alt=media&#x26;token=499a0db4-c5f0-47d5-9150-fef4944739ed" alt=""><figcaption></figcaption></figure>

1. **Open the panel**

Click on "Set Threshold Strategy" button on the metric of your choice

<figure><img src="https://1123167021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FA2PmHkO5cBgeRPdiPPOG%2Fuploads%2FtLMxDRHZk0rhFISem3co%2Fimage.png?alt=media&#x26;token=8254d2bf-1cdf-42c5-9e65-db0b7623bdc8" alt=""><figcaption></figcaption></figure>

2. **Choose your alert ranges**

* **Upper range**: when checked, Soda will flag any metric value that exceeds the upper bound of its statistical baseline.
* **Lower range**: when checked, Soda will flag any metric value that falls below the lower bound.

<figure><img src="https://1123167021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FA2PmHkO5cBgeRPdiPPOG%2Fuploads%2FmefveEumu99j7z96AKG7%2Fimage.png?alt=media&#x26;token=0e25e1a6-70af-4c98-8dc8-08a0660d6dc0" alt=""><figcaption></figcaption></figure>

3. **Apply your settings**

Click **Set Threshold Strategy** to save.

With this simple toggle interface you can, for example, watch only for unexpectedly high values, only for drops below your baseline, or both.

### Set Exclusion Values

Exclude values from monitoring to tell Soda which specific values or ranges should be ignored when evaluating anomalies (e.g. test rows, manual overrides). The available inputs depend on the metric type.

1. **Open the panel**\
   Click on **Set Exclusion Values** button on the metric of your choice

<figure><img src="https://1123167021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FA2PmHkO5cBgeRPdiPPOG%2Fuploads%2Fe70IzhMl75yvSPlolscb%2Fimage.png?alt=media&#x26;token=3b641cdc-e898-473d-a241-5f00cac52627" alt=""><figcaption></figcaption></figure>

2. **Define your exclusions**\
   Click on **+ Add exclusion**

<figure><img src="https://1123167021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FA2PmHkO5cBgeRPdiPPOG%2Fuploads%2FOntcRHL1DoZDrla7qzJG%2Fimage.png?alt=media&#x26;token=9d51cf85-86d3-4d80-a7bb-4d6ec859c7c2" alt=""><figcaption></figcaption></figure>

* **Numeric metrics** (Total row count, Total row count change, Partition row count):
  * **Type**: **Value** or **Value range**
  * **Value**: enter the exact metric value (e.g. `205`) or, for a range, specify both lower and upper bounds.
* **Time-based metrics** (Last modification time, Most recent timestamp):
  * **Type**: **Value** or **Value range**
  * **Value**: enter the cutoff you want to ignore (e.g. `0 days, 10 hours, 49 minutes`) or, for a range, specify both lower and upper bounds.
* **Schema changes**: exclusions are not supported for schema-drift monitors.

<figure><img src="https://1123167021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FA2PmHkO5cBgeRPdiPPOG%2Fuploads%2Fujgrs2SAtgsKnDdAOFnZ%2Fimage.png?alt=media&#x26;token=d86fe7ea-4c87-40ea-8d56-a46a84d0c8c4" alt=""><figcaption></figcaption></figure>

You can stack multiple rules by clicking **+ Add exclusion**.

3. **Apply**\
   Click **Set Exclusion Values** to save your rules.

{% hint style="warning" %}
This will not retroactively change past results. It only affects future anomaly evaluations.
{% endhint %}

### Set Sensitivity

Soda uses a statistical baseline to define an “expected range” for anomaly detection. You can adapt how tight or loose that range is.

<figure><img src="https://1123167021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FA2PmHkO5cBgeRPdiPPOG%2Fuploads%2F1ta9TgcrnY03px9Wvmtp%2Fsensitivity%20(2).gif?alt=media&#x26;token=dab2af70-d565-402e-b1d5-a7dc56d29ab6" alt=""><figcaption></figcaption></figure>

1. **Open the panel**\
   Click on **Set Sensitivity** button on the metric of your choice

<figure><img src="https://1123167021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FA2PmHkO5cBgeRPdiPPOG%2Fuploads%2FynOP9wr7y1jEwvtAVMke%2Fimage.png?alt=media&#x26;token=37650bc7-81ef-4647-8c3c-e795fb235172" alt=""><figcaption></figcaption></figure>

2. **Adjust the sensitivity**

* **Provide a z-score**: enter a value between **0.3** and **6** to control the exact width of the expected range OR use the slider to drag between **Narrow** (lower z-score) and **Wide** (higher z-score).
* **Default**: `z = 3`

<figure><img src="https://1123167021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FA2PmHkO5cBgeRPdiPPOG%2Fuploads%2FPgTtkfPYt4xyC8K5wuxU%2Fimage.png?alt=media&#x26;token=8d4c0ec7-3796-45d3-9998-435f422bceea" alt=""><figcaption></figcaption></figure>

Preview how changing sensitivity widens or narrows the gray “expected” band in the plot

3. **Apply**

Click **Apply** sensitivity to save.

{% hint style="warning" %}
This will not retroactively change past results. It only affects future anomaly evaluations.
{% endhint %}

### Give feedback to improve detection

Our home-brewed anomaly detection algorithm draws trends from historical data, but it can also learn from your input as you give it feedback.

<figure><img src="https://1123167021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FA2PmHkO5cBgeRPdiPPOG%2Fuploads%2FujGXlrRyaxl7RbAYRPFy%2Fimage.png?alt=media&#x26;token=a571680b-5371-4b69-859b-9f046fe913f9" alt=""><figcaption></figcaption></figure>

When a monitor flags an anomaly you can:

1. **Mark as expected**\
   Teach Soda that this deviation is acceptable: future similar variations will no longer trigger alerts.

<figure><img src="https://1123167021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FA2PmHkO5cBgeRPdiPPOG%2Fuploads%2FTx6Mh5gsfoVAFaQcYBQx%2Fmark_as_expected.gif?alt=media&#x26;token=801f2bfe-0a65-46d9-96c5-9efb4981bc30" alt=""><figcaption></figcaption></figure>

2. **Mark as anomaly**\
   Explicitly flag a point as an anomaly, even if it fell inside the baseline. This helps refine your alert definitions.

<figure><img src="https://1123167021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FA2PmHkO5cBgeRPdiPPOG%2Fuploads%2FUH91Ksi9O2krWKHXHhb5%2Fmark_as_anomaly.gif?alt=media&#x26;token=dd1c61e2-2132-4a5f-a80d-2f0c7a11daaf" alt=""><figcaption></figcaption></figure>

### Create incidents

* **Create new incident**\
  Create a ticket in your incident management tool directly from the panel.

<figure><img src="https://1123167021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FA2PmHkO5cBgeRPdiPPOG%2Fuploads%2FKiHQtAK373E9Iljs84QY%2Fcreate_incident.gif?alt=media&#x26;token=f1e73f5a-4ffa-46c6-8fb6-c9a22f918151" alt=""><figcaption></figcaption></figure>

* **Link to existing incident**\
  Attach this scan to a ticket in your external system (Jira, ServiceNow, PagerDuty, etc.), keeping engineering triage in one place.

<figure><img src="https://1123167021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FA2PmHkO5cBgeRPdiPPOG%2Fuploads%2FKjwqMHEMYNXuJHF1yfOQ%2Flink_to_incident.gif?alt=media&#x26;token=01f884ad-c385-4d31-8f75-1120d29b3c76" alt=""><figcaption></figcaption></figure>

* **Bulk feedback**\
  More than one scan can be added to an incident or feedback. Simply check the boxes of the scans you want to add.

<figure><img src="https://1123167021-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FA2PmHkO5cBgeRPdiPPOG%2Fuploads%2FerjFRXEsiegX8mQiZlPJ%2Fbulk_feedback.gif?alt=media&#x26;token=22bec08a-7f16-4425-8184-8a39a3878726" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
All feedback and incident links become part of the scan history, providing an auditable trail for both data engineers and business stakeholders.
{% endhint %}

<br>

***

{% if visitor.claims.plan === 'free' %}
{% hint style="success" %}
You are **logged in to Soda** and seeing the **Free license** documentation. Learn more about [documentation-access-and-licensing](https://docs.soda.io/reference/documentation-access-and-licensing "mention").
{% endhint %}
{% endif %}

{% if visitor.claims.plan === 'teams' %}
{% hint style="success" %}
You are **logged in to Soda** and seeing the **Team license** documentation. Learn more about [documentation-access-and-licensing](https://docs.soda.io/reference/documentation-access-and-licensing "mention").
{% endhint %}
{% endif %}

{% if visitor.claims.plan === 'enterprise' || visitor.claims.plan === 'enterpriseUserBased' %}
{% hint style="success" %}
You are **logged in to Soda** and seeing the **Enterprise license** documentation. Learn more about [documentation-access-and-licensing](https://docs.soda.io/reference/documentation-access-and-licensing "mention").
{% endhint %}
{% endif %}

{% if !(visitor.claims.plan === 'free' || visitor.claims.plan === 'teams' || visitor.claims.plan === 'enterprise' || visitor.claims.plan === 'enterpriseUserBased') %}
{% hint style="info" %}
You are **not logged in to Soda** and are viewing the default public documentation. Learn more about [documentation-access-and-licensing](https://docs.soda.io/reference/documentation-access-and-licensing "mention").
{% endhint %}
{% endif %}
