In rootless mode, the standard DCGM exporter cannot access the NVML library. Instead, we provide a custom GPU exporter that runs as a user service.
# Install systemd service
cp scripts/exporters/gpu-exporter.service.template ~/.config/systemd/user/gpu-exporter.service
# Update the path in the service file to point to your repo
sed -i "s|/home/sbadakhc/src/github.com/xencon/aixcl|$(pwd)|g" ~/.config/systemd/user/gpu-exporter.service
# Start the service
systemctl --user daemon-reload
systemctl --user enable gpu-exporter.service
systemctl --user start gpu-exporter.service
# Verify it's working
curl http://localhost:9445/metricsnvidia_smi_utilization_gpu- GPU utilization percentagenvidia_smi_memory_used_bytes- GPU memory usednvidia_smi_memory_total_bytes- Total GPU memorynvidia_smi_temperature_gpu- GPU temperature in Celsiusnvidia_smi_power_draw_watts- Power consumption in Watts
The following dashboards are fully functional in rootless Podman mode:
-
AIXCL - System Overview (Prometheus)
- CPU, Memory, Disk metrics
- Network traffic
- Container resource usage
-
AIXCL - GPU Metrics (Prometheus)
- NVIDIA GPU utilization
- Memory usage
- Temperature and power
-
AIXCL - PostgreSQL Performance (Prometheus)
- Query performance
- Connection stats
- Database health
The following features require Docker socket access (incompatible with rootless):
- Container Logs Dashboard (Loki)
- Docker Containers Dashboard (Loki)
Access logs directly via CLI:
# View specific service logs
./aixcl stack logs <service>
# Examples:
./aixcl stack logs ollama
./aixcl stack logs open-webui
./aixcl stack logs postgres- Alloy (log shipper) requires Docker socket or journal access
- Rootless Podman uses user-scoped journal (not accessible from containers)
- File-based log collection is limited
Consider:
- Running Alloy on host instead of container
- Configuring Podman to use file-based logging
- Using
podman logscommand for log access