Skip to main content

RUM Receiver

RUM Receiver

Plugin: dem.plugin Module: receiver

Maintained by Netdata

Overview​

Monitor the availability and HTTP request outcomes of the browser telemetry receiver.

Netdata accepts browser telemetry over HTTP or HTTPS and routes each request to its configured site. One receiver serves all sites; a receiver outage creates measurement gaps while site jobs remain available.

This collector is only supported on the following platforms:

  • Linux
  • macOS

This collector only supports collecting metrics from a single instance of this integration.

The Netdata service needs write access to its DEM state directory. Configured TLS and GeoIP files must be readable by the Netdata service account.

Default Behavior​

Auto-Detection​

The stock receiver starts on loopback. Sites require explicit configuration.

Limits​

Browser payloads and request rates are limited by receiver settings.

Performance Impact​

Resource usage depends on accepted browser traffic and the configured measurement window. Optional OTLP export and investigation history add network and local disk work.

Setup​

Prerequisites​

Install the DEM plugin​

DEM is experimental and opt-in. Build Netdata with -DENABLE_PLUGIN_DEM=ON, or use --enable-plugin-dem with the source installer. Install the resulting DEM plugin package.

Expose the receiver​

Expose the listener through an HTTPS reverse proxy before sending traffic from remote websites. Set public_url and restrict trusted_proxies to that proxy. The default listener is local to this host.

Provision optional geography data​

Geography is optional. Provision an MMDB readable by the Netdata service account through Agent packaging, the topology IP intelligence downloader, or your own database update process. Some installations package these files with NetFlow; they are not present in every installation, and DEM does not require a running NetFlow plugin or download databases itself.

Supported database types are Netdata-Topology-GEO, GeoLite2-City, GeoLite2-Country, GeoIP2-City, GeoIP2-Country, DBIP-City-Lite and DBIP-Country-Lite. ASN and other database types are rejected. A country database supplies countries without city coordinates; an accepted type does not guarantee coverage for an address.

Publish updates by writing a separate complete file and atomically renaming it over the destination. Do not truncate or overwrite the active file: atomic replacement is required for consistent lookups. Check collector.geoip in rum-sites after provisioning.

Configuration​

Options​

Options apply to the canonical receiver.

Configuration options
GroupOptionDescriptionDefaultRequired
ConnectionlistenAddress and port that accept browser telemetry. The default accepts connections from this host only.127.0.0.1:19938no
public_urlPublic receiver base URL used to generate installation snippets. If neither receiver nor site sets a public URL, no snippet is offered.no
tls_certServer certificate file. Leave empty with TLS key to serve HTTP.no
tls_keyServer private key file. Set together with TLS certificate to serve HTTPS.no
trusted_proxiesProxy IP addresses or CIDR ranges allowed to supply forwarded client addresses. Leave empty to distrust forwarded headers.no
Limitsmax_body_bytesMaximum accepted browser payload size, in bytes. Larger requests are rejected.262144no
rate_limitLimits for browser telemetry requests.no
rate_limit.per_ip_per_minMaximum requests per client IP per minute.120no
rate_limit.per_site_per_secMaximum requests per site per second.500no
Collectionupdate_everyData collection interval, in seconds.10no
geoip_dbGeographic MMDB file; an explicit path uses only that file. Leave empty to try the Agent cache and then stock IP intelligence database; unavailable geography does not stop collection.no
geoip_db​

With an empty path, DEM tries topology-ip-intel/topology-ip-geo.mmdb under the Agent cache directory, then under its stock data directory. A rejected cache file does not hide an accepted stock file. An explicit path disables this automatic fallback. Sources are checked when the receiver starts and every 60 seconds, so a later provision or atomic replacement is adopted without restarting the receiver.

via File​

The configuration file name for this integration is dem/receiver.conf.

You can edit the configuration file using the edit-config script from the Netdata config directory.

cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata
sudo ./edit-config dem/receiver.conf
Examples​
Local receiver​

Minimal native configuration.

Examples
jobs:
- name: receiver
listen: 127.0.0.1:19938

Alerts​

There are no alerts configured by default for this integration.

Metrics​

Metrics grouped by scope.

The scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.

The availability state distinguishes an unavailable receiver from measured request outcomes.

Per receiver​

One configured receiver; breakdowns appear when matching observations are available.

This scope has no labels.

Metrics:

MetricDescriptionDimensionsUnit
dem_receiver.stateRUM receiver availabilityserving, unavailablestate
dem_receiver.requestsRUM HTTP requestssuccess, client_errors, server_errorsrequests/s

Troubleshooting​

Known Errors​

Missing or unexpected geography​

Cause

A site's capture policy can disable geography or limit it to country. The selected database may be unavailable, lack a matching address or field, or contain a record that cannot be decoded.

Fix

Check the site's capture.geolocation and collector.geoip in rum-sites. loaded means a supported declared database type and available reader, not full record validation, freshness, accuracy or coverage. using_previous means current candidates failed and a previous usable snapshot remains; confirmed source removal revokes it. unavailable does not stop browser collection.

Use reason and the local Agent logs to identify source failures. Make a supported MMDB readable by the Netdata service account, then publish it by atomic rename. A snapshot with a detected mapped-memory fault is never reused. lookup_errors counts errors for the active source generation, not unmatched addresses or missing fields. Refresh and fault changes are published by the receiver worker; lookup counts update at the receiver collection interval.

Other Problems​

No browser measurements​

Check the serving state in rum-sites, the configured public URL and the site allowed origins. In the website browser, follow the script and SDK requests through the collect POST. Last accepted payload and rejected-origin timestamps are observations; silence alone does not prove failure.


Do you have any feedback for this page? If so, you can open a new issue on our netdata/learn repository.