Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Health Checks & Admin

Two adjacent Settings sub-tabs cover operations: Import (manual scan controls + daemon status) and Health (a structured environment/config audit). Both are populated by HealthChecker::run() (backend/common/HealthChecker.php), re-run on every view render with a 30-second throttle.

Health sub-tab

Health check groups

GroupCovers
PHP ExtensionsPHP version, ext-openswoole, ext-rrd (only required for the RRD datasource), ext-inotify
TimezonePHP timezone, NFCAPD_TZ validity, and a plausibility check comparing the most recent nfcapd filename’s timestamp against “now”
nfdumpBinary presence/version (minimum 1.7.2 — the JSON field-name scheme changed from 1.6.x), max-processes config, and process inspection (below)
SourcesAt least one configured
Import DaemonRunning / initializing / watching N directories, last auto-import age
nfcapd Pathsprofiles-data reachable; per-profile, per-source directory presence, flat-vs-nested layout, and capture freshness (warns past ~12 minutes — 2.4× nfcapd’s default 5-minute rotation)
RRD Storage / VictoriaMetricsDelegated to the active Datasource::healthChecks()

Every entry is ok / warning / error, sorted errors-first within its group, with an optional hint line explaining what to actually do about it.

Process inspection

Misc::countProcessesByName() — the function backing the nfdump concurrency guard (see Nfdump Integration) — needs ps or pgrep on PATH. Without either, it silently returns 0, which makes the guard permanently believe no nfdump process is running. The Process inspection health entry exists specifically to surface that condition as a warning rather than let it look like a healthy, quiet system.

Import (Admin)

Import sub-tab

Trigger import re-runs the catch-up scan for the selected profile; Force rescan additionally resets the datasource for that profile first (a destructive re-import, guarded by a confirmation signal). Both lock the profile’s ImportDaemon for the duration so the ongoing inotify poll doesn’t advance the datasource ahead of where the manual scan has reached.