Nutanix Platform Metrics Integration

Overview

Login Enterprise can pull infrastructure metrics directly from Nutanix Prism and display them alongside your test results in Platform Metrics. During a Load Test or Continuous Test, you see EUX scores, session measurements, and Nutanix cluster, host, and VM metrics on the same timeline, without switching tools.

The solution is available in the Login VSI GitHub repo.

What You Can Do With It

Three use cases drive most of the value here:

  1. Continuous Testing keeps Nutanix infrastructure metrics flowing 24/7 alongside user experience scores. If something changes overnight, you see it in Platform Metrics the next morning, next to the EUX data, not in a separate tool.

  2. Load Testing lets you correlate infrastructure saturation with EUC performance degradation as user count climbs. When EUX scores drop, you can check immediately whether the host CPU was already at 90%, whether storage latency climbed during the ramp, or whether a specific VM's disk bandwidth maxed out.

  3. Migration and bake-off scenarios let you run the same workload across two configurations, or two EUC stacks on the same Nutanix infrastructure, and compare Platform Metrics side by side. CPU behavior, IOPS, and VM-level latency across identical workloads. The data makes platform decisions easier to justify.

Frame 2160.png

Metrics Collected

Cluster-Level (via Prism Element v2 API)

Metric

Unit

Cluster CPU Usage

percent

Cluster Memory Usage

percent

Cluster Storage IOPS (Total, Read, Write)

iops

Cluster Storage Latency (Avg, Read, Write)

ms

Cluster IO Bandwidth (Total, Read, Write)

kBps

Host-Level (via Prism Central v4 API)

Metric

Unit

Host CPU Usage

percent

Host Memory Usage

percent

Host Storage IOPS (Total, Read, Write)

iops

Host Storage Latency (Avg, Read, Write)

ms

Host IO Bandwidth (Total, Read, Write)

kBps

VM-Level (via Prism Central v4 API)

Metric

Unit

VM CPU Usage

percent

VM CPU Ready Time

percent

VM Memory Usage

percent

VM Disk Latency (Avg)

ms

VM Disk Bandwidth

kBps

VM Network RX

bytesPerSec

VM Network TX

bytesPerSec

Note: Cluster-level metrics work without Prism Central. Host and VM metrics require it.

Requirements

Nutanix

Component

Minimum Version

Notes

AOS (Prism Element)

6.7

Cluster-level stats via PE v2 API

Prism Central

2024.3

Required for host and VM stats

AHV

10.x

VM stats tested on AHV only

The integration has been tested against AOS 6.8.1, AOS 6.10.1, Prism Central 2024.3, and Prism Central 2024.3.1.4.

On Prism Central 7.5 and newer, the script negotiates the API version automatically. On older PC versions (any pc.YYYY.x format), it defaults to v4.0.

Login Enterprise

  • Login Enterprise appliance with Platform Metrics enabled

  • API token with Configuration access level

  • Network access from the machine running the script to the Nutanix port 9440 and the Login Enterprise port 443

PowerShell

  • Windows PowerShell 5.1 (tested and validated)

  • PowerShell 7.x (compatible)

  • No admin privileges required (unless importing a cert)

Login Enterprise Setup

  1. Enable Platform Metrics

    1. Platform Metrics is currently a preview feature. Enable it in your browser's DevTools console (F12 in most browsers): leSetFeatureFlag('platformMetrics', 1)

    2. Refresh the page after running.

  2. Create an Environment

    1. In Configuration > Environments, create a single environment named, for example, Nutanix Platform Metrics. This environment receives all metric types from the collector.

    2. Copy the UUID of the environment from the browser URL bar when viewing it. You will use this as the -LEEnvironmentId parameter when running the script.

  3. Create a Test: Link the environment to a continuous test or a load test. The Platform Metrics tab appears on test result pages once an environment is linked. For more on creating tests, see Configuring Continuous Testing and Configuring Load Testing.

  4. Create an API Token: Configuration > System Access Tokens > create a token with Configuration access level.

Quick Start

Cluster stats only (no Prism Central required)

.\Nutanix-LE-PlatformMetrics.ps1 `

    -NutanixPassword "YourPassword" `

    -LEApiToken "YourToken" `

    -NutanixHost "your-nutanix-prism.example.com" `

    -LEApplianceUrl "https://your-le-appliance.example.com" `

    -LEEnvironmentId "uuid-nutanix-all" `

    -RunOnce

 Cluster + host + VM stats (requires Prism Central)

