Request an exact quote
Monitoring migration path

From New Relic to Prometheus

Moving New Relic APM to Prometheus + OpenTelemetry + Tempo, why per-user pricing drives the move, re-instrumentation, NRQL-to-PromQL, and dual-running.

Effort
Medium
Est. timeline
~15 wks
Prometheus model
Free (self-hosted)
Open source
Yes
▶ Model your savings in the interactive calculator

New Relic is APM-first, and its pricing, per full-platform user plus data ingest, penalizes exactly what observability should encourage: giving the whole team access. Teams that want broad, un-metered access and predictable cost move to a self-hosted Prometheus core (for metrics), usually paired with OpenTelemetry, Tempo (traces), and Loki/Grafana (logs and dashboards). This guide focuses on the New-Relic-specific angles.

Why teams leave New Relic specifically

Two drivers, distinct from Datadog:

  • Per-user seat pricing limits who can log in, counterproductive for a tool everyone should use during incidents. Self-hosting removes seat limits entirely.
  • Data-ingest overages stack on top.

If broad team access is your pain point, this move pays off in a way that’s about licensing model, not just raw cost.

What you’re replacing

New Relic is a unified APM/observability suite. Mapping to open components:

  • APM / auto-instrumentation → OpenTelemetry auto-instrumentation + Tempo for traces. This is the biggest lift: New Relic’s language agents auto-instrument deeply; you re-instrument with OTel SDKs/agents.
  • Infrastructure metrics → Prometheus (node_exporter, exporters, or OTel).
  • Dashboards → Grafana.
  • Alerts → Prometheus Alertmanager (or Grafana Alerting).
  • Logs → Loki.
  • NRQL → PromQL / LogQL / TraceQL, a real query-language shift.

A safe migration flow

  1. Inventory what New Relic does for you: instrumented services, key transactions, dashboards, alert policies, and notification/paging integrations.
  2. Stand up the stack, Prometheus + Alertmanager + Grafana, plus Tempo and Loki as needed. The kube-prometheus-stack Helm chart is a common starting point on Kubernetes.
  3. Re-instrument with OpenTelemetry, replace New Relic agents with OTel SDKs/auto-instrumentation, pointing exporters at your collector. Start with your most important services.
  4. Recreate the essentials, translate critical alert policies into PromQL alerting rules and rebuild the top dashboards in Grafana.
  5. Dual-run New Relic and the new stack; compare coverage, trace quality, and alert fidelity.
  6. Cut over paging, then remove New Relic agents and seats.

Re-instrumenting APM with OpenTelemetry

This is the long pole of the migration, so plan it as its own workstream rather than a step. New Relic’s language agents attach deeply and populate transaction traces, service maps, and error analytics with almost no configuration. OpenTelemetry reaches the same place, but you assemble it:

  • Enable auto-instrumentation per language. Java, .NET, Python, Node, and others have OTel auto-instrumentation that covers common frameworks and HTTP/DB clients. Turn it on service by service rather than all at once.
  • Add manual spans for bespoke code. Anything New Relic inferred from its agent hooks but that OTel does not cover automatically needs explicit spans, so inventory what New Relic was capturing first.
  • Run collectors as the pipeline. OTel Collectors receive from the SDKs and export metrics to Prometheus, traces to Tempo, and logs to Loki, giving you one vendor-neutral layer instead of per-vendor agents.
  • Tune trace sampling so you keep useful traces without storing every request, which is your decision now rather than the vendor’s.

Confirm traces are captured and correlated for a representative request path before you trust the service on the new stack.

Translating NRQL and alert policies

NRQL was one language over everything; the new stack splits it three ways. Metric conditions become PromQL alerting rules in Alertmanager (or Grafana Alerting), log conditions become LogQL, and trace conditions become TraceQL. The gotchas that catch New Relic teams: PromQL rates need an explicit range window, percentile alerts require a histogram you are actually exporting, and NRQL’s FACET grouping becomes sum by (...) or avg by (...). Re-express the alert policies that page humans first, and validate each fires on a real condition instead of assuming the translation held.

The gaps to plan around

New Relic’s auto-instrumentation and curated APM views are polished; OpenTelemetry gets you there but with more setup, and instrumentation maturity varies by language. Distributed-trace correlation and some APM niceties take effort to match. Budget for OTel pipeline work and PromQL fluency on the on-call team.

