@@ -21,6 +21,19 @@ PowerShell Get-Counter (remote sessions)
2121 Azure Portal dashboards, alerts
2222```
2323
24+ ## Live Console Monitoring
25+
26+ Use the built-in watcher during active tests:
27+
28+ ``` powershell
29+ .\src\solutions\vmfleet\scripts\Watch-VMFleetMonitor.ps1 `
30+ -ClusterConfigPath "config/clusters/my-cluster.yml" `
31+ -RefreshIntervalSeconds 5 `
32+ -DurationMinutes 30
33+ ```
34+
35+ The watcher prints rolling VM count, read/write IOPS, read/write latency, and throughput.
36+
2437## Metric Categories
2538
2639### Storage Metrics
@@ -105,6 +118,15 @@ Optionally push collected metrics to Azure Monitor for centralized dashboards an
105118 -CredentialSource KeyVault
106119```
107120
121+ Each pushed metric contains these core fields:
122+
123+ - ` timestamp `
124+ - ` node `
125+ - ` counter_name `
126+ - ` value `
127+ - ` run_id `
128+ - ` profile_name `
129+
108130!!! note
109131 Azure Monitor integration requires the ` monitoring.bicep ` infrastructure template to be deployed. See ` src/infrastructure/bicep/monitoring.bicep ` .
110132
@@ -134,6 +156,37 @@ During test execution, use the monitoring dashboard wrapper:
134156` ` ` powershell
135157# Launch real-time monitoring (combines VMFleet Watch-FleetCluster with custom metrics)
136158.\src\solutions\vmfleet\monitoring\Export-MetricsDashboard.ps1 `
137- -ClusterConfig "config/clusters/my-cluster.yml" `
138- -RefreshIntervalSeconds 5
159+ -InputPath "results/run-001/metrics/" `
160+ -OutputPath "reports/run-001/" `
161+ -Title "VMFleet Run 001"
162+ ```
163+
164+ ## Counter Reference
165+
166+ | Category | Counter name | Purpose |
167+ | --- | --- | --- |
168+ | Storage | ` CSVFS_ReadIOPS ` | CSVFS read operations per second |
169+ | Storage | ` CSVFS_WriteIOPS ` | CSVFS write operations per second |
170+ | Storage | ` CSVFS_ReadMBps ` | Read throughput |
171+ | Storage | ` CSVFS_WriteMBps ` | Write throughput |
172+ | Storage | ` CSVFS_ReadLatencyMs ` | Read latency |
173+ | Storage | ` CSVFS_WriteLatencyMs ` | Write latency |
174+ | Compute | ` HostCpuPercent ` | Host CPU saturation |
175+ | Compute | ` HostAvailableMemoryMB ` | Available memory headroom |
176+ | Compute | ` HyperVLogicalProcessorRunTime ` | Hypervisor CPU pressure |
177+
178+ ## KQL Examples
179+
180+ ``` kusto
181+ VMFleetMetrics_CL
182+ | where CounterName_s in ("CSVFS_ReadIOPS", "CSVFS_WriteIOPS")
183+ | summarize AvgValue=avg(Value_d) by bin(TimeGenerated, 1m), CounterName_s
184+ | render timechart
185+ ```
186+
187+ ``` kusto
188+ VMFleetMetrics_CL
189+ | where CounterName_s in ("CSVFS_ReadLatencyMs", "CSVFS_WriteLatencyMs")
190+ | summarize P95=percentile(Value_d, 95) by bin(TimeGenerated, 1m), CounterName_s
191+ | render timechart
139192```
0 commit comments