Skip to main content
Version: Next

Task 03: Monitor Bootstrap Process

Runbook Phase 04 Platform

Status: Active | Estimated Time: 30-90 minutes (includes OEM updates) | Last Updated: 2026-03-15


Overview

After Arc registration is initiated (Task 02), the bootstrap process runs in the background on each node. It first scans, downloads, and installs OEM updates (which may trigger automatic reboots), then completes Arc configuration. This task monitors all nodes through the full lifecycle until they report Succeeded.

The orchestrated monitor collects comprehensive telemetry per node in a single WinRM call each cycle:

Data CollectedSource
Bootstrap status + phase breakdownGet-ArcBootstrapStatus
Arc agent status + versionazcmagent show, himds service
System uptime + reboot detectionCIM_OperatingSystem, Event Log IDs 1074/6006/6008/6013/41
Windows Update activitywuauserv service status
Download directory snapshotC:\bootstrap — file count, total size, files changed in last 10 min
SolutionUpdate metadataC:\bootstrap\SolutionUpdate.xml — target version, package size
Validation report (failed/warning)AzStackHciEnvironmentReport.json
Bootstrap log tailLatest lines from C:\Windows\System32\Bootstrap\Logs
Azure-side verificationGet-AzConnectedMachine when agent reports connected
Reboots Are Expected

If a node reboots during registration, do not restart the registration script. The bootstrap service resumes automatically using cached SPN credentials. The monitor will show "UNREACHABLE (rebooting?)" until the node comes back online.

Wrapper Script

To launch registration + monitoring simultaneously, use Start-ArcRegistrationWithMonitor.ps1 from the Task 02 folder. See Task 02 — Wrapper Script.


Prerequisites

RequirementDetails
Task 02 initiatedArc registration started on all target nodes
Node accessRDP/console (Direct) or WinRM from mgmt server (Orchestrated)
Az.ConnectedMachineRequired for Azure-side verification (orchestrated script)

Variables from variables.yml

PathTypeDescription
compute.cluster_nodes[].management_ipstringNode management IPs for PSRemoting
azure_platform.subscriptions.lab.idstringSubscription ID for Azure queries
compute.azure_local.arc_resource_groupstringResource group for Arc machine lookups

Bootstrap Phases

PhaseSub-PhaseDescriptionDuration
UpdateScanScans for available LCM/OEM updates1-5 min
UpdateDownloadDownloads packages to C:\bootstrap10-40 min
UpdateInstallInstalls updates, may trigger reboot5-15 min
(reboot)Node reboots if OS update applied2-5 min
ArcConfigurationArcRegistrationRegisters node with Azure Arc5-10 min

Run on each node individually via RDP or console.

# Task 03 - Check Bootstrap Status (run on each node)

$status = Get-ArcBootstrapStatus
$status.Response | Select-Object Status, StartTime, EndTime

# Show detailed phases
if ($status.Response.DetailedResponse) {
foreach ($phase in $status.Response.DetailedResponse) {
Write-Host "$($phase.Name): $($phase.Status)"
if ($phase.DetailedResponse) {
$phase.DetailedResponse | ForEach-Object { Write-Host " $($_.Name): $($_.Status)" }
}
}
}

# Check Arc agent
Get-Service himds | Select-Object Name, Status
& "$env:ProgramFiles\AzureConnectedMachineAgent\azcmagent.exe" show

# Check download progress
if (Test-Path "C:\bootstrap") {
Get-ChildItem "C:\bootstrap" -Recurse -File |
Measure-Object -Property Length -Sum |
Select-Object Count, @{N='SizeMB'; E={[math]::Round($_.Sum / 1MB, 1)}}
}

Expected Status Values

StatusMeaningAction
Update: ScanScanning for OEM updatesWait
Update: DownloadDownloading update packagesWait — check download progress
Update: InstallInstalling updatesWait — reboot may follow
UNREACHABLENode is rebootingWait — auto-resumes after reboot
InProgressArc registration runningWait for completion
SucceededNode registered with Azure ArcProceed to Task 04
FailedRegistration or update failedCollect logs, troubleshoot

Troubleshooting

Collect Support Logs

# Run on the failed node (RDP/console)
Collect-ArcBootstrapSupportLogs -OutputPath "C:\Logs\ArcBootstrap"

Check Validation Report

# Check validation report on failed node
$reportPath = "C:\Windows\System32\Bootstrap\DiagnosticsHistory\Bootstrap\AzStackHciEnvironmentReport.json"
if (Test-Path $reportPath) {
$report = Get-Content $reportPath -Raw | ConvertFrom-Json
$report.TestResults | Where-Object { $_.Status -ne "Succeeded" } |
Select-Object Title, Status, @{N='Message';E={$_.AdditionalData.Message}}
}

Inspect Bootstrap Logs

# Tail the latest bootstrap log on a node
$logDir = "C:\Windows\System32\Bootstrap\Logs"
$latest = Get-ChildItem $logDir -Filter *.log -ErrorAction SilentlyContinue |
Sort-Object LastWriteTime -Descending | Select-Object -First 1
if ($latest) { Get-Content $latest.FullName -Tail 30 }

Common Issues

IssueResolution
Node unreachable 10+ minCheck iDRAC/BMC console — verify node is booting, not stuck
Download stalled (no size change)Check network connectivity (Task 01), proxy settings, DNS
Auth failed after rebootSPN token cache expired — re-run Task 02 on that node
Validation failuresReview AzStackHciEnvironmentReport.json — fix prerequisites, re-run Task 01
himds service not runningBootstrap incomplete — wait for ArcConfiguration phase
Arc agent shows Disconnected in AzureCheck node clock sync (NTP), outbound connectivity
Timeout (90+ min, no progress)Collect support logs, open Microsoft support case

← Task 02: Register Nodes with Arc · Task 04: Verify Arc Registration →