Managing storage and cardinality

New Relic’s bill came from seats plus ingest; the self-hosted stack removes both meters but hands you storage and cardinality to manage instead. The instrumentation you add with OpenTelemetry decides how much data lands, so pick trace sampling rates and metric label sets deliberately rather than mirroring everything New Relic collected. High-cardinality labels blow up Prometheus series counts and memory, and verbose traces size Tempo, so treat re-instrumentation as a chance to keep only what on-call reads. For long metric retention, add Thanos or Mimir rather than forcing a single Prometheus to hold months of high-resolution data. The savings are durable when you are disciplined about volume, and eroded when you are not.

What has to pass before you trust it

Fire test alerts end to end, confirm traces are captured and correlated for a representative request path, do a dashboard parity review, and load-test retention. Acceptance bar: the team is paged correctly and can debug a real incident on the new stack.

Our take

New Relic → Prometheus is primarily about escaping per-user pricing and unlocking team-wide access, in exchange for owning an OpenTelemetry-based stack. Metrics and dashboards migrate well; re-instrumenting APM/traces and learning PromQL are the work. Dual-run, prove trace and alert fidelity, then cut over. Model your per-user/ingest savings in the calculator above, and treat them as illustrative until you validate against your real telemetry volume.

Tooling & automation for this path

Instrument services with OpenTelemetry/exporters; stand up Prometheus + Grafana; port alerts to Alertmanager; dual-run before cutover.

Primary references: official Prometheus documentation ↗ and the New Relic documentation ↗ , always verify version-specific behavior against them before you migrate.

Frequently asked questions

Will Prometheus actually fix New Relic's per-user pricing pain?

Yes, that is the specific win. New Relic charges per full-platform user plus data ingest, which discourages giving the whole team access during incidents. A self-hosted Prometheus and Grafana stack has no seat license, so everyone can log in; the cost moves to the infrastructure and engineering time to run it. If broad access is your pain point, this move is about the licensing model as much as raw spend.

How hard is re-instrumenting New Relic APM with OpenTelemetry?

It is the biggest lift in the whole migration. New Relic's language agents auto-instrument deeply and produce curated APM views, and you replace that with OTel SDKs and auto-instrumentation feeding Tempo for traces. Coverage varies by language, and bespoke services need manual spans, so start with your most important services and confirm traces are captured and correlated before moving on.

What does NRQL become on the new stack?

NRQL splits across three languages: PromQL for metrics in Prometheus, LogQL for logs in Loki, and TraceQL for traces in Tempo. There is no direct translator, so NRQL's SQL-like SELECT and FACET style has to be re-expressed per signal, PromQL rates need explicit ranges and percentiles need histograms you export. Budget on-call time to get fluent, since alert quality depends on it.

Which New Relic APM niceties don't port cleanly to Prometheus?

The curated, auto-populated APM views, distributed-trace correlation, and some out-of-the-box service maps take real effort to approximate. OpenTelemetry and Tempo get you there, but with more setup and instrumentation maturity that varies by language. Inventory what New Relic captured so you do not silently lose a view, and set expectations that the polish is traded for ownership and open, un-metered access.

Model your 3-year cost

Pre-filled for New Relic → Prometheus; adjust every figure with your own numbers. Estimates are illustrative, not vendor quotes, see our methodology.

Sized at 300 monitored hosts, cost is computed on this.
Stay on New Relic (3yr)
$162,000
Move to Prometheus (3yr + migration)
$76,200
Projected savings
$85,800 (53%)
Payback period
14.8 mo
Build a decision report from these numbers:

Illustrative, editable figures, not vendor pricing (defaults reviewed May 2026).

Request a vendor-accurate Prometheus quote

A guided builder that turns your estimates into a requirements report (RFQ) you can send to a vendor, partner, or distributor for a binding quote, then feed the real prices back into the calculator above. How our estimates work.

  1. 1Size it
  2. 2Requirements
  3. 3Your details
  4. 4Channels & export

How big is your New Relic estate?

Physical + virtual hosts sending telemetry. Not sure? Enter rough numbers, the distributor confirms exact counts later.

300 monitored hosts
Default mid-size assumption (300 monitored hosts)