Tech ONTAP Blogs
Tech ONTAP Blogs
Planning an ONTAP upgrade? Before you touch a single cluster, wouldn't it be great to know exactly what blockers, warnings, and risks lie ahead - all from a comprehensive, automated pre-upgrade assessment? That's precisely what Upgrade Health Checker (UHC) delivers.
In this blog, we'll walk you through how to experience UHC v9 hands-on using NetApp Lab on Demand - a free, self-service lab environment available to NetApp customers, partners, and internal teams. We'll run UHC against ONTAP clusters in the lab, demonstrating how the new multi-run dashboard aggregates results across your entire fleet in a single view. Whether you're a customer evaluating UHC, a NetApp Professional Services consultant, or a Systems Account Manager (SAM), this guide gives you a risk-free way to explore UHC's capabilities before deploying it in production.
Upgrade Health Checker (UHC) is an onsite advisory tool for ONTAP systems designed to perform comprehensive pre-upgrade health assessments. It connects to your ONTAP cluster, collects AutoSupport data, evaluates over 1,600+ rules across Upgrades and At-Risk Systems (ARS), and generates a detailed report identifying everything you need to address before upgrading.
| Capability | What It Does |
|---|---|
| Actionable Insights | Provides targeted recommendations to resolve pre-upgrade blockers and warnings, enabling efficient decision-making |
| Continuous Validation | Maintains current validation checks and risk assessments to ensure upgrade readiness with every run |
| Automation Integration | Seamlessly integrates with existing automation and orchestration frameworks via CLI parameters and config files |
| Multi-Format Reports | Generates HTML (human-readable), JSON (machine-processable), and Excel reports for every assessment |
| Firmware Awareness | Collects and reports Service Processor, drive, and storage shelf firmware information |
| Multi-Run Dashboard | Generates a consolidated dashboard/index.html aggregating results across all previous runs for at-a-glance fleet visibility |
NetApp Lab on Demand provides a fully configured environment with everything you need to try UHC - ONTAP clusters, a Windows jumphost, and a Linux host. Here's how to get started:
http://ae.demo.netapp.com/accountsFrom within the jumphost, open a web browser and download UHC:
uhc_v9.zip (the latest version)UHC runs on Linux, so we need to transfer the zip file from the Jumphost to RHEL1:
C:\Users\Administrator.DEMO\Downloads on the left pane (Jumphost)uhc_v9.zip to the RHEL1 host (right pane)Now comes the exciting part. Connect to RHEL1 via PuTTY and install UHC once - then run it sequentially against both clusters. Each run builds on the same ./runs/ directory, so the dashboard automatically aggregates all results when you're done.
# Unzip the UHC package
unzip uhc_v9.zip
# Navigate to the extracted folder
cd v9/
# Verify extracted contents
ls -lrt
# uhc (main executable)
# uhc.sig (code signature)
# UHC-Linux-codesigning-certificate-public.pem
# UHC-Linux-chain-certificates-public.pem
# RELEASE_NOTES.md
# README.pdf
# config.yaml.example (optional config template)
# Make UHC executable
chmod +x uhc
# Launch UHC - first run (cluster1)
./uhc
When prompted, enter the following for cluster1:
| Prompt | What to Enter |
|---|---|
| Cluster IP Address | 192.168.0.101 (cluster1) |
| Cluster Username | admin |
| Cluster Password | Use the password from Lab Credentials page |
| EULA | Type all to view, then y to accept |
| Target ONTAP Version | Use arrow keys to select 9.17.1P7 |
Once you provide the inputs, UHC takes over automatically:
.tgz bundle./runs/dashboard/index.htmlReport Generation Status: Success
Dashboard Generation : Success
Telemetry Upload Status : Success
Auto-Update Status : No New Update
Email Notification Status: Disabled
Overall execution time: 310.43 seconds
Reports are saved to:
/root/v9/runs/20260614_021826_7b29285d-0225-41e3-8d53-7baf51487d18/192.168.0.101/results/
# uhc_cluster1_20260614021758.html (human-readable HTML report)
# uhc_cluster1_20260614021758.json (machine-processable JSON)
# uhc_cluster1_20260614021758.xlsx (Excel spreadsheet)
# Launch UHC - second run (cluster2), from the same v9/ directory
./uhc
When prompted, enter the following for cluster2:
| Prompt | What to Enter |
|---|---|
| Cluster IP Address | 192.168.0.102 (cluster2) |
| Cluster Username | admin |
| Cluster Password | Use the password from Lab Credentials page |
| EULA | EULA is already accepted - UHC will skip this prompt |
| Target ONTAP Version | Use arrow keys to select 9.18.1P3 |
UHC repeats the full assessment cycle for cluster2, appending the new run to the existing ./runs/ directory alongside the cluster1 results. The dashboard is automatically updated to reflect both clusters.
Report Generation Status: Success
Dashboard Generation : Success
Telemetry Upload Status : Success
Auto-Update Status : No New Update
Email Notification Status: Disabled
Overall execution time: 377.54 seconds
Reports are saved to:
/root/v9/runs/20260614_022432_5b199511-003c-40ad-add4-845693b40cb5/192.168.0.102/results/
# uhc_cluster2_20260614022351.html (human-readable HTML report)
# uhc_cluster2_20260614022351.json (machine-processable JSON)
# uhc_cluster2_20260614022351.xlsx (Excel spreadsheet)
After both runs, the runs/ directory structure looks like this:
ls -lrt /root/v9/runs/
# 20260614_021826_7b29285d-...tar.gz (cluster1 archive)
# 20260614_021826_7b29285d-.../ (cluster1 run records)
# 20260614_022432_5b199511-...tar.gz (cluster2 archive)
# 20260614_022432_5b199511-.../ (cluster2 run records)
# dashboard/ (multi-run dashboard - both clusters)
With both cluster runs complete, the next step is to view the results. UHC v9 automatically generates a multi-run dashboard that aggregates findings from every run into a single browsable page. Rather than copying files with WinSCP, the easiest way to access it from the Jumphost is to serve the runs/ directory directly from RHEL1 using Python's built-in HTTP server - giving you live, clickable links from the dashboard straight into each cluster's full HTML report.
Back in the PuTTY session on RHEL1, navigate to the runs/ directory and note its IP address:
# Navigate to the runs directory - this will be the HTTP server root
cd /root/v9/runs
# Get RHEL1's IP address
hostname -i
# fe80::250:56ff:fe85:d91a%ens192 192.168.0.61
# Use the IPv4 address: 192.168.0.61
Start a lightweight HTTP server from the runs/ directory so the Jumphost can reach all reports and the dashboard over the network:
# Start HTTP server on port 8550, accessible from all interfaces
python3 -m http.server 8550 --bind 0.0.0.0
Ctrl+C to stop it when done. Everything under /root/v9/runs/ is immediately accessible, including both cluster run directories and the dashboard.On the Jumphost, open Google Chrome and navigate to:
http://192.168.0.61:8550/dashboard/index.html
The UHC Dashboard loads and displays both cluster1 and cluster2 side-by-side, each showing a summary of blockers, warnings, at-risk findings, and passed checks along with the current and target ONTAP versions.
From the Dashboard, click through to each cluster's detailed report. The dashboard links resolve directly through the HTTP server, so the full report opens instantly in the same browser tab.
In the Dashboard, click the HTML report link for cluster1. The detailed report opens at:
http://192.168.0.61:8550/20260614_021826_7b29285d-0225-41e3-8d53-7baf51487d18/192.168.0.101/results/uhc_cluster1_20260614021758.html
Here's what the cluster1 report shows:
| Property | Value |
|---|---|
| Cluster Name | cluster1 |
| Current ONTAP Version | 9.16.1 |
| Target ONTAP Version | 9.17.1P7 |
| Nodes | cluster1-01, cluster1-02 (both SIMBOX) |
| Storage Disks | 34 total, 966.91 GB capacity |
| Multi-Admin Verification | Not Enabled |
UHC evaluated 1,690 rules for cluster1 and found:
| Category | Count | What It Means |
|---|---|---|
| Blockers | 0 | No critical issues preventing upgrade |
| Warnings | 3 | Non-blocking issues to review before upgrade |
| Functional Changes | 5 | Feature/behavior changes to be aware of |
| At Risk | 11 | Known risks relative to the target version |
| Passed | 488 | Checks that passed successfully |
| Skipped | 1,183 | Rules not applicable to this configuration |
When done reviewing, navigate back to the Dashboard tab and click the HTML report link for cluster2.
The cluster2 detailed report opens at:
http://192.168.0.61:8550/20260614_022432_5b199511-003c-40ad-add4-845693b40cb5/192.168.0.102/results/uhc_cluster2_20260614022351.html
Here's what the cluster2 report shows:
| Property | Value |
|---|---|
| Cluster Name | cluster2 |
| Current ONTAP Version | 9.16.1 |
| Target ONTAP Version | 9.18.1P3 |
| Nodes | cluster2-01, cluster2-02 (both SIMBOX) |
| Storage Disks | 34 total, 966.91 GB capacity |
| Multi-Admin Verification | Not Enabled |
UHC evaluated 1,690 rules for cluster2 and found:
| Category | Count | What It Means |
|---|---|---|
| Blockers | 0 | No critical issues preventing upgrade |
| Warnings | 2 | Non-blocking issues to review before upgrade |
| Functional Changes | 5 | Feature/behavior changes to be aware of |
| At Risk | 8 | Known risks relative to the target version |
| Passed | 487 | Checks that passed successfully |
| Skipped | 1,188 | Rules not applicable to this configuration |
In under 30 minutes, you've experienced the full UHC v9 workflow - from installing the tool on a Linux host to running assessments against two ONTAP clusters and viewing a consolidated Dashboard on the Windows Jumphost. Here's what we accomplished:
python3 -m http.serverhttp://192.168.0.61:8550/dashboard/index.html - showing both clusters and linking to their full reportsLab on Demand is the perfect sandbox to build confidence with UHC before rolling it out across your production fleet. Try different target ONTAP versions, run against multiple clusters, and experience how the dashboard grows into a comprehensive fleet health view with every run.
Enjoyed this walkthrough? There's more to come. Stay tuned for our next blog in the UHC series, where we'll continue exploring what Upgrade Health Checker can do for your ONTAP environment.
Stay tuned!
| Resource | Link |
|---|---|
| UHC Documentation | docs.netapp.com/us-en/upgrade-health-checker |
| Download UHC | NetApp Support Site |
| NetApp Console Automation Hub | console.netapp.com/automationHub |
| Lab on Demand | labondemand.netapp.com |
| UHC Overview Video | Upgrade Health Checker: An Overview |
| Input Parameters Reference | Input Parameters Guide |
| UHC Dashboard Blog | See Your Entire ONTAP Installed Base's Upgrade Readiness in One View - Introducing UHC v9 |
For questions, feedback, or assistance with Upgrade Health Checker, reach out to the UHC product team:
ng-uhc-productgroup@netapp.com
NetApp, the NETAPP logo, and ONTAP are trademarks or registered trademarks of NetApp, Inc.
The views expressed here are those of the author and do not necessarily reflect the views of NetApp.