.\Nutanix-LE-PlatformMetrics.ps1 `

    -NutanixPassword "YourPassword" `

    -LEApiToken "YourToken" `

    -NutanixHost "your-nutanix-prism.example.com" `

    -PrismCentralHost "your-prism-central.example.com" `

    -ClusterExtId "your-cluster-ext-id" `

    -LEApplianceUrl "https://your-le-appliance.example.com" `

    -LEEnvironmentId "uuid-nutanix-all" `

    -CollectHostStats `

    -CollectVmStats `

    -RunOnce

 Continuous polling (run until Ctrl+C)

.\Nutanix-LE-PlatformMetrics.ps1 `

    -NutanixPassword "YourPassword" `

    -LEApiToken "YourToken" `

    -NutanixHost "your-nutanix-prism.example.com" `

    -PrismCentralHost "your-prism-central.example.com" `

    -ClusterExtId "your-cluster-ext-id" `

    -LEApplianceUrl "https://your-le-appliance.example.com" `

    -LEEnvironmentId "uuid-nutanix-all" `

    -CollectHostStats `

    -CollectVmStats

 Filter to specific VMs

.\Nutanix-LE-PlatformMetrics.ps1 `

    -NutanixPassword "YourPassword" `

    -LEApiToken "YourToken" `

    -NutanixHost "your-nutanix-prism.example.com" `

    -PrismCentralHost "your-prism-central.example.com" `

    -ClusterExtId "your-cluster-ext-id" `

    -LEApplianceUrl "https://your-le-appliance.example.com" `

    -LEEnvironmentId "uuid-nutanix-all" `

    -CollectVmStats `

    -VmFilter "MyLauncher-01,MyLauncher-02,MyTarget-01" `

    -RunOnce

 Dry run (verify connectivity without uploading)

.\Nutanix-LE-PlatformMetrics.ps1 `

    -NutanixPassword "YourPassword" `

    -LEApiToken "YourToken" `

    -NutanixHost "your-nutanix-prism.example.com" `

    -LEApplianceUrl "https://your-le-appliance.example.com" `

    -LEEnvironmentId "uuid-nutanix-all" `

    -CollectHostStats `

    -CollectVmStats `

    -DryRun -RunOnce

How Long to Run the Collector

You have flexibility here. Two common approaches:

  1. Run it continuously alongside a continuous test or ongoing monitoring window. The script loops on its own polling interval until you stop it with Ctrl+C, or you can set it up as a scheduled task or startup item on the data collector machine (see Running as a Windows Scheduled Task). This is the right approach for continuous testing or overnight validation runs.

  2. Start and stop it around specific tests. If you only care about infrastructure data during a particular load test, just launch the script before the test starts and stop it when the test ends. Use -RunOnce for a single collection iteration, which is handy for quick spot-checks or verifying connectivity before committing to a longer run.

Collector Script Parameters

Nutanix Connection

Both -NutanixPassword and -LEApiToken are passed as command-line parameters at runtime. Neither is ever written to the script's log files or stored anywhere by the script. If your environment uses a secrets vault or credential manager, you can modify the script to retrieve credentials from that source rather than supplying them directly on the command line.

Parameter

Required

Description

-NutanixPassword

Yes

Prism Element admin password

-NutanixHost

Yes

Prism Element IP or hostname (port 9440)

-NutanixUser

No

Prism Element username (default: admin)

-PrismCentralHost

Conditional

Required for -CollectHostStats or -CollectVmStats

-ClusterExtId

Conditional

Required for host and VM stats. See Finding Your Cluster ExtId.

Login Enterprise Connection

Parameter

Required

Description

-LEApiToken

Yes

LE API token (Configuration access level)

-LEApplianceUrl

Yes

Full URL of LE appliance

-LEApiVersion

No

API version segment (default: v8-preview)

Environment ID

Parameter

Description

-LEEnvironmentId

UUID of the Nutanix-All environment you created during setup

Collection Scope

Parameter

Default

Description

-CollectHostStats

off

Enable host-level metrics (requires PC)

-CollectVmStats

off

Enable VM-level metrics (requires PC)

-VmFilter

(all)

Comma-separated VM names to collect. If omitted, it collects all powered-on VMs. Names are case-sensitive and must match exactly as they appear in Prism Element.

Run Control

Parameter

Default

Description

-RunOnce

off

Run one iteration and exit

-Iterations

0 (unlimited)

Run N iterations and exit

-PollingIntervalSec

30

Seconds between polls

-DryRun

off

Collect metrics but do not upload to LE

-SkipTimeSync

off

Skip LE time sync

Output and Diagnostics

Parameter

Description

-LogDir

Directory for log files (default: script directory)

-Verbose

Enable detailed per-metric logging

Certificate Handling Parameters

See Certificate Handling below before using these. You likely won't need them.

Parameter

Description

-ImportServerCert

Import the LE appliance certificate into CurrentUser\Root before connecting

-KeepCert

Keep imported cert after script exits (default: remove on exit)

Retrieval Script

Get-LEPlatformMetrics.ps1 queries the Login Enterprise API and exports metrics to CSV and JSON. Use it to verify data after a run, pull results for analysis, or feed Power BI.

Examples

# Last 1 hour

.\Get-LEPlatformMetrics.ps1 `

    -LEApiToken "YourToken" `

    -BaseUrl "https://your-le-appliance.example.com" `

    -EnvironmentId "uuid-nutanix-all" `

    -LastHours 1

 

# Specific time range

.\Get-LEPlatformMetrics.ps1 `

    -LEApiToken "YourToken" `

    -BaseUrl "https://your-le-appliance.example.com" `

    -EnvironmentId "uuid-nutanix-all" `

    -StartTime "2026-04-08T10:00:00.000Z" `

    -EndTime "2026-04-08T11:00:00.000Z"

