UniFi Network Health Report – Open Source Python Tool (v1.0.0)

If you run a self-hosted Ubiquiti UniFi network — whether it’s a home lab, small business, or multi-site setup — you know the UniFi dashboard is great for real-time monitoring but falls short when you want a clean summary you can save, share, or review later. I built UniFi Network Health Report to fill that gap: a Python tool that connects to your controller and generates a standalone HTML report covering everything that matters.
What It Does
Run one command and get a timestamped HTML file — no external dependencies, no JavaScript frameworks, no internet connection required to view it. The report covers:
- Dual-WAN status — IP, ISP, availability %, latency, uptime, and media type per connection
- Speedtest results — last download/upload/ping pulled directly from the controller
- Gateway stats — CPU, memory, and uptime for your UDM/UDM-SE/UDM-Pro
- Top bandwidth consumers — which devices are eating your pipe
- Wireless Networks — SSID table with security type, bands, and client counts broken out by user / IoT / guest
- VPN status — remote user sessions and site-to-site toggle
- Networks & VLANs — every configured network with VLAN ID, subnet, and DHCP status
- Access point health — per-AP clients, TX retry %, channel, uptime, and auto-generated status badges
- Switch overview — port count, PoE budget (used W vs. total W), and expandable port error dropdowns with full RX/TX breakdown
- Firmware compliance — every device with its version and whether an upgrade is available
- Auto-generated recommendations — prioritized action items flagged by configurable thresholds
Why I Built It
The UniFi dashboard is excellent for live monitoring, but there’s no built-in way to generate a weekly summary, email a health snapshot to a client, or keep a historical record of what your network looked like last Tuesday. I wanted something I could run on demand, open in a browser, and hand off to someone without them needing a UniFi login.
The tool targets self-hosted controllers — UDM, UDM-SE, UDM-Pro, and standalone Network Application installs. It handles the UDM’s /proxy/network/ API prefix automatically and degrades gracefully when endpoints aren’t available (the REST events endpoint was removed in Network Application 10.x — the tool detects this and skips the section cleanly rather than crashing).
Getting Started
# Clone and install
git clone https://github.com/FryguyPA/Unifi_Network_Health_Report.git
cd Unifi_Network_Health_Report
pip install -r requirements.txt
# Configure
cp config.example.yaml config.yaml
# Edit config.yaml with your controller IP, username, and password
# Run — prompts you to pick a site if you have more than one
python generate_report.py --open
The --open flag opens the report in your default browser immediately. Use --debug to see exactly which API endpoints are being called.
Site Discovery
Rather than hard-coding a site name in your config, the tool logs into your controller, fetches all accessible sites, and presents a numbered list. If you only have one site it selects it automatically — great for multi-site setups.
Configuration
unifi:
host: "192.168.1.1"
port: 443 # 443 for UDM/UDM-Pro, 8443 for standalone app
username: "admin"
password: "your-password"
verify_ssl: false
report:
site_name: "My Network"
output_dir: "reports"
timezone: "America/Chicago"
thresholds:
ap_retry_pct: 5.0
ap_reboot_days: 7
switch_error_rate: 100
Tested On
Built and tested against a UDM-SE running Network Application 10.3.58 / firmware 5.0.16. Should work on any UDM-family device or standalone Network Application install.
Source Code
Full source on GitHub under the Apache 2.0 license:
👉 github.com/FryguyPA/Unifi_Network_Health_Report
Pull requests, issues, and feedback welcome!