Skip to main content
OVR reports metrics on builds, queues, snapshot captures, and worker health. The web app and the worker serve them in the OpenMetrics text format, which Prometheus, Grafana Alloy, the Datadog Agent, the OpenTelemetry Collector, and most other monitoring tools can collect.

Turn on metrics

Metrics are off by default. Set OVR_METRICS_PORT on both the web app and the worker, and each serves its metrics at /metrics on that port. The metrics port is separate from the dashboard’s, so it isn’t exposed through your ingress or load balancer. If the port can’t be used, OVR logs an error and keeps running without metrics. With Helm, set metrics.enabled:
If you use networkPolicy.enabled, the chart allows traffic to the metrics port. Set networkPolicy.metrics.from to only allow your monitoring tool.

Collect metrics

Prometheus

With the Prometheus Operator or kube-prometheus-stack, the chart can create the scrape config, alerting rules, and a Grafana dashboard:
Without the Operator, add a scrape job for port 9464 on the web and worker. The chart also adds prometheus.io/scrape annotations to both pods, for setups that discover targets that way. The alerting rules can be added to your rule_files.

Grafana

Import the OVR dashboard and pick your Prometheus data source. It covers build throughput and success rate, queue backlogs, capture times, and worker memory.

Datadog

The Datadog Agent collects the metrics with its OpenMetrics check. On Kubernetes, add an autodiscovery annotation to each pod:
Metrics arrive under the ovr. namespace, for example ovr.builds_finished.count. Outside Kubernetes, add the same instance to the Agent’s openmetrics.d/conf.yaml.

Other tools

Point any tool that reads Prometheus or OpenMetrics endpoints at port 9464 on the web app and the worker, for example Grafana Alloy’s prometheus.scrape or the OpenTelemetry Collector’s prometheus receiver.

Available metrics

Scrape both the web app and the worker. Counters and histograms add up across instances, so sum them. Gauges marked deployment-wide report the same value from every web replica, so use max to avoid counting them more than once.

Builds

Finish reasons

Queues

Snapshots

Workers and web app

Autoscale workers

With Prometheus and KEDA, you can scale workers on the number of snapshot captures waiting to start. This replaces the chart’s default Redis trigger, and works with the default round-robin capture queue policy: