Skip to main content

Lighthouse Desktop Audit

Lighthouse Desktop Audit

Plugin: dem.plugin Module: lighthouse

Maintained by Netdata

Overview​

Monitor desktop lab performance for a web page with Lighthouse. Inspect the performance category score, individual lab timings, layout shift and audit execution outcomes.

Audits the configured HTTP or HTTPS page using the Lighthouse desktop preset and sandboxed Chromium at the native job interval. Configuration Test validates preparation without running an audit. Lab measurements describe this browser attempt and are not field Core Web Vitals.

This collector is only supported on the following platforms:

  • Linux

This collector supports collecting metrics from multiple instances of this integration.

PermissionNeeded when
Execute the prepared Node runtime and sandboxed ChromiumEvery browser attempt
Write to the DEM state directoryRetaining history and optional captures

Default Behavior​

Auto-Detection​

Jobs require explicit configuration; no websites or scripts are discovered automatically.

Limits​

Missing scores or timings produce measurement gaps; a measured zero remains zero. Running and waiting attempts do not refresh the prior observation, which becomes stale after two collection intervals. HTML reports are disabled unless requested. No stock performance-score threshold alert is configured.

Performance Impact​

Each attempt starts a fresh browser and consumes CPU, memory and target website requests. Increasing update_every reduces frequency. Jobs share one browser admission slot, so concurrent due jobs can wait. Optional captures consume local disk space.

Setup​

Prerequisites​

Prepare the browser runtime​

Configure the Node executable, pinned Playwright and Lighthouse dependencies, and full Chromium binary in the runtime section of dem.conf. Chromium must run with its sandbox enabled as the Netdata service account. Restart dem.plugin after changing runtime paths; the plugin does not download dependencies. Follow the DEM runtime preparation guide for the pinned versions and setup commands.

Configuration​

Options​

Options apply independently to each native job.

Configuration options
GroupOptionDescriptionDefaultRequired
TargetnameNative job name used to identify this monitor and its history. Renaming creates a separate monitor.yes
urlAbsolute HTTP or HTTPS URL of the page to audit. Embedded credentials are not accepted.yes
Diagnosissave_reportSave the full Lighthouse HTML report. Reports can contain sensitive URLs and page content.nono
Collectionupdate_everyData collection interval, in seconds.1800no
timeoutBrowser attempt timeout, in seconds. Waiting for another browser attempt is excluded.180no

via File​

The configuration file name for this integration is dem/lighthouse.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/lighthouse.conf
Examples​
Monitor a home page​

Create one native browser monitor after preparing the runtime.

Examples
jobs:
- name: home
url: https://example.org/

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.

Each native job has its own chart identity. Attempt duration excludes waiting for admission. Missing observations are omitted.

Per job​

One configured native browser monitor.

This scope has no labels.

Metrics:

MetricDescriptionDimensionsUnit
dem_synthetic.execution_stateSynthetic attempt outcomeunknown, success, failed, timeout, inconclusive, error, cancelledstate
dem_synthetic.durationSynthetic attempt durationdurationmilliseconds
dem_synthetic.lighthouse.performanceLighthouse performance scoreperformancepoints
dem_synthetic.lighthouse.timingsLighthouse lab timingsfcp, lcp, tbt, speed_indexmilliseconds
dem_synthetic.lighthouse.clsLighthouse cumulative layout shiftclsratio

Live Data​

Use these process-wide Functions through the Agent or Cloud for both journey and Lighthouse jobs. Invoke their public synthetics-* names with the documented filters; no job selector or active browser is required.

Synthetic monitors​

Invoke synthetics-checks. Active native monitors and their latest observation. Disabled and failed-startup configuration remains in native job status. Freshness belongs to the last observation, independently of a waiting or running attempt.

AspectDescription
NameSynthetics-checks
Require Cloudno
PerformanceReads local active snapshots and retained evidence without starting a browser or acquiring browser admission. Artifact fetch reads at most 5 MiB.
SecurityRequires member-equivalent access for observations and retained text; artifact bytes require administrator-equivalent access. Captures and reports may contain sensitive URLs, page content and user input; they are not universally redacted.
AvailabilityAvailable while dem.plugin is running, independently of active journey or Lighthouse jobs. Individual retained evidence may be absent or expired.

Prerequisites​

No additional configuration is required.

Parameters​

ParameterTypeDescriptionRequiredDefaultOptions
Monitor (job_id)stringNative module and job name, such as journey:checkout. Leave empty to include all monitors when listing.no
Kind (kind)stringFilter by journey or lighthouse. Leave empty to include both kinds.no
Maximum rows (limit)stringMaximum returned rows, from 1 to 2000. Defaults to 2000; truncated indicates additional matching rows.no2000

Returns​

At most limit active jobs, with independent current-attempt state and last-observation freshness. The response includes process artifact retained_bytes, protected_bytes and cleanup_errors under artifacts. Disabled and failed-startup jobs are visible through native configuration status.

ColumnTypeUnitVisibilityDescription
job_idstringMonitor.
kindstringKind.
namestringName.
targetstringTarget.
statestringCurrent state.
freshbooleanLast observation fresh.
run_idstringLast run.
outcomestringLast outcome.
completed_ustimestampLast completion. Unix microseconds; null when unavailable.
duration_msfloatmsAttempt duration.
last_success_ustimestampLast success in this activation. Unix microseconds; null when unavailable.
last_failure_ustimestampLast failure in this activation. Unix microseconds; null when unavailable.
errorstringLast error.
history_errorstringHistory error.

Synthetic runs​

