Rumable Upgrade, Rollback, and Troubleshooting¶
This page is for sites that have already been onboarded. Before operating, keep backups of the original configuration, site ID, CLI path, state directory, and web server configuration. For first-time onboarding, see Installation Instructions; for SDK selection, see Configuration Instructions.
Prepare the Original Deployment Information¶
All of the following commands use the CLI, state directory, and site ID of the original deployment. When you reopen a terminal, set the variables first; if you used a custom state directory, change the default values to the original ones. Continue only after each step succeeds; if an error occurs, first handle it according to the terminal prompt.
Linux (with sudo privileges):
rumable="/replace/with/the/actual/installation/directory/of/the/original/deployment/rumable"
state="/var/lib/rumable"
site_id="replace with the original site ID"
Windows (administrator terminal):
$rumable = Read-Host 'Enter the full path to the rumable.exe used by the original deployment'
$state = Join-Path $env:ProgramData 'Rumable'
$siteId = Read-Host 'Enter the original site ID'
Update an Onboarded Site¶
First back up the original TOML, the complete state directory, and the server configuration, then choose the workflow according to the saved TOML format:
| Original Configuration | How to Identify | Update Entry |
|---|---|---|
| Default auto-discovery configuration from one-click onboarding | Has server at the top level; parameters are in [rum], [sdk] |
Regenerate the one-click command on the page, or use setup --discover |
| Advanced manual mode or a complete site configuration created manually | Has [[sites]]; parameters are in [sites.rum], [sites.sdk] |
Edit the original file, then use enable |
Auto-Discovery Configuration¶
Use the saved TOML as the source of truth. Return to the configuration page and fill in the complete parameters, adjusting only the options you need to change while keeping the original sampling, replay, and SDK settings. After reading and verifying the selected installation package, save the new TOML, run the generated command on the original server, and select the original website and binding. Re-running the one-click command also installs the selected package, so verify its SDK version as well.
If the original deployment uses a custom state directory, or you only want to apply the modified discovery configuration with the current CLI, run the following commands, replacing the configuration path with the actual saved file.
Linux:
Windows:
& $rumable setup --discover --config 'C:\ProgramData\RumableConfig\discovery.toml' --state-dir $state
if ($LASTEXITCODE -ne 0) { throw 'Failed to apply the configuration. Check the cause first.' }
Discovery against the same target reuses the original ID, URL, and path scope. Verify that the output site ID matches the original record; do not use a new manual ID to take over an existing deployment. The discovery configuration cannot be passed directly to enable.
Complete Site Configuration¶
Edit the original TOML, keep the original site ID and deployment target, and then run enable. Do not repeat init/render, and do not delete the state directory. Replace the configuration paths below with the original file.
Linux:
config="/etc/rumable/website.toml"
sudo "$rumable" enable --config "$config" --state-dir "$state" --site "$site_id"
Windows:
$config = 'C:\ProgramData\RumableConfig\website.toml'
& $rumable enable --config $config --state-dir $state --site $siteId
if ($LASTEXITCODE -ne 0) { throw 'Failed to apply the configuration. Check the cause first.' }
After either method completes, run status/probe as described in Verify the Onboarding Result, and check the new page and the actual data. The SDK source, loading method, and RUM parameters are all updated through this workflow.
When adjusting the path scope or probePaths of an auto-created site, prepare a complete configuration based on the original ID, URL, and server target, verify the identity, and then run enable. Changing publicURL, the Nginx program/startup parameters, or the IIS site/application means migrating the deployment target and cannot be done with a normal configuration update.
How the SDK Is Updated¶
| Source | Update Method | Rollback Limit |
|---|---|---|
| Same domain as the website | Download and verify the new Rumable package containing the target SDK, then run enable/setup against the original site | Keep the old assets; restore the scripts and configuration of the previous successful deployment |
| Official mutable CDN | After the remote files are updated, browsers may obtain the new version after the cache expires | Only historical URLs can be restored; overwritten files cannot be recovered |
| Self-hosted immutable CDN | Maintain immutable files consistent with the Rumable package digest, modify the URL, and reapply | Historical URLs and files must remain accessible |
The same-domain SDK is fixed in the installation package and is not updated automatically in the background. Release maintainers synchronize and verify the SDK before publishing a new package; website administrators need to upgrade and apply it proactively. Merely replacing the CLI, reading latest, changing the business version, or enabling remoteConfiguration does not update the deployed same-domain SDK.
Upgrade steps:
- Back up the original TOML, the complete state directory, and the server configuration, and keep the old CLI.
- Select the new package from the release manifest, verify the digest, and install it to a new directory; verify
rumable versionand the version information inside the package. - Point
rumable/$rumableto the new CLI, keep the original site ID and state directory; runenableorsetup --discoveraccording to the configuration type. - When IIS takes over an old deployment for the first time, it records pool ownership and recycles once; subsequent repeated operations with exactly the same configuration do not trigger additional recycling. First do a normal refresh on the original browser page with the cache preserved, confirm that the current initialization script is obtained, and then run status/probe.
- If the CDN, proxy, or Service Worker still returns the old HTML, save the response evidence and then handle it according to the corresponding cache policy. Then check the new page, new sessions, SDK download, original business functions, actual RUM data ingestion, and replay.
When the official mutable CDN updates first, check/enable/probe in the old CLI may fail due to digest mismatches. In this case, use a new package containing the matching SDK, or switch to immutable CDN files consistent with the current package; do not disable digest checking to bypass the mismatch. Pages that are already open will not have the SDK hot-replaced, and external workers must also keep versions consistent.
IIS Application Pools and Configuration Application¶
The target application must use a started, exclusive application pool, and child applications must also have their own pools. Enable, update, disable, historical rollback, and failure recovery first write the configuration and save the recovery state, then recycle the target pool and wait for the old worker process to exit, and finally check HTTP. Identical repeated installations or disables do not trigger additional recycling.
Recycling may lose in-process sessions, so arrange a suitable maintenance window. The tool does not assign application pools automatically, does not recycle shared pools, and does not restart the entire IIS. After onboarding, do not directly change the managed pool name or add other applications to it; if adjustments are needed, first disable using the original deployment information and plan the migration to avoid triggering ownership drift protection.
IIS onboarding disables static and dynamic compression for the selected application, and disable restores the original local settings or inheritance relationships. File-level compression overrides, backend compression, or external HTML caches may still affect pages. When enabled, managed HTML navigation requests that reach the target IIS have their old conditional validation headers cleared to avoid reusing the old body; excluded paths and public SDK resources do not use this handling.
If the old worker process does not exit promptly, the operation may fail and attempt recovery; if the recovery is incomplete, the transaction is retained. First check long-running requests and the target pool status, keep the complete output and state backup, and after the conditional recovery, run rollback with the original site ID and state directory. Do not delete the transaction, manually edit the state, or force-kill business processes to bypass the checks.
Operation probe failures are recorded in last-operation-probe-failure.json in the site's private state directory; recovery probe failures are saved separately in last-recovery-probe-failure.json. Save these files before retrying and verify this operation by time; after automatic recovery succeeds, old failure records remain, so the file existing does not mean the current state is still failing. Provide redacted copies to support personnel; do not expose complete state backups or tokens.
Disable, Rollback, and Uninstall¶
Disable Collection¶
First set the variables at the top of this page. If you only want to stop collection, run disable and the check.
Linux:
sudo "$rumable" disable --state-dir "$state" --site "$site_id"
sudo "$rumable" probe --state-dir "$state" --site "$site_id"
Windows:
& $rumable disable --state-dir $state --site $siteId
if ($LASTEXITCODE -ne 0) { throw 'Disable failed. Check the cause first.' }
& $rumable probe --state-dir $state --site $siteId
Disable only stops new HTML injection and keeps the resources for old pages. Existing pages and old HTML caches may continue running the SDK. Compression, cache, or request header adjustments made during Nginx auto-attachment may also remain.
Disabling on IIS restores the original compression settings and inheritance relationships and recycles the target pool. After a normal refresh, newly loaded HTML should not contain the injection from this deployment. After the business cache policy is restored, 304 may be returned; verify whether the actually reused body still contains the injection. Old hashed scripts and public resource mappings are kept for old pages.
Restore the Previous Deployment¶
Rollback is a separate operation that may re-enable collection. Run it only when you need to restore the previous successful deployment; do not run it right after a normal disable.
Linux:
Windows:
When an interrupted transaction exists, rollback first attempts to recover the transaction; otherwise, it switches between the current snapshot and the previous successful snapshot. It is not an unbounded history rollback and does not automatically restore the TOML on disk. Running enable again after a rollback reapplies the current TOML, so verify the desired configuration at the same time, and then check the status, page, and data.
Complete Uninstall¶
First disable and clear the old HTML caches, then preview the uninstall scope.
Linux:
Windows:
Review the preview results; after confirming the targets and the scope of changes, run the uninstall.
Linux:
Windows:
uninstall restores managed settings, removes resource mappings, and archives the state. After that, the site cannot be directly restored with a normal rollback. It does not automatically delete the CLI or a web server installed by the user.
When undoing only the initial automatic Nginx attachment on Linux, first run disable, then preview with rollback --attachment --dry-run; after confirming, run rollback --attachment. External modifications or other sites later attached to the same file may prevent recovery; review the differences and do not delete backups or state files to force through.
Manually added Nginx includes have no automatic attachment backup, so their removal by rollback --attachment cannot be guaranteed. Follow the installation package guide to remove the manual include added this time and restore the relevant directives; after the configuration check and reload succeed, archive the managed state. Do not directly delete directories still referenced by the server.
Frequently Asked Questions¶
| Symptom | Resolution |
|---|---|
| The configuration page does not provide source/sync options, or refuses to generate a command | Open the latest configuration page, re-read the release version, and generate the command |
Unknown loading field, or auto-discovery does not accept [sdk] |
Get the new CLI from latest, keep the original site configuration, ID, and state directory, and reapply |
expected HTTP 200 or no safe <head> anchor |
Use an acceptance URL that returns the complete HTML directly; exclude redirects, authentication, downloads, non-standard head, or unsupported streaming pages |
| SDK returns 401/403/404 or HTML | Check anonymous read permissions, MIME, virtual directories, and business handler interception of /__rumable__/ |
| CDN digest mismatch | Compare the SDK in the installation package with the actual CDN files; upgrade to a matching package or restore a matching fixed address |
| SRI/CORS check failure | Confirm that the CDN allows the site's Origin; adjust the configuration only after understanding the impact of disabling browser integrity checks |
| identity succeeds but gzip probe fails | First save the failed response and probe records, check file-level compression overrides, source response compression, and the actual cache source, and then address the identified issue |
| Exclusive pool required or pool not started | Verify the target pool status and member applications in IIS Manager; shared pools must first be adjusted by operations, as the tool does not assign or start pools automatically |
| Old worker not exiting, initialization script version too old, or injection still present after disable | Keep the failure evidence; check the pool status, the instance hit by requests, and the corresponding HTML cache as described in IIS Configuration Application; if recovery is incomplete, use rollback with the original site |
existing RUM integration found |
Check the existing business SDK and keep only one integration to avoid duplicate injection by two layers of servers |
drift is non-empty or reports external changes |
Compare managed files, IIS rules, and server configuration, preserve the current state, and do not directly overwrite ownership information |
pendingTransaction=true |
Keep the state and backups, use rollback with the original site according to the error message; if recovery is incomplete, troubleshoot the target environment first |
| probe succeeds but no RUM data | Check actual browser execution, the reporting endpoint, CSP, tokens, sampling, and actual ingestion; HTTP success does not mean collection is complete |
Rumable's default automatic onboarding handles browser RUM; server-side OTel is a separate capability. Do not install or modify server-side Trace components just to onboard the Web SDK.