Polls a UniFi network controller and exposes metrics to Prometheus via a /metrics endpoint on port 9130.
prometheusdeployed first — Unpoller joins themonitoringDocker network it creates- A read-only local user named
unifipollercreated on the UniFi controller
In your UniFi controller:
- Go to Settings → Admins & Users → Add Admin
- Set role to Read Only
- Uncheck "Use a Ubiquiti account" — create a local account
- Set the username to
unifipollerand choose a strong password - Save, then add that password to your
.envfile
cp .env.example .envnano .env| Variable | Description |
|---|---|
UNIFI_URL |
Controller URL — no :8443 for UDM/UDM-Pro/UXG |
UNIFI_USER |
Read-only controller username |
UNIFI_PASS |
Controller password |
docker compose up -d# Check logs — should show successful poll
docker logs unpoller
# Confirm metrics endpoint is responding
curl http://localhost:9130/metricsDocker healthchecks are intentionally omitted because the upstream image is minimal and does not include /bin/sh, wget, or curl. Verify availability through Prometheus scrape status or the published /metrics endpoint instead.
| Device | URL format |
|---|---|
| UDM, UDM-Pro, UXG, recent CloudKey | https://192.168.x.x |
| Legacy CloudKey, self-hosted controller | https://192.168.x.x:8443 |
Import the official Unpoller dashboards from Grafana by ID:
| Dashboard | ID |
|---|---|
| UniFi Insights - Sites | 11315 |
| UniFi Insights - USG | 11312 |
| UniFi Insights - UAP | 11314 |
| UniFi Insights - USW | 11313 |
These variables are disabled by default. Note: DPI, events, alarms, and anomalies are only exported to InfluxDB/Loki outputs — they do not appear in the Prometheus /metrics endpoint. Enabling them here has no effect unless you add an InfluxDB output.
| Variable | Description |
|---|---|
UP_UNIFI_DEFAULT_SAVE_DPI |
Deep packet inspection data (InfluxDB/Loki only) |
UP_UNIFI_DEFAULT_SAVE_EVENTS |
Controller events (InfluxDB/Loki only) |
UP_UNIFI_DEFAULT_SAVE_ALARMS |
Controller alarms (InfluxDB/Loki only) |
UP_UNIFI_DEFAULT_SAVE_ANOMALIES |
Network anomalies (InfluxDB/Loki only) |
UP_UNIFI_DEFAULT_SAVE_IDS |
Intrusion detection (InfluxDB/Loki only) |
docker compose pull
docker compose up -dUnpoller is stateless — no data is stored locally, so no backup is needed.