henrygd/beszel · error
no configured GPU collectors are available
Error message
no configured GPU collectors are available
What it means
During GPUManager initialization, if GPU_COLLECTOR is explicitly set, the manager only starts collectors from that priority list. This error is returned when zero of the explicitly configured collectors could be started, i.e. the operator forced collectors that are unavailable on this host. It aborts GPU monitoring startup.
Source
Thrown at agent/gpu.go:772
func NewGPUManager() (*GPUManager, error) {
if skipGPU, _ := utils.GetEnv("SKIP_GPU"); skipGPU == "true" {
return nil, nil
}
var gm GPUManager
caps := gm.discoverGpuCapabilities()
gm.GpuDataMap = make(map[string]*system.GPUData)
// Jetson devices should always use tegrastats (ignore GPU_COLLECTOR).
if caps.hasTegrastats {
gm.startTegraStatsCollector("3700")
return &gm, nil
}
// Respect explicit collector selection before capability auto-detection.
if collectorConfig, ok := utils.GetEnv("GPU_COLLECTOR"); ok && strings.TrimSpace(collectorConfig) != "" {
priorities := parseCollectorPriority(collectorConfig)
if gm.startCollectorsByPriority(priorities, caps) == 0 {
return nil, fmt.Errorf("no configured GPU collectors are available")
}
return &gm, nil
}
if !hasAnyGpuCollector(caps) {
return nil, fmt.Errorf(noGPUFoundMsg)
}
// auto-detect and start collectors when GPU_COLLECTOR is unset.
if gm.startCollectorsByPriority(gm.resolveLegacyCollectorPriority(caps), caps) == 0 {
return nil, fmt.Errorf(noGPUFoundMsg)
}
return &gm, nil
}
View on GitHub (pinned to b38fb7dafa)
Solutions
- Check GPU_COLLECTOR spelling against the supported collector identifiers (nvtop, nvidia-smi, rocm, intel, macmon, powermetrics, tegrastats)
- Install the binaries for the configured collectors or remove GPU_COLLECTOR to enable auto-detection
- Verify the host actually has GPUs matching the configured collectors
- Inside containers, ensure the GPU device + tool are present in the image and device is passed through
Example fix
// before: forces collectors absent on this host GPU_COLLECTOR=intel_gpu_top // after: either install the tool or let auto-detection choose unset GPU_COLLECTOR # or install intel-gpu-tools
Defensive patterns
Strategy: validation
Validate before calling
// validate GPU_COLLECTOR against available tools before starting the agent
for _, c := range strings.Split(os.Getenv("GPU_COLLECTOR"), ",") {
if _, err := exec.LookPath(strings.TrimSpace(c)); err != nil {
log.Warn("configured GPU collector missing", "collector", c)
}
} Try / catch
gm, err := newGPUManager()
if err != nil && strings.Contains(err.Error(), "no configured GPU collectors") {
log.Warn("GPU monitoring disabled: configured collectors unavailable")
return
} Prevention
- Verify collector names against the supported list before setting GPU_COLLECTOR
- Unset GPU_COLLECTOR to fall back to auto-detection
- Ensure GPU tools and devices are present in containerized agent images
- Test the configured collector binary manually on the target host
When it happens
Trigger: GPU_COLLECTOR env var is set (e.g. 'nvtop,intel') but startCollectorsByPriority returns 0 — none of the named binaries exist, none have the required capabilities, or all fail their initial collection check.
Common situations: GPU_COLLECTOR copied from another machine's config where different GPUs/tools exist; typo in collector name (e.g. 'nvidia' instead of the expected identifier); tools not installed in a containerized agent image; missing capabilities in restricted environments.
Related errors
- SSH disabled
- no GPU found - see https://beszel.dev/guide/gpu
- HUB_URL environment variable not set
- must set TOKEN or TOKEN_FILE
- data directory not found
AI-assisted analysis of henrygd/beszel@b38fb7dafa (2026-08-31).
Data as JSON: /api/errors/6a6ce8fa0a43dd95.
Report an issue: GitHub.