Output Files

File

Description

Get-LEPlatformMetrics_YYYYMMDD_HHMMSS.csv

Flat data, one row per data point

Get-LEPlatformMetrics_YYYYMMDD_HHMMSS.json

Raw API response

Get-LEPlatformMetrics_Log_YYYYMMDD_HHMMSS.txt

Run log

CSV columns: timestamp, value, metricId, environmentKey, displayName, unit, instance, componentType, group, customTags

Parameters

Parameter

Required

Description

-LEApiToken

Yes

LE API token

-BaseUrl

Yes

LE appliance URL

-EnvironmentId

Yes

Environment UUID

-LastHours

No

Hours of data to retrieve (default: 1)

-StartTime

No

ISO 8601 start time (overrides -LastHours)

-EndTime

No

ISO 8601 end time

-ApiVersion

No

LE API version (default: v8-preview)

-OutputDir

No

Output directory (default: script directory)

-MetricGroups

No

Filter by metric group name

-ImportServerCert

No

Import LE cert before connecting

-KeepCert

No

Keep the imported cert after exit

Where to Run the Scripts

The scripts run from any Windows machine with network access to Nutanix (port 9440) and the Login Enterprise appliance (port 443). Common setups include a dedicated management or jump box, a Login Enterprise Launcher VM on the same network as the Nutanix cluster, or a workstation with VPN access to both environments. There is no agent, no service installation, and no requirement to run on the Nutanix host itself.

Running as a Windows Scheduled Task

One way to keep the collector running continuously is to set it up as a Windows Scheduled Task. This is just one example. How you manage startup and persistence on your data collector host is entirely up to you. A login startup script, a service wrapper, or just launching it manually before a test window all work fine.

For a scheduled task setup:

  1. Open Task Scheduler and select Create Task.

  2. On the General tab, give the task a name (e.g., "Nutanix LE Metrics"), select Run whether user is logged on or not, and check Run with highest privileges.

  3. On the Triggers tab, create a new trigger on a schedule. Daily with a repeat interval works well if you want the OS to restart the script on failure. The script handles its own polling loop internally.

  4. On the Actions tab, create a new action: Start a program. Set the program to powershell.exe and the arguments to:

    1. -NonInteractive -ExecutionPolicy Bypass -File "C:\Scripts\Nutanix-LE-PlatformMetrics.ps1" -NutanixPassword "YourPassword" -LEApiToken "YourToken" -NutanixHost "your-nutanix.example.com" -LEApplianceUrl "https://your-le-appliance.example.com" -LEEnvironmentId "your-env-uuid" -CollectHostStats -CollectVmStats

  5. On the Settings tab, check If the task is already running, do not start a new instance.

Tip: Avoid hardcoding passwords in task arguments visible to other users on shared machines. Use a dedicated service account with read-only Nutanix access where possible.

Finding Your Cluster ExtId

The Cluster ExtId is required for host and VM stats. Retrieve it from Prism Central using your browser or a REST client:

https://your-prism-central.example.com:9440/api/clustermgmt/v4.0/config/clusters

Authenticate with your Prism Central credentials and look for the extId field in the response for your cluster.

Certificate Handling

Most environments won't need this. If the script connects to your Login Enterprise appliance without any SSL errors, skip this section.

If you do get SSL/TLS or certificate trust errors, the LE appliance's certificate isn't trusted on the machine running the script — typically because the appliance uses a self-signed cert or an internal CA that isn't in the system trust store. There are two options.

Option 1 - let the script handle it:

