Where self-hosted Dynatrace costs less, and where it costs more
A DPS renewal or a consumption overrun is forcing a cost review, and the answer depends on how much telemetry you ingest and how long you keep it. Replacing a Dynatrace Platform Subscription with self-hosted Grafana and Prometheus swaps one consumption-based commitment for recurring infrastructure, storage and staff costs, plus a one-time instrumentation and dashboard rebuild. Whether that is cheaper turns on data volume, retention and the people who will run the stack. Neither Dynatrace nor DeployOpen prices appear here. The only figures used are the open-source facts that matter for the comparison.
Start with what is free and what is not. Prometheus is Apache-2.0 licensed and has no paid enterprise edition, so its license cost is zero, but its single-node local storage is not clustered or replicated and defaults to 15 days of retention. Longer retention means remote storage, which you pay for in compute and disks or object storage. Grafana was relicensed to AGPL-3.0 with the first release in Grafana 8.0, and Grafana Enterprise is a separate commercial option for features such as SAML. Grafana Cloud's published tiers, including a 19 US dollar monthly platform fee for Pro and a 25,000 US dollar annual minimum for Enterprise, are a reference point for what a hosted equivalent charges, not a quote for your environment.
Ask your team to model three cost lines before comparing totals: the Dynatrace renewal terms and remaining commitment, the infrastructure and storage for each signal type at your target retention, and the staff hours to operate, upgrade and back up the stack. Request written quotes for any implementation partner work, covering instrumentation, dashboard rebuild and the parallel run. Confirm the retention you need for each signal with your compliance owners, because retention drives storage cost more than any other input.
Which cost components move when you leave DPS
This table compares each cost component on the Dynatrace Platform Subscription side with the matching component in a self-hosted Grafana, Prometheus and Loki stack. Read the Recurring column first, because most of the ongoing spend on either side sits there, and use the driver column to see what changes the number. No prices are shown because the supplied facts do not give Dynatrace rates or DeployOpen fees.
| Cost component | Who is paid, and for what | One-time or recurring | What drives it |
|---|---|---|---|
| DPS subscription and rate card | Dynatrace, for committed consumption across capabilities | Recurring, under a 1 to 3 year agreement with a minimum annual commitment | Committed minimum, per-capability rates, and telemetry volume against the rate card |
| Compute for Prometheus, Loki and Grafana | Your cloud or data center provider, for servers or nodes | Recurring | Series count, ingest rate, query load and number of Grafana users |
| Object storage for Loki | Your storage provider, for chunks and index | Recurring | Log volume per day, retention settings and replication choices |
| Prometheus and Loki long-term storage | Your storage provider; Prometheus itself has no paid edition | Recurring | Retention period, remote write targets and compaction behavior |
| Grafana database and high availability | Your provider, for MySQL 8.0+ or PostgreSQL 12+ plus a load balancer | Recurring, with a one-time setup | Two or more active-active Grafana servers and database backups |
| Alertmanager cluster | Your infrastructure, for the Alertmanager instances | Recurring | Number of alert rules, notification channels and cluster size |
| Implementation and OpenTelemetry instrumentation | Internal staff or a services partner, under a written scope | One-time | Number of services, languages and dashboards to rebuild |
| Support, upgrades and internal skills | Your staff, plus any retainer or vendor support you choose | Recurring | Upgrade cadence, on-call coverage and PromQL and Grafana expertise |
How the DPS minimum annual commitment shapes the comparison
The cost you compare against a self-hosted stack is not the metered usage on your last invoice. Dynatrace Platform Subscription (DPS) is a consumption model: you sign an agreement, typically for 1 to 3 years, with a minimum annual commitment, and usage accrues against that commitment on a per-capability rate card. The number to model is therefore the committed floor plus any overage above it. If your actual consumption stays below the floor, you still pay for the floor, and that unused portion is a cost the open-source side does not carry.
DPS can be shared across SaaS and Managed deployments, so the cost profile depends on where your environment runs. A SaaS deployment shifts hosting and operations to Dynatrace. Dynatrace Managed runs in your own environment, which means your team carries the compute, storage and upkeep for that footprint, while the subscription still covers the licensed consumption. Model each deployment separately so you do not assume the Managed side inherits SaaS economics. Ask Dynatrace which capabilities and deployments your agreement covers before you build the comparison.
Pull the rate card, the minimum annual commitment and the term dates from your own contract and order documents rather than working from published examples or estimates. The Dynatrace Platform Subscription documentation explains the model, but your negotiated figures govern. Then map the term end against your migration window. If the commitment runs past the date you expect to cut over, decide whether to keep dual-shipping telemetry until then, negotiate a reduced commitment at renewal, or accept the remaining floor as a sunk cost in your business case.
What moves the cost up or down
Self-hosted cost follows the same levers as the Dynatrace bill, but you carry each one directly. Volume, retention, users, service count, availability and skills set the compute, storage and staffing you buy, and they interact, so change one and the others move.
Telemetry volume across metrics, logs and traces
Each signal has its own scaling path. Loki's monolithic mode suits up to about 20 GB of logs per day, while simple scalable mode approaches 1 TB per day, so the log volume you forecast decides the deployment shape and the node count. Prometheus handles metrics on a single node, so cardinality and series count drive its memory and disk. Trace volume drives Jaeger storage. Measure each signal separately from your current Dynatrace usage before sizing anything.
Retention period and object storage
Retention multiplies storage. Prometheus defaults to 15 days of local data and can be limited by time or size, but it is not clustered or replicated, so long retention usually means remote write to external storage. Loki keeps logs indefinitely until the compactor's retention is enabled, which is an easy way to grow costs without noticing. Ask who owns the object storage bill and what your compliance team requires for retention on each signal.
Users and high availability for dashboards
Dashboard users drive Grafana server count and database sizing. Small deployments under 25 concurrent users run on 2 cores and 2 to 4 GB of RAM, but production and high availability need MySQL 8.0 or later or PostgreSQL 12 or later. Grafana HA needs two or more active-active servers behind a load balancer, and alerting needs extra configuration to avoid duplicate notifications. Count users and decide whether dashboards and alerts must survive a node failure.
Alerting and Prometheus high availability
Alerting reliability is the cost most often underestimated. Prometheus local storage is not clustered, so a second Prometheus replica or remote storage is needed if alerting must survive an outage. Alertmanager can run as a cluster through its --cluster flags, and Prometheus should point at every Alertmanager instance rather than a load balancer. Each added replica is more compute, more storage and more configuration to keep in sync.
Number of services to instrument
Dynatrace OneAgent discovers processes automatically, while a self-hosted stack needs OpenTelemetry instrumentation per service, language and runtime. The instrumentation effort, and the dashboard and alert rebuild that follows, grows with the service count. Inventory services, group them by language, and decide which get auto-instrumentation and which need manual spans before you estimate the migration.
Internal skills and on-call ownership
The largest recurring cost is often the staff who run the stack. Someone must own Prometheus storage, Loki compaction, Grafana upgrades, TLS, authentication and backups, and you must patch on Grafana's release cadence. Grafana's support windows and Prometheus's six-week minor release cycle mean an upgrade schedule is ongoing work. Ask any implementation partner for the roles, hours and on-call coverage in a written scope, and compare that with the commitment you would otherwise sign.
How to build the comparison with your own numbers
This sequence turns your actual Dynatrace spend and telemetry volumes into a like-for-like estimate for a self-hosted Grafana and Prometheus stack, so the comparison rests on your data rather than on list prices or assumptions.
Export actual DPS consumption by capability
Finance and the Dynatrace account owner pull consumption for the last full DPS term, broken out by capability (for example host monitoring, traces, logs and metrics) rather than as one total. Ask for the rate card that applies to your agreement and confirm the minimum annual commitment and whether any unused commitment carries over. This step is done when you have a table of consumed units per capability per month, the rate card lines that price them, and the commitment figure, all sourced from the contract and invoices.
Define target retention for each signal
Engineering leads and the people who answer audit and incident questions agree how long metrics, logs and traces must stay queryable, and whether each signal needs a different window. Prometheus keeps local data for 15 days by default, so anything longer needs a long-term store such as Grafana Mimir, and Loki keeps logs indefinitely until retention is enabled. This step is done when each signal has a written retention target and a named owner who can justify it to auditors.
Size object storage and compute from ingest rate
The platform team measures current ingest per signal (samples per second for metrics, GB per day for logs, spans per second for traces) and multiplies it by the retention targets to estimate stored volume. Object storage size comes from that volume, while compute for Prometheus, Loki and Mimir depends on series count, query load and the Loki deployment mode you choose, which the Loki deployment modes documentation describes by daily log volume. Ask the team to load-test with a representative sample before committing hardware. This step is done when you have a sizing sheet with storage, CPU and memory per component and the assumptions written beside each number.
Add Grafana database, load balancer and Alertmanager
Platform engineers add the supporting components that a single-node trial does not need: a MySQL or PostgreSQL database for Grafana configuration, at least two active-active Grafana servers behind a load balancer for high availability, and a clustered Alertmanager set with every instance listed in the Prometheus configuration. Grafana's installation guidance states that SQLite is not suitable for production, and its high availability notes say alerting needs extra configuration to avoid duplicate notifications. This step is done when each supporting component has a line item in the sizing sheet and a documented failover test has been planned.
Count people hours for run and upgrades
Engineering management estimates the recurring staff effort to operate the stack, including on-call coverage, backups, security patching and capacity work. Plan upgrades around the cadence: Prometheus starts a new minor release every 6 weeks and a minor generally stops receiving fixes after that, while the current LTS line receives fixes for one year. Grafana minor releases are supported for 9 months and the last minor of a major version for 15 months, so each stack needs regular upgrade cycles. This step is done when you have an annual hours estimate per role, split between routine upgrades and unplanned work, and a named owner for each component.
Add one-time implementation and migration effort
The migration team lists the one-time work: instrumenting services with OpenTelemetry, dual-shipping telemetry while the DPS commitment runs, rebuilding dashboards and alerts in Grafana, and retiring OneAgent-based detection and root-cause views that have no direct equivalent. Note which items your staff can do and which you want to buy as a fixed-scope engagement. This step is done when the one-time items are listed by service or dashboard group, each with an effort owner and a dependency on the commitment term.
Request comparable quotes and compare totals
Procurement sends the sizing sheet and the scope list to each provider and asks for a written quote that separates implementation, hardening, backup and documentation, ongoing support, and any retainers for upgrades or testing. Ask what the quote assumes about ingest, retention, high availability and support hours, and how change requests are priced. Build one table that places the annual DPS cost beside the recurring infrastructure, staff and support costs, with one-time costs amortized separately. This step is done when every line in the table traces to a source document, a sizing assumption or a written quote.
What the instrumentation and dashboard rebuild adds to the bill
The largest cost that a self-hosted move adds is not hardware. It is the one-time work of replacing OneAgent with OpenTelemetry instrumentation, service by service, and rebuilding what Dynatrace produced automatically. Each service needs its traces, metrics and logs wired through an OpenTelemetry SDK or auto-instrumentation agent, exported to a collector, and checked for completeness. Effort scales with the number of services, their languages, and how many depend on OneAgent's automatic discovery. Dynatrace documents OTLP ingestion for traces, metrics and logs, so you can confirm how the existing DPS subscription meters that OTLP data before you start a dual-shipping trial. Ask Dynatrace for the rate card lines that apply to OTLP ingest, because they determine what a parallel period costs.
Dual shipping is the recurring cost that most teams underestimate. While the DPS commitment runs, the same OTLP stream can go to Dynatrace and to a self-hosted backend such as Prometheus for metrics and Jaeger for traces, with Grafana on top. You pay for both sides during that window, and the overlap should be planned to end at the commitment's renewal or exit date, not later. Confirm the minimum annual commitment and the term with your account team, since DPS is typically a 1 to 3 year agreement, and map your cutover dates against it. Then budget for the Grafana side: dashboards, alert rules and data sources are rebuilt by hand unless you define them as code. Grafana's provisioning files and its Terraform and Git Sync options let you keep dashboards and alerting in version control, which costs engineering time up front but makes later changes reviewable.
Dynatrace history mostly does not move with you. Its exports focus on configuration and API access to metrics and entities, so years of collected performance data usually stays in the platform. Plan for a history gap: decide which baselines, SLO trends and incident records you must keep, export what the APIs allow, and archive the rest in a readable form before the subscription ends. Your auditors and capacity planners will ask for that history, so agree on the retention requirement early. Dashboards and alerts also need re-validation against the new telemetry, because thresholds tuned to OneAgent metrics will not match OpenTelemetry metric names and resource attributes. Ask your team to inventory every Dynatrace dashboard and alert, mark which ones matter for on-call, and assign an owner to rebuild each one.
How the cost picture changes by stack choice
This is the core self-hosted option for metrics, dashboards and distributed traces. Prometheus is Apache-2.0 licensed, Jaeger is Apache-2.0 and Grafana is AGPL-3.0-only, so the software itself carries no license fee. The recurring cost sits in the servers, the storage that Prometheus keeps locally, and the people who operate and upgrade the stack. Prometheus stores data on a single node by default with a 15-day retention, so longer history needs remote write to external storage, which adds a component to run.
- Compute and storage: Prometheus, Grafana and Jaeger each need hosts sized for your series count, query load and trace volume. Ask your team to estimate these from current Dynatrace usage, not from list prices.
- Grafana database: Production and high availability need MySQL 8.0 or later or PostgreSQL 12 or later, not the default SQLite.
- Staff time: Someone owns upgrades, Alertmanager clustering and backup of local Prometheus data.
- Not covered: Automatic discovery, AI root-cause analysis and real user monitoring have no direct equivalent in this stack.
Confirm the expected series count, trace sampling rate and retention period with your team before requesting a quote.
Adding Loki moves log storage into the same self-hosted footprint, so logs are not billed per gigabyte ingested as they are in consumption-based platforms. Loki is AGPL-3.0-only and stores compressed chunks and its index in object storage. Its cost therefore depends mostly on object storage capacity, the deployment mode you choose and the people who run it. Retention is disabled by default, so the cost of keeping logs grows until you configure it.
- Deployment mode: Monolithic mode suits smaller log volumes. The docs place it at up to about 20 GB per day. Simple scalable mode is being deprecated and removed with Loki 4.0, so plan for microservices or a supported successor for larger volumes.
- Object storage: Amazon S3, Google Cloud Storage and Azure Blob Storage are the recommended production stores. MinIO and filesystem storage are supported but not typically recommended for production.
- Retention: Set
retention_enableddeliberately, because logs are kept indefinitely until you do. - Authentication: Loki has no built-in auth layer, so an authenticating reverse proxy adds components to run.
- Not covered: Log analytics with the same depth as a commercial platform, and any log-to-trace correlation built into Dynatrace, must be assembled from Grafana features.
Ask for a written estimate of daily log volume and retention before sizing object storage.
Grafana Cloud is not an open-source option, but it is a useful reference when you compare self-hosting against a hosted service built on the same projects. Grafana's pricing page lists a free tier, a Pro tier with a 19 US dollar monthly platform fee plus usage, and an Enterprise tier with a 25,000 US dollar annual minimum commitment. Using these figures, you can separate the platform fee from usage charges and see which part of the cost you would take on when self-hosting.
- Pro tier: The 19 US dollar monthly platform fee is listed separately from usage, so usage needs its own estimate.
- Enterprise tier: The 25,000 US dollar annual minimum applies before usage, according to Grafana's pricing page.
- Free tier: Useful for proof-of-concept work, but confirm its limits on the current pricing page before relying on it.
- What self-hosting replaces: Your staff time, hosting and storage in place of these fees.
- Not covered: Grafana Cloud does not add Dynatrace's automatic discovery or AI root-cause analysis.
Confirm current Grafana Cloud pricing directly with Grafana, because published tiers change.
Zabbix suits teams whose need is infrastructure and host monitoring rather than full application performance monitoring. Zabbix was relicensed to AGPL-3.0 starting with version 7.0, while versions up to 6.4 remain GPL-2.0. Its cost profile is narrower: one or more Zabbix servers, a database and agents or proxies on monitored hosts, plus the staff to maintain templates and triggers. Zabbix also sells technical support subscriptions, which is an optional recurring cost.
- Server and database: Sizing depends on host count, item count and polling intervals.
- Agents and proxies: Proxies reduce load on the central server in distributed networks.
- Support subscription: Optional, and priced by Zabbix, so request a quote if you want vendor support.
- Staff time: Templates and triggers replace OneAgent's automatic detection, which means more manual setup.
- Not covered: Dynatrace APM tracing, code-level visibility and real user monitoring are outside Zabbix's scope, so you would still need OpenTelemetry, Jaeger or another tool for those.
If you have traces or user experience data in Dynatrace today, confirm how much of your spend relates to those features before choosing Zabbix alone.
Questions buyers ask before comparing Dynatrace with self-hosted Grafana
How much does a self-hosted Grafana and Prometheus stack cost compared with Dynatrace DPS?
No single figure settles this, because the two bills are built differently. Dynatrace Platform Subscription (DPS) is a consumption model: you sign an agreement of typically 1 to 3 years with a minimum annual commitment, and usage accrues against it on a per-capability rate card. A self-hosted stack has no license fee for Prometheus (Apache-2.0) or Grafana (AGPL-3.0-only), so its costs are infrastructure, storage, implementation and the people who run it. Cost drivers on the open-source side include the number of active series, log volume, retention period, high availability, and the hours your engineers spend on upgrades and on-call. Ask Dynatrace for your contracted rate card and commitment term, then model the open-source side against your own telemetry volumes.
How long does a migration from Dynatrace to Grafana and Prometheus take?
The duration depends on how much of your estate is instrumented by OneAgent and how many dashboards, alerts and automations depend on Dynatrace. The main drivers are the number of services that need OpenTelemetry instrumentation, the number of dashboards and alert rules to rebuild in Grafana, and whether you run both platforms in parallel while the DPS commitment is still active. Because Dynatrace ingests OTLP, many teams send the same telemetry to both backends during a transition, which lets them compare results before cutting over. Timing should be set against your commitment end date. Ask any partner for a written scope and timeline, and confirm which Dynatrace features (such as automatic discovery and root-cause analysis) your teams rely on, since those need replacement planning.
Can our team run a self-hosted Grafana and Prometheus stack in-house?
Many teams can, but the stack is assembled from several components, so the skills need to be planned rather than assumed. Prometheus stores data in a local time series database that is not clustered or replicated, so it must be managed like any other single-node database. Grafana needs MySQL or PostgreSQL for production and high availability, with two or more active-active servers behind a load balancer. Alertmanager needs its own cluster configuration, and Loki, if used for logs, depends on object storage and an authenticating reverse proxy. Your team should cover Kubernetes or Linux operations, database administration, OpenTelemetry instrumentation, PromQL and alert design, and a regular upgrade cadence. Grafana's own guidance says minor releases come every other month and patch releases at least monthly, so the upgrade workload recurs.
Do the open-source license changes for Grafana, Loki and Prometheus affect us?
It depends on how you use the software. Prometheus is Apache-2.0 and has no paid enterprise edition, so it carries the fewest licensing questions. Grafana was relicensed from Apache-2.0 to AGPL-3.0-only on April 20, 2021, starting with Grafana 8.0, and Grafana Loki and Tempo moved to AGPLv3 on the same date. The AGPL requires that users interacting with a modified version over a network can obtain its source, so legal teams should review any internal changes or forks. Grafana Enterprise is a separate commercial option, and some features such as SAML and SCIM are only in Enterprise and Grafana Cloud. Ask your legal and compliance team to confirm how the AGPL applies to your planned use, including any modifications.
What should we ask a migration partner to include in a quote?
Ask for a fixed scope in writing before work starts, with deliverables and timelines agreed up front. A useful quote separates instrumentation work (OpenTelemetry collectors and service-by-service changes), platform build (Prometheus, Grafana, Jaeger or Loki, plus Alertmanager and storage), dashboard and alert rebuild, cutover and parallel running, and documentation. Ask how high availability, backups, authentication and upgrades are handled after go-live, and whether ongoing support is a separate retainer. Confirm which Dynatrace capabilities are out of scope, such as automatic discovery, AI root-cause analysis and real user monitoring. DeployOpen does not publish a price list; a quote follows from the written scope.
Does Dynatrace Managed change the cost and ownership comparison?
Yes, it changes who operates the platform, but not the license model. Dynatrace Managed is run in your own environment, and DPS can be shared across SaaS and Managed deployments, so the subscription still applies. The comparison therefore shifts toward operating effort: with Managed, Dynatrace supplies the software and you run the environment, while a self-hosted stack also requires you to choose, configure and upgrade each component. Ask Dynatrace which parts of the Managed environment you operate, what offline or air-gapped operation includes, and how upgrades are delivered. Compare those answers against the staff time and infrastructure you would commit to Prometheus, Grafana and Jaeger.
How much telemetry history can we keep when moving off Dynatrace?
Plan for retention to be set by your own storage budget, not carried over from Dynatrace. Prometheus stores data locally with a default retention of 15 days, configurable by time or size, and can send samples to external long-term storage through remote write. Loki retention is disabled by default, so logs are kept indefinitely until you enable it, and retention can be set globally, per tenant or per stream. Long-term metric storage often uses a system such as Grafana Mimir, which is also AGPL-3.0-only. Telemetry history collected in Dynatrace generally does not move with a migration, so decide which historical comparisons you need and export them before the subscription ends. Confirm the export options with Dynatrace.
Turning the model into a decision before the renewal date
Set the decision date backward from the end of your Dynatrace Platform Subscription (DPS) term, because the agreement is typically 1 to 3 years with a minimum annual commitment that you pay whether or not you use it. Confirm the exact term end, the commitment amount, and the notice period for non-renewal with your Dynatrace account team in writing, and ask how unused commitment is handled if you shift workloads during the term. Work back from those dates to set a go or no-go point that leaves time to finish instrumentation and cutover. Treat the decision date as the first criterion, not an afterthought, since it determines how much overlap you can afford to run.
During the overlap, dual-ship the same telemetry: Dynatrace ingests OpenTelemetry through its OTLP API, and an OpenTelemetry Collector can fan out one pipeline to Dynatrace and to a self-hosted backend such as Prometheus for metrics and Jaeger for traces. Define pass criteria before the parallel run starts, including that the Prometheus instance keeps the query coverage your alerts need, that Grafana dashboards match the panels operators rely on, and that the Collector stays within the CPU and memory limits your platform team sets. Note that Prometheus defaults to 15 days of retention and is not clustered, so decide how long-term history will be handled. Then collect the numbers the business case still lacks: the Dynatrace consumption projection from your account team, your current DPS usage by capability, and internal estimates of the engineering hours, hosting, and storage that the self-hosted stack would need.
How DeployOpen scopes a fixed-price Grafana and Prometheus implementation
DeployOpen plans and implements self-hosted Grafana, Prometheus and related open-source components inside your own cloud accounts, data centers or air-gapped networks. We start from your Dynatrace cost lines and your DPS commitment term, then build the stack, rebuild dashboards and alerts, and hand over the documentation your team needs to run it.
How we scope
- We inventory the Dynatrace capabilities, hosts, services and dashboards you use before agreeing any work in writing.
- The written scope names the components, such as Prometheus, Grafana, Jaeger and Alertmanager, and what each one covers.
- Engagements are fixed-scope, and ongoing support, upgrades and continuous testing are available as a retainer.
How we build
- We deploy OpenTelemetry Collector pipelines that dual-ship telemetry to Dynatrace and the new stack during the overlap period.
- We size storage and retention for Prometheus and Loki against the retention periods your compliance team requires.
- We configure Grafana authentication, provisioning files and security hardening settings as code, stored in your repository.
How we hand over
- We rebuild dashboards and alert rules, then compare alert behavior against Dynatrace for a documented parallel run.
- We deliver runbooks for upgrades, backups, high availability setup and Alertmanager cluster operation.
- We provide a cutover checklist and a record of what Dynatrace features, such as automatic discovery, are no longer covered.
How we support
- We plan upgrades around the Grafana and Prometheus release cycles and their published support windows.
- Retainers cover patching, capacity review, backup verification and security testing of the monitoring stack.
- Our security testing and compliance readiness work can extend to the monitoring platform and its evidence records.

