Monitor runs

ℹ️

Private preview

Composable dashboards and the metrics API are in private preview: available to invited accounts, and features may change. See Integration and feature lifecycles for what this means, and reach out to your account representative to request access.

Overview

The runs of your metric, custom SQL, validation and agent monitors as the monitor chart shows them, with their value, threshold and outcome. Private preview: contact your Monte Carlo account team to inquire. Some monitors are not loaded yet, such as legacy monitors and monitors with very many segments.

What it answers

  • The run history of a monitor with value and thresholds.
  • Which runs breached or were anomalies, per monitor, monitor type, metric, field, segment and time.
  • How many runs, breaches and anomalies.
🚧

Not covered here

  • When a monitor started erroring and the error text (only the current error message, in the Coverage metrics).
  • Aggregates per domain, data product, asset tag, monitor tag (team) or audience.
  • Runs older than the window kept for the series.

Try asking

Runs and breaches per validation monitor over the last 30 days, most breaches first

The query your agent runs:

  • Metrics: monitor_run_item_count, monitor_run_item_breach_count
  • Grouped by: monitor, monitor__monitor_name
  • Filter: monitor__monitor_type is validation
  • Filter: monitor__is_monitor_deleted is false
  • Filter: monitor_run_item__is_gapfilled is false
  • Filter: metric_time__day on or after 30 days ago
  • Sorted by: monitor_run_item_breach_count, highest first
Request (JSON)
{
  "metrics": [
    "monitor_run_item_count",
    "monitor_run_item_breach_count"
  ],
  "group_by": ["monitor", "monitor__monitor_name"],
  "filters": [
    {
      "field": "monitor__monitor_type",
      "op": "in",
      "values": ["validation"]
    },
    {
      "field": "monitor__is_monitor_deleted",
      "op": "in",
      "values": [false]
    },
    {
      "field": "monitor_run_item__is_gapfilled",
      "op": "in",
      "values": [false]
    },
    {
      "field": "metric_time__day",
      "op": "gte",
      "values": ["<30 days ago>"]
    }
  ],
  "order_by": [
    {
      "field": "monitor_run_item_breach_count",
      "descending": true
    }
  ]
}

Metrics

Every metric here groups by Monitor, Monitor run, Monitored metric, Segment, Warehouse, and time.

MetricWhat it counts
monitor_run_item_anomaly_countRuns that raised an alert: anomalies on learned (ML) thresholds and alerted breaches on set ones.
monitor_run_item_anomaly_rateShare of runs of monitors with learned (ML) thresholds that were flagged as anomalies; gap-filled points are left out.
monitor_run_item_breach_countRuns of monitors with a set threshold that broke it.
monitor_run_item_breach_rateShare of runs of monitors with a set threshold that broke it; gap-filled points and runs without a threshold are left out.
monitor_run_item_countRuns (measured points) in the selection.

Good to know

Grouping and filtering for all metrics, including why the numbers per domain, data product or tag do not add up to the account's: Before you group or filter.

  • Runs: Each run is a point on a monitor's chart. Group by monitor_run_item for one row per run, and filter on metric_time__day (the day of the run) to bound the time.
  • Outcome: Breach or pass for monitors with a set threshold, anomaly or no anomaly for monitors with learned (ML) thresholds, track for series without an alert condition, unknown for a set threshold with no value or no bound to compare it to.
  • Rates: monitor_run_item_breach_rate for set thresholds, monitor_run_item_anomaly_rate for learned ones.
  • Thresholds: monitor_run_item__monitor_run_item_lower_threshold and monitor_run_item__monitor_run_item_upper_threshold are the band the monitor computed for that run; where it computed none, the threshold set on the monitor now, not when it ran. EQ and NEQ monitors have no bound; their value is parent_time_series__parent_time_series_threshold.
  • Gap-filled points: Drawn on the chart but not runs; filter monitor_run_item__is_gapfilled is false to count runs.
  • History: 30 days of runs for monitors that run more often than hourly, 60 days for hourly to 4-hourly, 90 days for daily, a year for weekly and 3 years for monthly; at most 20,000 runs per series.
  • Groupings: Domains, data products and tags are not here; filter on the monitors of a domain, data product or tag, listed with the Coverage metrics. A bulk or generated monitor has no runs of its own; they are on the monitors it creates. Take the runs filtered on monitor__monitor_uuid and, in a second query, on monitor__parent_monitor_uuid, both with the listed monitors.

Examples

Show the runs of the validation monitors over the last 30 days with value, threshold and breach

  • Metrics: monitor_run_item_count
  • Grouped by: monitor_run_item, monitor, monitor__monitor_name, monitor_run_item__monitor_run_item_measured_at__second, monitor_run_item__monitor_run_item_value, parent_time_series__parent_time_series_operator, monitor_run_item__monitor_run_item_lower_threshold, monitor_run_item__monitor_run_item_upper_threshold, parent_time_series__parent_time_series_threshold, monitor_run_item__is_monitor_run_item_breach
  • Filter: monitor__monitor_type is validation
  • Filter: monitor__is_monitor_deleted is false
  • Filter: monitor_run_item__is_gapfilled is false
  • Filter: metric_time__day on or after 30 days ago
Request (JSON)
{
  "metrics": ["monitor_run_item_count"],
  "group_by": [
    "monitor_run_item",
    "monitor",
    "monitor__monitor_name",
    "monitor_run_item__monitor_run_item_measured_at__second",
    "monitor_run_item__monitor_run_item_value",
    "parent_time_series__parent_time_series_operator",
    "monitor_run_item__monitor_run_item_lower_threshold",
    "monitor_run_item__monitor_run_item_upper_threshold",
    "parent_time_series__parent_time_series_threshold",
    "monitor_run_item__is_monitor_run_item_breach"
  ],
  "filters": [
    {
      "field": "monitor__monitor_type",
      "op": "in",
      "values": ["validation"]
    },
    {
      "field": "monitor__is_monitor_deleted",
      "op": "in",
      "values": [false]
    },
    {
      "field": "monitor_run_item__is_gapfilled",
      "op": "in",
      "values": [false]
    },
    {
      "field": "metric_time__day",
      "op": "gte",
      "values": ["<30 days ago>"]
    }
  ]
}

More questions these metrics answer:

  • Show the last 30 days of runs of monitor X with value and threshold.
  • Which runs of monitor X breached last week?
  • Export the run history of the monitors of team Y.

See also


Did this page help you?