Analytics

Comprehensive view of your CI job performance over time.

The Analytics page provides a comprehensive view of your CI job performance over time. Use it to monitor job throughput, diagnose elevated failure rates, identify slow workflows, and understand infrastructure utilization across repositories, runners, and team members.

Overview

The Analytics page renders live data scoped to your organization and reflects all job activity within the selected time range.

The page is divided into four sections:

  1. A Filter Bar at the top for scoping data
  2. A Summary Metrics row for at-a-glance KPIs
  3. A Job Duration Distribution histogram
  4. Four Trend Charts showing job runs, failure rate, total time, and P90 duration over time

All charts and metrics on this page respect the active filter state and the selected time range simultaneously. Changing either will re-render all visualizations.

Filters

The Filter Bar appears at the top of the Analytics page and allows you to scope all metrics and charts to a specific subset of your job activity. Filters are additive - applying multiple filters narrows results to jobs that satisfy all selected criteria.

Status

Limits data to jobs of a specific outcome. Useful for isolating failure patterns or reviewing only successful run performance.

Options: success, failed

Repository

Scopes all metrics to one or more repositories within your organization. Populated dynamically from repositories that have run at least one job within the selected time range.

Runner

Filters by runner configuration, vCPU count and OS specification. Use this to compare performance characteristics across different machine sizes.

Options: 2vcpu, 4vcpu, 8vcpu, 16vcpu, ubuntu-24.04-4

Users

Scopes data to jobs triggered by a specific team member. Only members who have triggered at least one job within the active time range will appear in the dropdown.

The Users filter only surfaces team members who have triggered at least one job within the currently selected time range. Members with no activity in that period will not appear in the dropdown.

Applying Filters

  1. Open a filter dropdown - Click any filter chip in the Filter Bar: Status, Repository, Runner, or Users. A dropdown will appear listing all available values for that dimension.
  2. Select one or more values - Click a value to toggle it. Multiple values within the same filter type are applied as an OR condition.
  3. Charts update automatically - All summary metrics, the distribution histogram, and every trend chart refresh immediately to reflect the filtered dataset. No page reload is required.
  4. Clear filters - Click the x on an active filter chip to remove it, or use Clear all to reset the entire filter state and return to the full organization view.

Summary Metrics

Three summary metric cards are displayed at the top of the Analytics page, providing an at-a-glance snapshot of the filtered dataset within the selected time range.

MetricDescriptionCalculation
Total JobsCount of all job executions matching the active filters and time range.Simple count
Average RuntimeThe mean wall-clock duration across all matching job executions, measured from job start to job completion.sum(duration) / count
Failure RateThe proportion of job executions that completed with a non-success exit status, expressed as a percentage.failed / total x 100

Job Duration Distribution

The Job Duration Distribution histogram visualizes how job execution times are spread across duration buckets. Each bar represents a time interval (e.g., 0–0.5 min, 0.5–1 min), with bar height indicating the number of jobs completed within that interval.

Bars are color-coded to distinguish failed jobs (shown in red) from successful jobs (shown in green), stacked vertically within each bucket. This makes it easy to spot duration ranges where failures are disproportionately concentrated.

Percentile Markers

Four percentile markers are displayed above the histogram as reference values derived from the full distribution of matching jobs:

PercentileDefinitionPractical Use
Median (P50)50% of jobs complete at or under this duration.Represents typical job performance.
P9090% of jobs complete at or under this duration.Identifies your near-worst-case baseline. Use as an SLO target.
P9595% of jobs complete at or under this duration.Exposes the tail of slow outliers not visible in the median.
P9999% of jobs complete at or under this duration.Surfaces extreme outliers that may indicate infrastructure or configuration issues.

A large gap between the Median and P99 typically indicates that a small number of jobs are running significantly longer than average. Applying the Repository or Runner filter while observing this gap can help isolate the source.


Trend Charts

Below the duration distribution, four line charts display time-series trends across the selected time range. Each chart shares the same x-axis (time), enabling visual correlation between metrics.

Job Runs

Displays the total number of job executions per time bucket across the selected period. Spikes in this chart indicate periods of elevated CI activity, corresponding to release cycles, merge queues, or scheduled batch workflows.

Failure Rate

Shows the percentage of jobs that failed within each time bucket. Cross-reference this chart with Job Runs to distinguish genuine instability from noise caused by low job volume.

Total Duration

Represents the cumulative wall-clock time consumed by all job executions within each time bucket, expressed in minutes. A sustained increase in Total Duration without a proportional increase in Job Runs indicates that individual jobs are becoming slower.

P90 Duration

Tracks the 90th percentile job duration over time. Unlike the mean, P90 is resistant to the influence of a small number of very fast jobs and provides a more reliable signal of worst-case user-facing performance.


Time Ranges

The time range selector is located in the top-right corner of the Analytics page.

OptionWindowChart Granularity
1hLast 1 hour5-minute buckets
2hLast 2 hours10-minute buckets
6hLast 6 hours30-minute buckets
12hLast 12 hours1-hour buckets
1DLast 24 hours1-hour buckets
7DLast 7 days6-hour buckets
1MLast 30 daysDaily buckets

Common Use Cases

Investigating a spike in failures

Set the time range to 7D and observe the Failure Rate chart to locate the exact date when failures increased. Then apply the Repository filter to narrow down which repository is responsible. If the failure rate is isolated to a single repository, apply the Users filter to identify whether a specific commit author is associated with the regression.

Comparing runner performance

Apply the Runner filter and select a single runner configuration (e.g., 4vcpu). Note the P90 Duration and Average Runtime summary values. Then switch the runner filter to a different configuration (e.g., 8vcpu) and compare.

Tracking CI performance over a release cycle

Set the time range to 1M and apply the Repository filter for your primary release repository. Use the Job Runs and Total Duration charts together to identify periods of high merge activity and assess whether your CI infrastructure scaled appropriately.

Identifying slow outliers

In the Job Duration Distribution histogram, locate buckets in the long-tail of the distribution that contain a disproportionate number of jobs. Apply the Status filter set to success to rule out failures and focus exclusively on slow-passing jobs. These are candidates for optimization.


Pricing

No Additional Cost

Run History is included in all Monk CI plans at no extra charge. For details on overall platform pricing, visit the Pricing page.