.\Nutanix-LE-PlatformMetrics.ps1 -NutanixPassword "pass" -LEApiToken "token" ... -ImportServerCert -RunOnce

This fetches and imports the LE appliance certificate into CurrentUser\Root automatically. No admin required. The cert is removed when the script exits unless you add -KeepCert. Note that some security tools (CrowdStrike and other EDR software) may flag certificate imports into the root trust store, so keep an eye on alerts if you go this route.

Option 2 - manual installation (recommended for environments with EDR tools):

  1. Open https://your-le-appliance.example.com in a browser.

  2. Click the padlock, view the certificate, and export or download it.

  3. Open certmgr.msc, go to Trusted Root Certification Authorities > Certificates, right-click, and select Import.

  4. Run the script without -ImportServerCert.

Option 2 avoids any EDR interaction entirely since no certificate import happens at script runtime.

Power BI

A Power BI connector and report template for Login Enterprise (which includes Platform Metrics) is available in the Login VSI GitHub repo. The Login Enterprise Environment setup described in this doc works directly with the connector; all metrics land in one environment, keeping the connector configuration straightforward.

image2.gif

Caveats and Known Behaviors

  • VM stats require a warm-up period: After a VM is created or powered on, Prism Central needs 5-10 minutes before the stats endpoint returns data. The script handles this gracefully.

  • VM Memory Usage at 100% for the Prism Central VM is expected: PC pre-allocates its full memory allocation at startup.

  • Host metric count varies by run (typically 8-11 metrics): Some host metrics return null when there is no activity for that stat in the sampling window, e.g., no read IOPS means no read latency value. The script skips nulls and uploads only what it receives. This is correct behavior.

  • Cluster stats occasionally return 0 metrics on older CE hardware: The Prism Element v2 API can intermittently return empty stats on Nutanix Community Edition. This does not affect production clusters.

  • Prism Central v4 API rate limits VM stats calls: The script adds a 500ms delay between VM calls to reduce this. On very large clusters (50+ VMs), the collection loop may exceed the 30-second polling interval. The script detects this and starts the next iteration immediately rather than compounding the delay.

  • Prism Central connectivity: If PC is unreachable, the script detects this at startup and skips all PC-dependent work. Cluster stats continue normally.

Troubleshooting

  • Host stats return 400 "startTime or endTime refer to time in future": Minor clock skew between the machine running the script and the Nutanix cluster. The script automatically offsets the endTime by 30 seconds to compensate. If you see this occasionally, it is harmless.

  • Pre-flight fails with "Nutanix PE: connection failed": Verify the host is reachable on port 9440, check the username and password, and confirm VPN access if required.

  • Pre-flight warns "Prism Central: connection failed": Host and VM stats will be skipped for this run. Cluster stats still collect and upload. Check the PC IP or hostname and verify port 9440 access.

  • Upload timeout errors: Usually transient. The retry logic (3 attempts, exponential backoff) handles these. If persistent, check LE appliance connectivity and API token validity. Uploading to a non-existent environment ID will cause the server to close the connection.

  • VM stats show 404 errors: PC may not have collected a stats window yet for newly created VMs. Wait 5-10 minutes and try again. You can also verify the VM ExtId is valid in PC at /api/vmm/v4.0/ahv/config/vms/{extId}.

  • 429 Too Many Requests on VM stats: PC is rate-limiting consecutive VM stats calls. The script logs a warning and skips that VM for that iteration. Use -VmFilter to reduce the number of VMs being monitored.

  • VmFilter returns 0 matches: VM names are case-sensitive and must match exactly as they appear in Prism Element. Verify the VM name in the Prism Element UI.

  • SSL/TLS or certificate errors: The Login Enterprise appliance certificate isn't trusted on the machine running the script. See Certificate Handling above.

  • Enable verbose logging for more detail: .\Nutanix-LE-PlatformMetrics.ps1 -NutanixPassword "pass" -LEApiToken "token" ... -Verbose -RunOnce

Security

Passwords and API tokens are passed as command-line parameters at runtime and are never written to the script's log files or stored anywhere by the script. If your organization uses a secrets vault or credential manager, you can modify the script to pull credentials from that source rather than accepting them directly on the command line.

Files

File

Version

Description

Nutanix-LE-PlatformMetrics.ps1

2.0.0

Collector script

Get-LEPlatformMetrics.ps1

2.0.0

Retrieval and export script

What's Coming

This integration today runs as a standalone PowerShell script outside of Login Enterprise. The plan is to bring it natively into the product as a supported, built-in integration, no external scripts required. When that happens, the setup experience will change, and this documentation will be updated accordingly. Keep an eye on the Login Enterprise release notes for updates.

Additional Resources