Resource Metrics & Performance Monitoring
Alongside its hardware and software inventory, every online Athena agent reports the machine's live performance — how hard the CPU, memory, disk, network and (where present) GPU are working right now. These figures stream up with the agent's heartbeat, so you can open a busy machine and immediately see whether it is CPU-bound, low on memory, or waiting on disk, without logging in to it or installing a separate monitoring agent.
Metrics are a live readout, not history. Athena reports the machine's current load from its most recent heartbeat while it is online. It is a real-time snapshot you read on demand — not a stored time-series you can chart back over days. To act on a condition (for example, alert when a machine is consistently starved of a resource), pair metrics with Monitoring & Alerts.
What's reported#
Each metrics snapshot carries the following values. Any value the machine can't supply is
reported as 0 (or blank for the GPU name) rather than blocking the rest.
Processor, memory & disk usage
| Metric | Meaning |
|---|---|
| CPU usage | Total processor utilisation across all cores, as a percentage (0–100). |
| Memory usage | Percentage of physical memory in use (0–100), derived from total vs. free physical memory. |
| Disk usage | How full the system drive is, as a percentage of its capacity (0–100). |
Disk performance
| Metric | Meaning |
|---|---|
| Response time | Average disk service time in milliseconds — how long the storage takes to satisfy a transfer. High values point at a saturated or slow disk. |
| Read / write throughput | Bytes read and written per second. |
| Read / write IOPS | Read and write operations per second — the request rate, separate from the byte rate above. |
| Queue length | Number of I/O requests waiting on the disk. A persistently long queue is a classic sign the storage can't keep up. |
Network throughput
| Metric | Meaning |
|---|---|
| Bytes sent / second | Aggregate transmit rate across the machine's active, non-loopback network interfaces. |
| Bytes received / second | Aggregate receive rate across those same interfaces. |
GPU
When the machine has a usable GPU, Athena also reports graphics load. This is populated on hosts with a discrete or integrated GPU that exposes usage data; machines without one simply report zeros and a blank GPU name.
| Metric | Meaning |
|---|---|
| GPU name | The detected graphics adapter's model. |
| GPU usage | Overall GPU utilisation as a percentage (0–100). |
| GPU memory | Video memory in use — as a percentage and as used / total bytes. |
| GPU temperature | Reported in degrees Celsius on NVIDIA GPUs. See Platform coverage — temperature is not available from every source. |
Usage metrics (CPU, memory, disk, network, GPU load) describe the machine's current activity and update live. The hardware itself — processor model, memory slots, storage devices and physical drives — is part of static inventory and is shown in the neighbouring Performance sections of the detail view.
Where to see it#
Open a machine from the Agents list, then in the agent detail view choose Resource Metrics under the Performance group in the left-hand navigation. Usage is shown with live bars for CPU, memory and disk, plus the disk-performance and network figures above. While the machine is online and streaming, the values refresh on their own — no manual reload needed.
Metrics only flow while the agent is online. An offline or maintenance machine won't stream fresh figures; what you see reflects its last report. If a machine you expect to be reporting shows no metrics, confirm it is online first.
Platform coverage#
Resource metrics are reported on both Windows and Linux endpoints, using each operating system's own facilities, so a mixed fleet answers the same performance questions. The exact fields a given machine can populate depend on what its hardware, drivers and tooling expose.
| Aspect | Windows | Linux |
|---|---|---|
| CPU, memory & disk usage | Reported. | Reported. |
| Disk throughput, IOPS, queue & response time | Reported. | Reported. |
| Network send / receive rates | Reported. | Reported. |
| GPU usage & memory | NVIDIA GPUs report the fullest data; Intel/AMD and other GPUs are read from the platform's own GPU performance counters (the same source Task Manager uses). | Reported for NVIDIA GPUs where the vendor tooling is present. |
| GPU temperature | Reported on NVIDIA GPUs. Not available from the vendor-agnostic GPU performance counters, so it stays blank for non-NVIDIA cards. | Reported on NVIDIA GPUs where the vendor tooling is present. |
GPU temperature is sourced from NVIDIA's own tooling. A machine can therefore report GPU usage and memory while leaving temperature at zero — for example an Intel or AMD GPU, where that reading isn't exposed. A blank or zero value means "not reported", not "0 °C".
Reading it over the API#
A machine's current metrics are available on their own endpoint, so you can poll a single machine cheaply without pulling its whole inventory document:
# Current resource metrics for one agent
$headers = @{ Authorization = "Bearer $token" }
$m = Invoke-RestMethod `
-Uri "https://athena.example.com:8443/api/agents/$agentId/inventory/metrics" `
-Headers $headers `
-SkipCertificateCheck
$m.data | Select-Object cpuUsagePercent, memoryUsagePercent, diskUsagePercent,
diskQueueLength, diskReadIops, diskWriteIops, gpuUsagePercent, gpuTemperatureCelsius
The endpoint requires the Helpdesk role or higher. It returns
404 when the agent isn't found or when no metrics are available yet — for
example a machine that has never come online. Because metrics are a live readout, poll the
endpoint on your own cadence for the machines you care about rather than storing every sample.
From the PowerShell module#
The Athena PowerShell module wraps the same endpoint in the
Get-AthenaAgentMetrics cmdlet, which accepts an agent from the pipeline so you can
sweep a set of machines in one line:
# Current metrics for one machine
Get-AthenaAgentMetrics -AgentId "12345678-1234-1234-1234-123456789012"
# CPU and memory across the whole fleet, highest CPU first
Get-AthenaAgent | ForEach-Object {
$m = Get-AthenaAgentMetrics -AgentId $_.Id
[PSCustomObject]@{
Hostname = $_.Hostname
Cpu = $m.CpuUsagePercent
Memory = $m.MemoryUsagePercent
}
} | Sort-Object Cpu -Descending
Connect first with Connect-Athena. The cmdlet returns the same set of fields shown above, so you can pick out disk queue, IOPS, network rates or GPU figures the same way.
Related#
- Agent Details View — where the live metrics appear per machine.
- Monitoring & Alerts — turn a resource condition into a proactive alert.
- Inventory — the static hardware and software behind the numbers.
- Agent Status & Health — why an offline machine stops streaming metrics.
- PowerShell Module — scripting against the server.