VMFleet Reporting¶
The reporting subsystem generates comprehensive VMFleet test reports in three formats: PDF, Word (DOCX), and Excel (XLSX).
Report Formats¶
| Format | Tool | Use Case |
|---|---|---|
| asciidoctor-pdf with custom theme | Executive summaries, formal documentation, archival | |
| DOCX (Word) | Pandoc (AsciiDoc → DocBook → DOCX) | Editable reports, stakeholder collaboration |
| XLSX (Excel) | PowerShell ImportExcel module | Data analysis, pivot tables, custom charting |
Output Files¶
| Artifact | Example path | Description |
|---|---|---|
| Aggregate JSON | reports/<run-id>/<run-id>-aggregate.json |
Run-level totals and averages |
| Per-VM JSON | reports/<run-id>/<run-id>-per-vm.json |
VM-level performance detail |
| Dashboard HTML | reports/<run-id>/dashboard.html |
Interactive summary dashboard |
| PDF Report | reports/<run-id>/<run-id>.pdf |
Executive/shareable report |
| DOCX Report | reports/<run-id>/<run-id>.docx |
Editable report |
| XLSX Workbook | reports/<run-id>/<run-id>.xlsx |
Detailed analysis workbook |
Generating Reports¶
# Generate all three formats from a completed test run
Import-Module ./common/modules/ReportGenerator/ReportGenerator.psm1
New-TestReport `
-RunId "run-2026-02-13-001" `
-ResultsPath "results/run-2026-02-13-001/" `
-OutputPath "reports/run-2026-02-13-001/" `
-Formats @("PDF", "DOCX", "XLSX") `
-IncludeMetrics `
-ClusterConfig "config/clusters/my-cluster.yml"
Or generate reports as part of the results collection:
.\tools\vmfleet\scripts\Collect-VMFleetResults.ps1 `
-ResultsPath "results/current-run/" `
-GenerateReports `
-ReportFormats @("PDF", "DOCX", "XLSX")
PDF / DOCX Report Sections¶
Both PDF and DOCX reports contain the same sections:
- Cover Page — Cluster name, test date, run ID, framework version
- Executive Summary — Key findings, pass/fail assessment, top-line metrics
- Cluster Configuration — Node details, storage layout, network configuration
- Test Results by Profile — For each workload profile:
- IOPS (read/write/total)
- Throughput (MB/s)
- Latency (average, P50, P95, P99)
- Per-node breakdown
- Storage Metrics — Time-series charts for CSVFS counters
- Network Metrics — RDMA/SMB throughput, packet loss summary
- Compute Metrics — Host and guest CPU utilization
- Recommendations — Automated assessment based on metric thresholds
- Appendix — Raw configuration, full variable dump, log excerpts
Aggregate JSON Example¶
{
"run_id": "vmfleet-20260323-184500",
"timestamp": "2026-03-23T18:45:00.000Z",
"cluster_name": "iic-azl-cluster-01",
"vm_count": 40,
"profile_name": "SQL OLTP",
"total_read_iops": 142500,
"total_write_iops": 97500,
"total_iops": 240000,
"avg_latency_ms": 3.41,
"total_read_throughput_mbps": 890.15,
"total_write_throughput_mbps": 640.22
}
Excel Report¶
The XLSX workbook contains multiple worksheets:
| Sheet | Contents |
|---|---|
| Summary | Executive summary with key metrics, conditional formatting (red/yellow/green) |
| Storage Metrics | IOPS, throughput, latency time-series data with line charts |
| Network Metrics | RDMA/SMB throughput, packet loss data with charts |
| Compute Metrics | CPU/memory utilization data with charts |
| Profile Comparison | Side-by-side comparison across workload profiles (pivot table) |
| Raw Data | Complete metric dump for custom analysis |
Custom Themes¶
The PDF report uses a custom AsciiDoc theme defined in docs/themes/azurelocal-theme.yml:
extends: default
page:
margin: [0.75in, 0.75in, 0.75in, 0.75in]
size: A4
base:
font-family: Segoe UI
font-size: 10
heading:
font-color: #0078D4
font-family: Segoe UI Semibold
title-page:
logo-image: image:azure-local-logo.png[width=200]
Report Templates¶
Templates in reports/templates/ define the structure:
report-template.adoc— AsciiDoc template with attribute placeholders for test datacover-page.adoc— Separated cover page for PDF output
Excel workbooks are generated dynamically by the ImportExcel PowerShell module — no pre-built template is required.