Task 03: Configure Enhanced Telemetry
Enhanced telemetry settings enable comprehensive diagnostics, proactive support, and real-time monitoring for Azure Local clusters.
Overview
Telemetry configuration includes three key settings:
- diagnosticLevel: Controls the amount of diagnostic data sent to Microsoft
- streamingDataClient: Enables real-time streaming of telemetry data
- isEULocation: Configures EU data residency compliance
Prerequisites
- Azure Local cluster registered with Azure Arc
- Owner or Contributor role on the cluster resource
- Understanding of data privacy requirements
- Knowledge of data residency requirements (EU vs non-EU)
Variables from variables.yml
| Variable | Config Path | Example |
|---|---|---|
AZURE_SUBSCRIPTION_ID | azure.subscription.id | 00000000-0000-0000-0000-000000000000 |
AZURE_RESOURCE_GROUP | azure.resource_group.name | rg-azurelocal-prod-eus2 |
CLUSTER_NAME | cluster.name | azl-dal-cl01 |
Execution Options
- Azure Portal
- Direct Script (On Node)
- Orchestrated Script (Mgmt Server)
- Standalone Script
Steps
- Navigate to the Azure portal → Azure Arc → Azure Local
- Select your cluster resource
- Go to Settings → Configuration
- Locate the Diagnostics section
- Configure the following settings:
- Diagnostic Level: Select
EnhancedorFull - Streaming Data: Toggle to Enabled
- EU Data Boundary: Set based on cluster location
- Click Save
Diagnostic Levels
| Level | Data Sent |
|---|---|
| Required | Minimum data for cluster health |
| Enhanced | Additional data for proactive support |
| Full | Complete diagnostics for troubleshooting |
Run this script directly on any Azure Local cluster node.
Configure-EnhancedTelemetry.ps1 (Run ON Node)
#Requires -RunAsAdministrator
#Requires -Modules Az.StackHCI
<#
.SYNOPSIS
Configures enhanced telemetry settings on the local Azure Local cluster.
.DESCRIPTION
This script configures diagnostic level, streaming data client, and
EU location settings for comprehensive cluster telemetry.
.PARAMETER DiagnosticLevel
The diagnostic level to set. Valid values: Basic, Enhanced, Full
.PARAMETER EnableStreamingData
Whether to enable the streaming data client for real-time telemetry.
.PARAMETER IsEULocation
Whether the cluster is in an EU location for data residency compliance.
#>
[CmdletBinding()]
param(
[Parameter(Mandatory = $false)]
[ValidateSet('Basic', 'Enhanced', 'Full')]
[string]$DiagnosticLevel = 'Enhanced',
[Parameter(Mandatory = $false)]
[bool]$EnableStreamingData = $true,
[Parameter(Mandatory = $false)]
[bool]$IsEULocation = $false
)
$ErrorActionPreference = 'Stop'
# Get cluster information
$clusterName = (Get-Cluster).Name
Write-Host "Configuring telemetry for cluster: $clusterName" -ForegroundColor Cyan
# Get the Azure Local registration
$registration = Get-AzStackHCI
if ($registration.ConnectionStatus -ne 'Connected') {
throw "Cluster is not connected to Azure. Current status: $($registration.ConnectionStatus)"
}
Write-Host "`nConfiguring telemetry settings:" -ForegroundColor Yellow
Write-Host " Diagnostic Level: $DiagnosticLevel" -ForegroundColor Gray
Write-Host " Streaming Data: $EnableStreamingData" -ForegroundColor Gray
Write-Host " EU Location: $IsEULocation" -ForegroundColor Gray
# Configure diagnostic level
Set-AzStackHCI -DiagnosticLevel $DiagnosticLevel
# Configure streaming data client
if ($EnableStreamingData) {
# Enable streaming data for real-time telemetry
Enable-AzStackHCIRemoteSupport -EnableStreamingData
Write-Host "Streaming data client enabled" -ForegroundColor Green
}
# Configure EU data residency if applicable
if ($IsEULocation) {
# Set EU boundary flag for data residency compliance
Set-AzStackHCI -IsEULocation $true
Write-Host "EU data boundary configured" -ForegroundColor Green
}
Write-Host "`nTelemetry configuration completed" -ForegroundColor Green
# Display current settings
$currentSettings = Get-AzStackHCI
Write-Host "`nCurrent Telemetry Settings:" -ForegroundColor Cyan
Write-Host " Diagnostic Level: $($currentSettings.DiagnosticLevel)" -ForegroundColor Gray
Run this script from the management server to configure telemetry remotely.
Configure-EnhancedTelemetry-Orchestrated.ps1 (Run FROM Management Server)
#Requires -Modules Az.Accounts, Az.Resources, Az.StackHCI
<#
.SYNOPSIS
Configures enhanced telemetry on an Azure Local cluster from a management server.
.DESCRIPTION
This script connects to Azure and configures telemetry settings including
diagnostic level, streaming data, and EU location settings.
.PARAMETER ClusterResourceId
The Azure Resource ID of the Azure Local cluster.
.PARAMETER SubscriptionId
The Azure subscription ID containing the cluster.
.PARAMETER ResourceGroupName
The resource group containing the cluster.
.PARAMETER ClusterName
The name of the Azure Local cluster resource.
.PARAMETER DiagnosticLevel
The diagnostic level to set. Valid values: Basic, Enhanced, Full
.PARAMETER EnableStreamingData
Whether to enable the streaming data client.
.PARAMETER IsEULocation
Whether the cluster is in an EU location.
#>
[CmdletBinding()]
param(
[Parameter(Mandatory = $false)]
[string]$ClusterResourceId,
[Parameter(Mandatory = $false)]
[string]$SubscriptionId,
[Parameter(Mandatory = $false)]
[string]$ResourceGroupName,
[Parameter(Mandatory = $false)]
[string]$ClusterName,
[Parameter(Mandatory = $false)]
[ValidateSet('Basic', 'Enhanced', 'Full')]
[string]$DiagnosticLevel = 'Enhanced',
[Parameter(Mandatory = $false)]
[bool]$EnableStreamingData = $true,
[Parameter(Mandatory = $false)]
[bool]$IsEULocation = $false
)
$ErrorActionPreference = 'Stop'
# Connect to Azure if not already connected
$context = Get-AzContext
if (-not $context) {
Write-Host "Connecting to Azure..." -ForegroundColor Yellow
Connect-AzAccount
}
# Build resource ID if not provided
if (-not $ClusterResourceId) {
if (-not $SubscriptionId -or -not $ResourceGroupName -or -not $ClusterName) {
throw "Either ClusterResourceId or (SubscriptionId, ResourceGroupName, ClusterName) must be provided"
}
$ClusterResourceId = "/subscriptions/$SubscriptionId/resourceGroups/$ResourceGroupName/providers/Microsoft.AzureStackHCI/clusters/$ClusterName"
}
Write-Host "Configuring telemetry for: $ClusterResourceId" -ForegroundColor Cyan
Write-Host "`nTelemetry settings to apply:" -ForegroundColor Yellow
Write-Host " Diagnostic Level: $DiagnosticLevel" -ForegroundColor Gray
Write-Host " Streaming Data: $EnableStreamingData" -ForegroundColor Gray
Write-Host " EU Location: $IsEULocation" -ForegroundColor Gray
# Get current cluster configuration
$cluster = Get-AzResource -ResourceId $ClusterResourceId -ExpandProperties
# Update telemetry properties
$cluster.Properties.reportedProperties = @{
diagnosticLevel = $DiagnosticLevel.ToLower()
streamingDataClient = if ($EnableStreamingData) { "Enabled" } else { "Disabled" }
isEULocation = $IsEULocation
}
$cluster | Set-AzResource -Force
Write-Host "`nTelemetry configuration applied successfully" -ForegroundColor Green
# Verify settings
$updatedCluster = Get-AzResource -ResourceId $ClusterResourceId -ExpandProperties
Write-Host "`nVerified Settings:" -ForegroundColor Cyan
Write-Host " Diagnostic Level: $($updatedCluster.Properties.reportedProperties.diagnosticLevel)" -ForegroundColor Gray
Write-Host " Streaming Data: $($updatedCluster.Properties.reportedProperties.streamingDataClient)" -ForegroundColor Gray
Write-Host " EU Location: $($updatedCluster.Properties.reportedProperties.isEULocation)" -ForegroundColor Gray
Copy-paste ready telemetry configuration script — no config file, no helpers.
Configure-EnhancedTelemetry-Standalone.ps1
# ============================================================================
# Script: Configure-EnhancedTelemetry-Standalone.ps1
# Execution: Run anywhere with Az modules — fully self-contained
# Prerequisites: Az.Accounts, Az.Resources modules; authenticated to Azure
# ============================================================================
#Requires -Modules Az.Accounts, Az.Resources
#region CONFIGURATION
# ── Edit these values to match your environment ──────────────────────────────
$SubscriptionId = "00000000-0000-0000-0000-000000000000" # Azure subscription ID
$ResourceGroupName = "rg-azurelocal-prod" # Resource group with cluster
$ClusterName = "azl-cluster-01" # Azure Local cluster name
$DiagnosticLevel = "Enhanced" # Basic | Enhanced | Full
$StreamingData = $true # Enable streaming data client
$IsEULocation = $false # EU data residency compliance
#endregion CONFIGURATION
$ErrorActionPreference = 'Stop'
# Connect to Azure
$ctx = Get-AzContext
if (-not $ctx) { Connect-AzAccount }
Set-AzContext -SubscriptionId $SubscriptionId | Out-Null
$ClusterResourceId = "/subscriptions/$SubscriptionId/resourceGroups/$ResourceGroupName/providers/Microsoft.AzureStackHCI/clusters/$ClusterName"
Write-Host "Configuring telemetry for: $ClusterName" -ForegroundColor Cyan
Write-Host " Diagnostic Level: $DiagnosticLevel" -ForegroundColor Gray
Write-Host " Streaming Data: $StreamingData" -ForegroundColor Gray
Write-Host " EU Location: $IsEULocation" -ForegroundColor Gray
$cluster = Get-AzResource -ResourceId $ClusterResourceId -ExpandProperties
$cluster.Properties.reportedProperties = @{
diagnosticLevel = $DiagnosticLevel.ToLower()
streamingDataClient = if ($StreamingData) { "Enabled" } else { "Disabled" }
isEULocation = $IsEULocation
}
$cluster | Set-AzResource -Force
Write-Host "`n✅ Telemetry configuration applied" -ForegroundColor Green
# Verify
$updated = Get-AzResource -ResourceId $ClusterResourceId -ExpandProperties
Write-Host "`nVerified Settings:" -ForegroundColor Cyan
Write-Host " Diagnostic Level: $($updated.Properties.reportedProperties.diagnosticLevel)" -ForegroundColor Gray
Write-Host " Streaming Data: $($updated.Properties.reportedProperties.streamingDataClient)" -ForegroundColor Gray
Write-Host " EU Location: $($updated.Properties.reportedProperties.isEULocation)" -ForegroundColor Gray
No External Dependencies
This script is completely self-contained. Edit the values in the #region CONFIGURATION block and run. No variables.yml, no config-loader, no helpers required.
Diagnostic Level Details
Basic (Required)
- Cluster health status
- Node connectivity information
- Critical error reporting
- Minimum data for Azure billing
Enhanced (Recommended)
- All Basic data plus:
- Performance metrics
- Feature usage statistics
- Proactive issue detection
- Support case acceleration
Full (Troubleshooting)
- All Enhanced data plus:
- Detailed diagnostic logs
- Memory dumps (on request)
- Complete event logs
- Deep troubleshooting capability
EU Data Boundary
For clusters deployed in European Union member states:
# Enable EU data boundary on the cluster
Set-AzStackHCI -IsEULocation $true
# This ensures:
# - Telemetry data stays within EU boundaries
# - Compliance with GDPR requirements
# - Data processed in EU Azure regions
Verification
# On the cluster node
Get-AzStackHCI | Select-Object DiagnosticLevel, StreamingDataClient
# Verify telemetry service
Get-Service -Name "HciClusterAgentService" | Select-Object Status, StartType
# Check telemetry connectivity
Test-NetConnection -ComputerName "dc.services.visualstudio.com" -Port 443
Troubleshooting
| Issue | Resolution |
|---|---|
| Telemetry not sending | Verify firewall allows HTTPS to telemetry endpoints |
| Streaming data failing | Check HciClusterAgentService is running |
| EU setting not applying | Verify cluster region is set correctly |
| Diagnostic level reset | Re-apply after cluster updates |
Telemetry Endpoints
Ensure firewall allows outbound HTTPS (443) to:
dc.services.visualstudio.com*.applicationinsights.azure.com*.monitor.azure.com*.blob.core.windows.net
Related Documentation
Navigation
| Previous | Up | Next |
|---|---|---|
| ← Task 02: Windows Server Subscription | Phase 05: Licensing & Telemetry | Part 06: Testing & Validation → |
| Version | Date | Author | Changes |
|---|---|---|---|
| 1.0.0 | 2026-03-24 | Azure Local Cloudnology Team | Initial release |