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:
- A Filter Bar at the top for scoping data
- A Summary Metrics row for at-a-glance KPIs
- A Job Duration Distribution histogram
- 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
- 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.
- Select one or more values - Click a value to toggle it. Multiple values within the same filter type are applied as an OR condition.
- 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.
- 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.
| Metric | Description | Calculation |
|---|---|---|
| Total Jobs | Count of all job executions matching the active filters and time range. | Simple count |
| Average Runtime | The mean wall-clock duration across all matching job executions, measured from job start to job completion. | sum(duration) / count |
| Failure Rate | The 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:
| Percentile | Definition | Practical Use |
|---|---|---|
| Median (P50) | 50% of jobs complete at or under this duration. | Represents typical job performance. |
| P90 | 90% of jobs complete at or under this duration. | Identifies your near-worst-case baseline. Use as an SLO target. |
| P95 | 95% of jobs complete at or under this duration. | Exposes the tail of slow outliers not visible in the median. |
| P99 | 99% 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.
| Option | Window | Chart Granularity |
|---|---|---|
1h | Last 1 hour | 5-minute buckets |
2h | Last 2 hours | 10-minute buckets |
6h | Last 6 hours | 30-minute buckets |
12h | Last 12 hours | 1-hour buckets |
1D | Last 24 hours | 1-hour buckets |
7D | Last 7 days | 6-hour buckets |
1M | Last 30 days | Daily 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.