Abilitare la diagnostica nei servizi cloud di Azure (versione classica) tramite PowerShell
Importante
Servizi cloud (versione classica) è ora deprecato per tutti i clienti a partire dal 1° settembre 2024. Tutte le distribuzioni in esecuzione esistenti verranno arrestate e arrestate da Microsoft e i dati andranno persi definitivamente a partire da ottobre 2024. Le nuove distribuzioni devono usare il nuovo modello di distribuzione basato su Azure Resource Manager Servizi cloud di Azure (supporto "Extended").
È possibile raccogliere dati di diagnostica come log applicazioni, contatori delle prestazioni e così via da un servizio cloud mediante l'estensione Diagnostica di Azure. Questo articolo descrive come abilitare l'estensione Diagnostica di Azure per un servizio Cloud tramite PowerShell. Per i prerequisiti necessari per questo articolo, vedere Come installare e configurare Azure PowerShell .
Abilitare l'estensione delle funzionalità di diagnostica come parte della distribuzione di un servizio Cloud
Questo approccio è applicabile al tipo di scenari di integrazione continua, in cui l'estensione Diagnostica può essere abilitata come parte della distribuzione del servizio cloud. Quando si crea una nuova distribuzione del servizio cloud, è possibile abilitare l'estensione di Diagnostica passando il parametro ExtensionConfiguration al cmdlet New-AzureDeployment. Il parametro ExtensionConfiguration accetta una matrice di configurazioni di diagnostica che può essere creata utilizzando il cmdlet New AzureServiceDiagnosticsExtensionConfig .
L'esempio seguente mostra come abilitare la diagnostica per un servizio cloud con un WebRole e un WorkerRole, ognuno dei quali ha una configurazione di diagnostica diversa.
$service_name = "MyService"
$service_package = "CloudService.cspkg"
$service_config = "ServiceConfiguration.Cloud.cscfg"
$webrole_diagconfigpath = "MyService.WebRole.PubConfig.xml"
$workerrole_diagconfigpath = "MyService.WorkerRole.PubConfig.xml"
$webrole_diagconfig = New-AzureServiceDiagnosticsExtensionConfig -Role "WebRole" -DiagnosticsConfigurationPath $webrole_diagconfigpath
$workerrole_diagconfig = New-AzureServiceDiagnosticsExtensionConfig -Role "WorkerRole" -DiagnosticsConfigurationPath $workerrole_diagconfigpath
New-AzureDeployment -ServiceName $service_name -Slot Production -Package $service_package -Configuration $service_config -ExtensionConfiguration @($webrole_diagconfig,$workerrole_diagconfig)
Se il file di configurazione di diagnostica specifica un elemento StorageAccount
con un nome di account di archiviazione, il cmdlet New-AzureServiceDiagnosticsExtensionConfig
usa automaticamente tale account di archiviazione. Perché questa configurazione funzioni, l’account di archiviazione deve trovarsi nella stessa sottoscrizione del servizio cloud distribuito.
Dall’SDK 2.6 di Azure in poi, i file di configurazione dell’estensione generati dall’output della destinazione di pubblicazione di MSBuild includono il nome dell’account di archiviazione in base alla stringa di configurazione diagnostica specificata nel file di configurazione del servizio (con estensione .cscfg). Lo script seguente illustra come analizzare i file di configurazione dell’estensione dall’output della destinazione di pubblicazione e configurare l’estensione di diagnostica per ogni ruolo durante la distribuzione del servizio cloud.
$service_name = "MyService"
$service_package = "C:\build\output\CloudService.cspkg"
$service_config = "C:\build\output\ServiceConfiguration.Cloud.cscfg"
#Find the Extensions path based on service configuration file
$extensionsSearchPath = Join-Path -Path (Split-Path -Parent $service_config) -ChildPath "Extensions"
$diagnosticsExtensions = Get-ChildItem -Path $extensionsSearchPath -Filter "PaaSDiagnostics.*.PubConfig.xml"
$diagnosticsConfigurations = @()
foreach ($extPath in $diagnosticsExtensions)
{
#Find the RoleName based on file naming convention PaaSDiagnostics.<RoleName>.PubConfig.xml
$roleName = ""
$roles = $extPath -split ".",0,"simplematch"
if ($roles -is [system.array] -and $roles.Length -gt 1)
{
$roleName = $roles[1]
$x = 2
while ($x -le $roles.Length)
{
if ($roles[$x] -ne "PubConfig")
{
$roleName = $roleName + "." + $roles[$x]
}
else
{
break
}
$x++
}
$fullExtPath = Join-Path -path $extensionsSearchPath -ChildPath $extPath
$diagnosticsconfig = New-AzureServiceDiagnosticsExtensionConfig -Role $roleName -DiagnosticsConfigurationPath $fullExtPath
$diagnosticsConfigurations += $diagnosticsconfig
}
}
New-AzureDeployment -ServiceName $service_name -Slot Production -Package $service_package -Configuration $service_config -ExtensionConfiguration $diagnosticsConfigurations
Visual Studio codespace usa un approccio simile per le distribuzioni automatizzate di Servizi cloud con l’estensione di diagnostica. Per un esempio completo, vedere Publish-AzureCloudDeployment.ps1 .
Se nella configurazione di diagnostica non è specificato alcun elemento StorageAccount
, è necessario passare il parametro StorageAccountName al cmdlet. Se si specifica il parametro StorageAccountName, il cmdlet usa l’account di archiviazione specificato nel parametro e non quello specificato nel file di configurazione della diagnostica.
Se l'account di archiviazione di diagnostica si trova in una sottoscrizione diversa da quella del servizio cloud, è necessario passare al cmdlet i parametri StorageAccountName e StorageAccountKey in modo esplicito. Il parametro StorageAccountKey non è necessario quando l’account di archiviazione di diagnostica si trova nella stessa sottoscrizione, perché il cmdlet può eseguire automaticamente query e impostare il valore della chiave quando si abilita l’estensione di diagnostica. Tuttavia, se l'account di archiviazione di diagnostica si trova in una sottoscrizione diversa, il cmdlet potrebbe non essere in grado di ottenere automaticamente la chiave, quindi si deve specificare la chiave in modo esplicito tramite il parametro StorageAccountKey .
$webrole_diagconfig = New-AzureServiceDiagnosticsExtensionConfig -Role "WebRole" -DiagnosticsConfigurationPath $webrole_diagconfigpath -StorageAccountName $diagnosticsstorage_name -StorageAccountKey $diagnosticsstorage_key
$workerrole_diagconfig = New-AzureServiceDiagnosticsExtensionConfig -Role "WorkerRole" -DiagnosticsConfigurationPath $workerrole_diagconfigpath -StorageAccountName $diagnosticsstorage_name -StorageAccountKey $diagnosticsstorage_key
Abilitare l'estensione della diagnostica in un servizio Cloud esistente
È possibile usare il cmdlet Set AzureServiceDiagnosticsExtension per abilitare o aggiornare la configurazione della diagnostica in un servizio cloud già in esecuzione.
Avviso
Quando si abilita la diagnostica per un ruolo esistente, tutte le estensioni già impostate vengono disabilitate quando viene distribuito il pacchetto. tra cui:
- Diagnostica di Microsoft Monitoring Agent
- Microsoft Azure Security Monitoring
- Microsoft Antimalware
- Microsoft Monitoring Agent
- Microsoft Service Profiler Agent
- Windows Azure Domain Extension
- Windows Azure Diagnostics Extension
- Windows Azure Remote Desktop Extension
- Windows Azure Log Collector
Dopo avere distribuito il ruolo aggiornato, è possibile reimpostare le estensioni tramite il portale di Azure o PowerShell.
$service_name = "MyService"
$webrole_diagconfigpath = "MyService.WebRole.PubConfig.xml"
$workerrole_diagconfigpath = "MyService.WorkerRole.PubConfig.xml"
$webrole_diagconfig = New-AzureServiceDiagnosticsExtensionConfig -Role "WebRole" -DiagnosticsConfigurationPath $webrole_diagconfigpath
$workerrole_diagconfig = New-AzureServiceDiagnosticsExtensionConfig -Role "WorkerRole" -DiagnosticsConfigurationPath $workerrole_diagconfigpath
Set-AzureServiceDiagnosticsExtension -DiagnosticsConfiguration @($webrole_diagconfig,$workerrole_diagconfig) -ServiceName $service_name
Ottenere la configurazione di estensione della diagnostica corrente
Utilizzare il cmdlet Get AzureServiceDiagnosticsExtension per ottenere la configurazione di diagnostica corrente per un servizio cloud.
Get-AzureServiceDiagnosticsExtension -ServiceName "MyService"
Rimuovere l'estensione della diagnostica
Per disattivare la diagnostica in un servizio cloud, è possibile utilizzare il cmdlet Remove-AzureServiceDiagnosticsExtension.
Remove-AzureServiceDiagnosticsExtension -ServiceName "MyService"
Se è stata abilitata l'estensione di Diagnostica con Set-AzureServiceDiagnosticsExtension o New-AzureServiceDiagnosticsExtensionConfig senza il parametro Role, è possibile rimuovere l'estensione usando Remove-AzureServiceDiagnosticsExtension senza il parametro Role. Se il parametro Role è stato utilizzato al momento dell'abilitazione dell'estensione, allora deve essere utilizzato anche per la sua rimozione.
Per rimuovere l'estensione della diagnostica da ogni singolo ruolo:
Remove-AzureServiceDiagnosticsExtension -ServiceName "MyService" -Role "WebRole"
Passaggi successivi
- Per altre informazioni sull’uso della Diagnostica di Azure e altre tecniche per risolvere i problemi, vedere Abilitazione della diagnostica in Servizi cloud di Azure e macchine virtuali.
- Lo Schema di configurazione della diagnostica illustra le varie opzioni di configurazione xml per l'estensione della diagnostica.
- Per informazioni su come abilitare l'estensione della diagnostica per le macchine virtuali, vedere Creare una macchina virtuale Windows con monitoraggio e diagnostica mediante i modelli di Gestione risorse di Azure