Invoke synthetics-runs. Retained attempts selected by start time, with their latest retained outcome even when completion is outside the range. after and before include their entire Unix second or accept negative offsets from now; omitted bounds cover retained history through now. Results are capped at 2000 and disclose truncation.

AspectDescription
NameSynthetics-runs
Require Cloudno
PerformanceReads local active snapshots and retained evidence without starting a browser or acquiring browser admission. Artifact fetch reads at most 5 MiB.
SecurityRequires member-equivalent access for observations and retained text; artifact bytes require administrator-equivalent access. Captures and reports may contain sensitive URLs, page content and user input; they are not universally redacted.
AvailabilityAvailable while dem.plugin is running, independently of active journey or Lighthouse jobs. Individual retained evidence may be absent or expired.

Prerequisites​

No additional configuration is required.

Parameters​

ParameterTypeDescriptionRequiredDefaultOptions
Monitor (job_id)stringNative module and job name, such as journey:checkout. Leave empty to include all monitors when listing.no
Kind (kind)stringFilter by journey or lighthouse. Leave empty to include both kinds.no
Outcome (outcome)stringFilter by unknown, success, failed, timeout, inconclusive, error or cancelled. Leave empty for all outcomes.no
Started after (after)stringInclusive run start-time lower bound in Unix seconds or a negative offset from now. Leave empty for all retained history.no
Started before (before)stringInclusive run start-time upper bound in Unix seconds or a negative offset from now. Leave empty for the current time.no
Maximum rows (limit)stringMaximum returned rows, from 1 to 2000. Defaults to 2000; truncated indicates additional matching rows.no2000

Returns​

At most limit retained attempts selected by start time, with explicit truncated and effective time bounds. Zero or missing execution timestamps and missing durations are null rather than fabricated measurements.

ColumnTypeUnitVisibilityDescription
run_idstringRun.
job_idstringMonitor.
kindstringKind.
namestringName.
targetstringTarget.
started_ustimestampStarted. Unix microseconds; null when unavailable.
completed_ustimestampCompleted. Unix microseconds; null when unavailable.
outcomestringOutcome.
duration_msfloatmsAttempt duration.
capture_statestringCapture state.
errorstringError.
history_errorstringHistory error.

Synthetic run detail​

Invoke synthetics-run. One retained or latest active attempt, independent of picker bounds, with original test phases, errors, counts, nullable lab measurements and bounded reporter events. Missing completion means no verified terminal observation.

AspectDescription
NameSynthetics-run
Require Cloudno
PerformanceReads local active snapshots and retained evidence without starting a browser or acquiring browser admission. Artifact fetch reads at most 5 MiB.
SecurityRequires member-equivalent access for observations and retained text; artifact bytes require administrator-equivalent access. Captures and reports may contain sensitive URLs, page content and user input; they are not universally redacted.
AvailabilityAvailable while dem.plugin is running, independently of active journey or Lighthouse jobs. Individual retained evidence may be absent or expired.

Prerequisites​

No additional configuration is required.

Parameters​

ParameterTypeDescriptionRequiredDefaultOptions
Monitor (job_id)stringExact native module and job name that owns the requested run, such as journey:checkout.yes
Run (run_id)stringExact run identifier returned by synthetic inventory or run history.yes

Returns​

One row per retained reporter event, preserving actual and expected status and failure phase. The run object also contains test counts, nullable lab metrics, capture state, artifact metadata and history errors; dropped_events discloses omitted event detail.

ColumnTypeUnitVisibilityDescription
at_mstimestampEvent time. Unix milliseconds.
kindstringEvent.
test_idstringTest.
titlestringTitle.
phasestringPhase.
statusstringActual status.
expected_statusstringExpected status.
duration_msfloatmsDuration.
messagestringMessage.

Synthetic artifacts​

Invoke synthetics-artifact. Retained capture metadata for one run; file bytes are verified when fetched. Supplying artifact_id requests base64-encoded bytes and requires administrator-equivalent permissions. Screenshots and HTML reports may contain sensitive content. Missing retained files are expired or unavailable; fetches are limited to 5 MiB.

AspectDescription
NameSynthetics-artifact
Require Cloudno
PerformanceReads local active snapshots and retained evidence without starting a browser or acquiring browser admission. Artifact fetch reads at most 5 MiB.
SecurityRequires member-equivalent access for observations and retained text; artifact bytes require administrator-equivalent access. Captures and reports may contain sensitive URLs, page content and user input; they are not universally redacted.
AvailabilityAvailable while dem.plugin is running, independently of active journey or Lighthouse jobs. Individual retained evidence may be absent or expired.

Prerequisites​

No additional configuration is required.

Parameters​

ParameterTypeDescriptionRequiredDefaultOptions
Monitor (job_id)stringExact native module and job name that owns the requested run, such as journey:checkout.yes
Run (run_id)stringExact run identifier returned by synthetic inventory or run history.yes
Artifact (artifact_id)stringExact recorded artifact identifier to fetch its bytes. Leave empty to list capture metadata.no

Returns​

Recorded capture metadata with retained-manifest availability. Fetch verifies content and returns encoding=base64 and data_base64 without rendering HTML. A missing recorded capture returns expired_or_unavailable, which does not prove why the file is absent.

ColumnTypeUnitVisibilityDescription
artifact_idstringArtifact.
kindstringKind.
mimestringContent type.
bytesintegerbytesSize.
sha256stringSHA-256.
availabilitystringAvailability.

Troubleshooting​

Other Problems​

No conclusive observations​

Inspect native job status and synthetic inventory for runtime preparation errors, waiting attempts or execution inability. Open the latest retained run for errors and actual failure phases. Missing measurements are gaps; stale, inconclusive and cancelled observations are not recovery.


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