Open-source alternative to Dynatrace RUM and session replay: the short answer
If your Dynatrace real user monitoring and session replay sit inside a Dynatrace Platform Subscription commitment, you need a separate tool for the browser layer, because OpenTelemetry has no stable real user monitoring specification. OpenReplay is the main self-hosted option for session replay and browser errors, and backend tracing stays on OpenTelemetry, which exports to backends such as Jaeger for traces and Prometheus for metrics. The split is deliberate: OpenTelemetry covers the server side of a request, while OpenReplay records what a user saw, clicked and experienced in the browser, including JavaScript errors, console logs and network activity. Linking the two requires that browser sessions carry an identifier that also appears in backend traces, so plan that correlation work before you retire any Dynatrace front-end agent.
OpenReplay's licensing is split by directory. Most of its monorepo is under AGPLv3, some directories are MIT, and everything under the ee/ directory is the Enterprise Edition under a separate commercial license defined in ee/LICENSE. For most self-hosting teams, the question is which features sit in the Enterprise Edition, such as SSO and SAML, SCIM provisioning, roles and permissions, and audit trail, because those are the controls regulated buyers usually ask about. Read the OpenReplay repository and the license files yourself, and confirm with OpenReplay which capabilities your deployment needs before you commit to the open-source edition.
Check three things before you decide. First, confirm that the capture-time masking settings (CSS selector masking, input redaction and private mode) cover every page that handles personal or payment data, because masking is only as good as its configuration. Second, confirm the deployment target and retention approach with your own infrastructure team, using the OpenReplay deployment documentation as the starting point. Third, decide who owns patching and upgrades for the self-hosted instance, since that work is yours under the open-source edition and recurs with each release.
Which Dynatrace RUM and session replay capabilities OpenReplay covers
This table maps each front-end monitoring capability Dynatrace provides to OpenReplay or to an OpenTelemetry-based gap. Read the coverage column first, then the notes, which name what you must verify in your own environment before deciding.
| Capability | OpenReplay coverage | Coverage notes |
|---|---|---|
| Session replay | Covered for web sessions, recorded by a browser SDK | Confirm how replay storage and retention are configured on your chosen deployment before you set policy. |
| Browser errors and JavaScript exceptions | Covered, with JavaScript errors captured alongside sessions | Confirm that source maps for your minified bundles are uploaded so stack traces are readable. |
| Network and DevTools data | Covered, including network activity and console logs in the session view | Check captured request payloads against your data policy, since request detail can contain personal data. |
| Performance metrics | Covered, with more than 40 performance metrics listed in the README | Compare the metric set against the Dynatrace Core Web Vitals and page-load views your teams actually use. |
| Product analytics, funnels and heatmaps | Covered, with funnels, trends, journeys and heatmaps | Dynatrace does not provide this as a RUM equivalent, so treat it as an addition, not a like-for-like replacement. |
| Cobrowsing | Covered, using WebRTC calls | Confirm network paths and TURN relay needs for your users before rollout. |
| Native mobile replay | Covered for iOS, Android and React Native | Dynatrace mobile coverage differs, so verify your app frameworks are supported before migrating mobile monitoring. |
| Data masking and redaction | Covered, with capture-time masking by CSS selector, input redaction and a private mode | Test masking against your own forms and pages. Masking rules are your responsibility, not a default guarantee. |
| Linking sessions to backend traces | Not a native Dynatrace-style link. Requires your own trace ID propagation via OpenTelemetry | Confirm with OpenReplay and your backend whether trace IDs can be attached to sessions in your version. Dynatrace automatic end-to-end correlation has no direct equivalent. |
| Automatic instrumentation | Not equivalent to Dynatrace OneAgent-style discovery | OpenTelemetry has no stable real user monitoring specification, so expect manual SDK setup and ongoing maintenance of front-end instrumentation. |
Which open-source options fit front-end monitoring
Front-end monitoring splits into three jobs: replaying what users did in the browser, tracing browser requests into backend services, and tracking aggregate front-end metrics over time. The options below cover one or more of these jobs, and each leaves a gap that the team must fill with a deliberate choice.
OpenReplay self-hosted for session replay
OpenReplay is the primary option when the goal is what Dynatrace RUM and Session Replay provide: session replay, browser console logs, JavaScript errors and network activity in one tool. Its README describes capture-time sanitization and a private mode that masks text and inputs by default, so check the masking rules against your own forms before go-live. Confirm which features sit in the AGPLv3 core and which sit in the ee/ directory under the commercial license.
OpenTelemetry JavaScript SDK with Jaeger
The OpenTelemetry JavaScript SDK instruments browser requests and passes trace context to backend services, so a slow page load can be followed into the API call behind it. Send the traces to Jaeger, which is Apache-2.0 and a graduated CNCF project, or to SigNoz if you want traces, logs and metrics in one application. The trade-off is that OpenTelemetry alone gives no session replay and no user-level playback, so it complements OpenReplay rather than replacing it.
Prometheus and Grafana for front-end metrics
Prometheus, with Grafana on top, suits aggregate front-end health such as error rates, page timing and request volumes across releases and regions. Prometheus scrapes metrics over HTTP, and it can receive OTLP metrics at its OTLP endpoint when started with the OTLP receiver flag. Grafana is AGPL-3.0-only since 2021, so confirm that this license works for your distribution and internal use. You build the dashboards and alert rules yourself.
Browser errors through the Collector
An OpenTelemetry Collector running as a gateway can receive browser telemetry, apply processing such as attribute filtering, and export it to several backends. Use an authenticator extension to check incoming connections, because a browser-facing endpoint needs controls that an internal agent does not. Confirm the stability level of each Collector component you plan to use, since the core components have mixed maturity levels.
Data masking before it leaves the browser
Masking decisions define what your replay and trace data can contain, and they must be made before collection starts. Plan CSS selector masking for personal data fields, input redaction for payment and health forms, and a review of URLs and query strings that may carry identifiers. Document the rules for your privacy and security reviewers, and test them on live pages in a staging environment before rollout.
How user sessions link to backend traces
Correlation between a replayed session and a backend trace depends on one shared identifier: the trace context that the browser sends with each API request. The OpenReplay tracker records the user's session, including clicks, network activity and JavaScript errors, and stores it under its own session identifier. The backend services emit OpenTelemetry traces. When the browser request carries a W3C traceparent header, the backend span joins the same trace, and the trace ID can then be matched to the failing user action. Without that header, the two records exist side by side with nothing linking them.
The OpenTelemetry Collector sits between the services and the storage backends as a gateway. It receives OTLP data from many services, applies processing such as batching and attribute handling, and exports traces to a backend such as Jaeger, while metrics and logs go to their own destinations. Running it as a gateway gives one place to enforce which attributes leave the network and to change backends without touching application code. Decide which telemetry crosses the trust boundary from the browser, and confirm that the Collector's receiver authentication and exporter credentials, described in the configuration best practices, are set before any browser-originated data reaches it.
Verify propagation in your own stack before relying on it. Check that your front-end and API domains are configured for the trace headers you expect, that your load balancers, API gateways and reverse proxies forward traceparent and tracestate unchanged, and that cross-origin requests allow those headers in CORS settings. Then send one test user action, find the session in OpenReplay, and confirm the matching trace appears in your tracing backend. Record which services drop the context, because a single proxy that strips headers will break correlation for every user journey that passes through it.
How data masking protects personal data in session replay
Capture-time sanitization is the control that matters most in session replay, because OpenReplay's README describes masking or skipping data before it reaches the server. That means personal data that is masked in the browser never has to be stored in the replay backend in readable form. Your team has three settings to work with: masking by CSS selector, which hides chosen elements such as account numbers or address blocks; input redaction, which hides what users type into form fields; and private mode, which masks all text and inputs by default and lets you unmask only the elements you have reviewed.
Before go-live, the first decision is which fields count as personal data in your product. That list usually includes names, email addresses, phone numbers, national identifiers, payment details, health or financial information, and free-text fields where users describe their situation. Your privacy and legal teams should own that inventory and sign off on it. Once it exists, test the masking rules against real page flows in a staging environment: fill every form with dummy values, play back the recordings, and confirm that each sensitive value is hidden. Repeat the test after every front-end release, since a renamed class or a new component can silently remove a selector. Confirm with OpenReplay how its masking behaves for your framework and for native mobile replay.
Self-hosting changes where the residual risk sits. OpenReplay's README notes that self-hosting keeps session data in your own infrastructure, so recordings, retention settings and access logs are under your control rather than a third party's. Your team still owns the hosting, backup, access roles and deletion process, and those need written procedures. Whether masking and retention meet your legal obligations is a determination for your privacy and legal teams and, where relevant, your independent auditors, not something this page or DeployOpen decides.
Migrating Dynatrace RUM to OpenReplay in phases
This sequence moves real user monitoring and session replay to self-hosted OpenReplay in stages, so each part is proven on a subset of pages before Dynatrace RUM is retired at the end of its DPS term. The output is a tested masking policy, linked sessions and backend traces, and rebuilt dashboards and alerts.
Inventory current RUM and replay use
Platform engineering and the front-end owners list every application, page group and user journey where Dynatrace RUM or session data is used today. For each, record which dashboards, alerts, SLOs and people depend on it, which fields are collected from forms and which user data is visible in captured sessions. Confirm with your Dynatrace administrator which data can be exported as configuration, since collected session history mostly stays behind. The step is done when you have a signed-off list of pages in scope and the owners who will accept the new tooling.
Deploy OpenReplay in a test environment
Platform engineering installs OpenReplay in a non-production environment using the deployment option your infrastructure team has approved, such as Kubernetes with Helm, Docker or a supported cloud VM. Check the deployment documentation for the sizing guidance and the version you intend to run, and confirm the release you select against the project's releases page. Confirm that the instance, its storage and its retention settings stay inside your own network or cloud account. The step is done when a test site is recording sessions end to end and the team can open a replay from the test instance.
Define and test masking rules
Privacy, security and front-end engineering write masking rules before any production tracker is deployed. Use capture-time sanitization for CSS selectors and input fields that carry personal, financial or health data, and decide whether private mode, which masks all text and inputs by default, fits the page. Run the tracker on sample pages that contain realistic but non-production data, then review recorded sessions to confirm that masked values never appear in the replay or console output. The step is done when the masking test checklist passes and the privacy owner has approved the rules in writing.
Run the tracker alongside Dynatrace RUM
Front-end engineers enable the OpenReplay tracker on a limited set of pages while the existing Dynatrace RUM agent keeps running, so both tools observe the same user sessions. Compare page load, JavaScript error counts and user journeys between the two, and note gaps or differences in what each tool records. Watch the performance impact of the extra script on the pages in the subset, because the tracker is an added client-side dependency. The step is done when the parallel results match expectations on the subset and the team has a list of known differences to explain to stakeholders.
Link sessions to backend traces
Platform and back-end engineers connect front-end sessions to backend traces in your OpenTelemetry pipeline so a support engineer can move from a replay to the matching server-side spans. Confirm the trace context propagation between the browser and services, and check that the OpenTelemetry Collector pipeline that carries backend telemetry is configured with authentication on its receivers and exporters. Verify the linkage with a test transaction that produces both a replay and a trace. The step is done when a sample error can be traced from the browser session to the backend span.
Rebuild dashboards and alerts
Operations and front-end teams recreate the key RUM dashboards, error alerts and journey metrics that depended on Dynatrace, using the data available in OpenReplay and in your existing observability stack. Map each Dynatrace dashboard and alert to its replacement, mark those that cannot be reproduced, and agree with the owners how the gaps will be handled. Route alerts to the same on-call channels so responders are not surprised by a change. The step is done when every in-scope alert has a tested replacement or an approved decision to drop it.
Retire Dynatrace RUM at term end
Once the subset and the rebuilt alerts have run cleanly, the migration lead extends the tracker to remaining pages in waves and disables the Dynatrace RUM agent page by page. Confirm the Dynatrace subscription end date with your procurement team, since the DPS agreement typically runs one to three years with a minimum annual commitment, and plan the final switch to align with it. Export the Dynatrace configuration you need for records before removing it. Historical session data in Dynatrace mostly does not carry over, so record that gap for auditors and support teams. The step is done when Dynatrace RUM is removed from all in-scope pages and the decommissioning record is filed.
Questions buyers ask before replacing Dynatrace RUM
What does it cost to self-host OpenReplay?
The software itself is free under the open-source edition, so the cost is the infrastructure you run it on, the storage and retention you choose, and the staff time to operate it. OpenReplay's README says a single VM with 2 vCPUs, 8 GB of RAM and 50 GB of storage is enough to start self-hosting, which is a starting point for a pilot rather than a sizing for production traffic. Storage and retention grow with the number of recorded sessions and how long you keep them, so ask your team to model session volume against your retention policy before fixing a budget. Staff time for upgrades, backups and monitoring of the platform itself is the largest recurring cost that teams often underestimate. Ask any implementation partner for a written quote that separates these components.
Can our team run OpenReplay on its own?
Yes, if you have people who already operate containers or Kubernetes, manage TLS certificates and keep backups running. OpenReplay documents deployment targets including Docker, Kubernetes with Helm, Ubuntu and several cloud providers, so the platform fits the skills most platform teams already have. The harder part is the front-end integration: someone must add the tracker to your web and mobile applications, configure masking rules and connect sessions to backend traces. Before deciding, confirm which of these your team has capacity for, and whether you need an outside team for the first deployment and handover. DeployOpen plans, implements, hardens, documents and supports self-hosted platforms in your own infrastructure, typically under a written fixed scope.
How long does a self-hosted OpenReplay deployment take?
The duration depends on how many applications you instrument, whether you use a single-page or multi-page front end, how many environments need the tracker, and how much masking review your privacy team requires. The deployment of the platform itself is usually the shortest step, while integration, masking validation and linking sessions to backend traces take longer. No researched timeline is available for this work, so ask for a phased plan in your written scope: deployment, a pilot application, masking sign-off, then rollout to remaining applications. Your own change windows, security reviews and procurement cycles will also set the pace.
Do we need the Enterprise edition for SSO, SAML and SCIM?
Only if your policy requires those controls for the replay tool. OpenReplay's pricing page lists a self-hosted Enterprise edition at custom pricing on multi-year contracts, adding SSO and SAML, SCIM provisioning, roles and permissions, audit trail, a custom SLA and dedicated support. Its README states that everything under the ee/ directory is under a separate commercial license, while most of the monorepo is AGPLv3. If your identity team requires SAML sign-in and automated deprovisioning for every analyst, the Enterprise edition may be necessary. Otherwise, evaluate the open-source edition with your own access controls at the network and reverse proxy layer, and confirm the license terms in ee/LICENSE with your legal team.
How do we verify that masking works before recording real users?
Test masking against your own pages before any production traffic is recorded. OpenReplay's README describes capture-time sanitization that masks or skips data before it reaches the server, including masking by CSS selector and input redaction, plus a private mode that masks all text and inputs by default. Build a test matrix that lists every form, payment field, health or identity data element and dynamically rendered content, then replay test sessions and confirm that masked values never appear in the recordings. Keep the results as evidence for your privacy and security reviews. Repeat the check after each release, because new components often introduce unmasked fields.
What do we need from our own staff for the work?
You need named owners for four areas: the infrastructure where OpenReplay runs, the front-end code that loads the tracker, the privacy team that approves masking rules, and the backend engineers who will connect sessions to traces. The infrastructure owner provisions the VM or cluster, storage and network access, and handles backups and upgrades. Front-end engineers add the tracker and mark sensitive elements, and the privacy team signs off on test results. Backend owners need to pass correlation identifiers from browser sessions into backend traces, which connects naturally with OpenTelemetry and the Collector. Confirm these roles and their time commitments in writing before the project starts.
Does self-hosting keep session data inside our own infrastructure?
Yes. OpenReplay's README notes that self-hosting keeps session data in the operator's own infrastructure, and that first-party tracking from your own domain is not blocked by ad blockers in the way third-party scripts often are. Data residency still depends on where you deploy, so choose a region and cloud account that match your requirements, and confirm that backups, logs and any analytics endpoints stay in the same boundary. Compliance readiness work, such as documenting controls and collecting evidence, is something DeployOpen can prepare, but independent auditors and certification bodies issue any audit reports or certifications.
What are the managed alternatives if we do not want to run it ourselves?
OpenReplay offers hosted options, which are useful to compare with self-hosting. Its pricing page lists OpenReplay Dedicated as a fully managed instance starting at $199 per month on AWS, GCP or Azure with a 7-day trial, and its README lists Serverless, Dedicated and Bring-Your-Own-Cloud options. Bring-Your-Own-Cloud keeps data in your cloud account while OpenReplay operates the service, which is a middle path if you want less operational work. Compare these options against your own staffing and data residency requirements, and check current terms on OpenReplay's pricing page before deciding.
What Dynatrace RUM does that open-source tools may not match
The main gap is front-end instrumentation. Dynatrace's real user monitoring is built around its own agent, which captures browser and mobile sessions and correlates them with backend services without much manual setup. OpenTelemetry does not yet offer a stable real user monitoring specification, so there is no equivalent standard to lean on for browser telemetry. OpenReplay covers session replay, browser errors and session-to-trace linking, but the team should expect to add and maintain its own tracker configuration, and should confirm which Dynatrace-driven automatic capture (for example, specific user actions or page load timings) needs a manual equivalent. Also confirm how Dynatrace's AI-assisted analysis of user journeys and anomalies maps to what your team will do by hand in OpenReplay and its dashboards.
Several features need confirmation in your own environment rather than assumption. Mobile replay is listed for iOS, Android and React Native, so check which SDK versions, frameworks and app architectures your teams actually ship. Cobrowsing uses WebRTC calls, which depends on your network paths, TURN infrastructure and browser policies. Product analytics features such as funnels, journeys and heatmaps should be compared with the reports your analysts rely on today, including how each handles retention and segmentation. Ask OpenReplay for its current documentation on each capability and test the exact configuration you plan to deploy.
Before cutover, build a short test plan from your own use cases. Pick a few critical journeys, such as login, checkout or a regulated form, and verify that masking rules hide the fields your privacy team cares about in both the replay and the error payloads. Run the browser tracker alongside your current tool for a defined period, and compare whether sessions link to the correct backend traces. Record every Dynatrace view your on-call and product teams use weekly, and assign an owner for each gap that remains open. Any capability that cannot be reproduced should be a documented decision, not a surprise after the commercial agreement ends.
How DeployOpen scopes and delivers a front-end monitoring replacement
DeployOpen plans, implements, integrates, hardens, documents and supports self-hosted open-source platforms inside your own infrastructure. For front-end monitoring, that means a written scope covering OpenReplay, the browser capture rules, and the link between user sessions and backend traces, delivered in your cloud account, data center or air-gapped network.
How we scope
- Inventory which Dynatrace RUM and session replay features your teams use, such as replay, JavaScript error capture and user action tracking.
- Agree written deployment targets, such as a self-managed OpenReplay instance on your cloud or Kubernetes cluster, before work starts.
- Define data masking rules, retention periods and which applications and user flows are in scope, recorded in the fixed-scope document.
How we build
- Deploy OpenReplay and configure capture-time masking by CSS selector, input redaction and private mode for sensitive pages.
- Integrate the tracker into front ends and connect session identifiers to backend OpenTelemetry traces exported to your tracing backend.
- Test masking and session linkage against agreed sample flows before any production traffic is captured.
How we hand over
- Document architecture, masking configuration, retention settings, upgrade steps and the backup approach for session storage.
- Provide runbooks for browser error triage, access roles and first-party tracking domain setup, with the decisions your team owns recorded.
- Walk your operations and privacy staff through the controls so evidence for internal reviews is available from your own environment.
How we support
- Ongoing support, version upgrades and continuous testing are available as retainers after handover.
- Confirm with your own privacy and legal teams what your jurisdictions require for session recording before scope is signed.
- Ask any quote to separate one-time build work from recurring hosting, storage and support effort so the cost components are clear.

