Sdílet prostřednictvím


Použití PowerShellu k povolení Diagnostiky Azure na virtuálním počítači s Windows

Azure Diagnostics je funkce v Rámci Azure, která umožňuje shromažďování diagnostických dat v nasazené aplikaci. Diagnostické rozšíření můžete použít ke shromažďování diagnostických dat, jako jsou protokoly aplikací nebo čítače výkonu, z virtuálního počítače Azure, na kterém běží Windows.

Pokud používáte model nasazení Resource Manager, povolte rozšíření diagnostiky.

Rozšíření diagnostiky můžete povolit při vytváření virtuálního počítače s Windows prostřednictvím modelu nasazení Azure Resource Manager přidáním konfigurace rozšíření do šablony Resource Manageru. Viz Vytvoření virtuálního počítače s Windows s monitorováním a diagnostikou pomocí šablony Azure Resource Manageru.

Pokud chcete povolit rozšíření diagnostiky na existujícím virtuálním počítači vytvořeném prostřednictvím modelu nasazení Resource Manager, můžete použít rutinu PowerShellu Set-AzVMDiagnosticsExtension , jak je znázorněno níže.

$vm_resourcegroup = "myvmresourcegroup"
$vm_name = "myvm"
$diagnosticsconfig_path = "DiagnosticsPubConfig.xml"

Set-AzVMDiagnosticsExtension -ResourceGroupName $vm_resourcegroup -VMName $vm_name -DiagnosticsConfigurationPath $diagnosticsconfig_path

$diagnosticsconfig_path je cesta k souboru, který obsahuje konfiguraci diagnostiky v jazyce XML, jak je popsáno v ukázce níže.

Pokud konfigurační soubor diagnostiky určuje prvek StorageAccount s názvem účtu úložiště, skript Set-AzVMDiagnosticsExtension automaticky nastaví rozšíření diagnostiky tak, aby do daného účtu úložiště odesílala diagnostická data. Aby to fungovalo, musí být účet úložiště ve stejném předplatném jako virtuální počítač.

Pokud v konfiguraci diagnostiky nebyl zadán žádný účet StorageAccount , musíte rutině předat parametr StorageAccountName . Pokud je zadaný parametr StorageAccountName, bude rutina vždy používat účet úložiště zadaný v parametru, nikoli účet, který je zadán v konfiguračním souboru diagnostiky.

Pokud je účet úložiště diagnostiky v jiném předplatném než virtuální počítač, musíte do rutiny explicitně předat parametry StorageAccountName a StorageAccountKey . Parametr StorageAccountKey není potřeba, pokud je účet úložiště diagnostiky ve stejném předplatném, protože rutina může automaticky dotazovat a nastavit hodnotu klíče při povolování rozšíření diagnostiky. Pokud je ale účet úložiště diagnostiky v jiném předplatném, rutina nemusí být schopná klíč získat automaticky a musíte klíč explicitně zadat pomocí parametru StorageAccountKey .

Set-AzVMDiagnosticsExtension -ResourceGroupName $vm_resourcegroup -VMName $vm_name -DiagnosticsConfigurationPath $diagnosticsconfig_path -StorageAccountName $diagnosticsstorage_name -StorageAccountKey $diagnosticsstorage_key

Jakmile je na virtuálním počítači povolené rozšíření diagnostiky, můžete aktuální nastavení získat pomocí rutiny Get-AzVmDiagnosticsExtension .

Get-AzVMDiagnosticsExtension -ResourceGroupName $vm_resourcegroup -VMName $vm_name

Rutina vrátí Hodnotu PublicSettings, která obsahuje konfiguraci diagnostiky. Existují dva druhy podporované konfigurace, WadCfg a xmlCfg. WadCfg je konfigurace JSON a xmlCfg je konfigurace XML ve formátu kódování Base64. Pokud chcete kód XML přečíst, musíte ho dekódovat.

$publicsettings = (Get-AzVMDiagnosticsExtension -ResourceGroupName $vm_resourcegroup -VMName $vm_name).PublicSettings
$encodedconfig = (ConvertFrom-Json -InputObject $publicsettings).xmlCfg
$xmlconfig = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($encodedconfig))
Write-Host $xmlconfig

Rutinu Remove-AzVmDiagnosticsExtension můžete použít k odebrání rozšíření diagnostiky z virtuálního počítače.

Pokud používáte model nasazení Classic, povolte rozšíření diagnostiky.

Důležité

Virtuální počítače vytvořené prostřednictvím modelu nasazení Classic budou vyřazeny 1. září 2023.

Pokud používáte prostředky IaaS ze služby Azure Service Management, dokončete migraci do 1. září 2023. Doporučujeme, abyste přechod provedli dříve, abyste využili výhod mnoha vylepšení funkcí v Azure Resource Manageru.

Další informace najdete v tématu Migrace prostředků IaaS do Azure Resource Manageru do 1. září 2023.

Pomocí rutiny Set-AzureVMDiagnosticsExtension můžete na virtuálním počítači, který vytvoříte pomocí modelu nasazení Classic, povolit rozšíření diagnostiky. Následující příklad ukazuje, jak vytvořit nový virtuální počítač prostřednictvím modelu nasazení Classic s povoleným rozšířením diagnostiky.

$VM = New-AzureVMConfig -Name $VM -InstanceSize Small -ImageName $VMImage
$VM = Add-AzureProvisioningConfig -VM $VM -AdminUsername $Username -Password $Password -Windows
$VM = Set-AzureVMDiagnosticsExtension -DiagnosticsConfigurationPath $Config_Path -VM $VM -StorageContext $Storage_Context
New-AzVM -Location $Location -ServiceName $Service_Name -VM $VM

Pokud chcete povolit rozšíření diagnostiky na existujícím virtuálním počítači vytvořeném prostřednictvím modelu nasazení Classic, nejprve pomocí rutiny Get-AzureVM získejte konfiguraci virtuálního počítače. Potom pomocí rutiny Set-AzureVMDiagnosticsExtension aktualizujte konfiguraci virtuálního počítače tak, aby zahrnovala rozšíření diagnostiky . Nakonec použijte aktualizovanou konfiguraci na virtuální počítač pomocí update-AzureVM.

$VM = Get-AzureVM -ServiceName $Service_Name -Name $VM_Name
$VM_Update = Set-AzureVMDiagnosticsExtension  -DiagnosticsConfigurationPath $Config_Path -VM $VM -StorageContext $Storage_Context
Update-AzureVM -ServiceName $Service_Name -Name $VM_Name -VM $VM_Update.VM

Ukázková konfigurace diagnostiky

Následující kód XML lze použít pro veřejnou konfiguraci diagnostiky s výše uvedenými skripty. Tato ukázková konfigurace přenese různé čítače výkonu do účtu úložiště diagnostiky a také chyby z aplikací, zabezpečení a systémových kanálů v protokolech událostí Windows a případné chyby z protokolů diagnostické infrastruktury.

Konfigurace musí být aktualizována, aby zahrnovala následující:

  • Atribut resourceID elementu Metrics je potřeba aktualizovat pomocí ID prostředku virtuálního počítače.

    • ID prostředku lze vytvořit pomocí následujícího vzoru: /subscriptions/{subscriptions/{subscription ID pro předplatné s virtuálním počítačem}/resourceGroups/{Název skupiny prostředků pro virtuální počítač}/providers/Microsoft.Compute/virtualMachines/{Název virtuálního počítače}.

    • Pokud je například ID předplatného pro předplatné, na kterém je virtuální počítač spuštěný, 1111111-1111-1111-1111-1111111111, název skupiny prostředků pro skupinu prostředků je MyResourceGroup a název virtuálního počítače je MyWindowsVM, pak hodnota pro id prostředku bude:

      <Metrics resourceId="/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/MyResourceGroup/providers/Microsoft.Compute/virtualMachines/MyWindowsVM" >
      
    • Další informace o tom, jak se metriky generují na základě čítačů výkonu a konfigurace metrik, najdete v tabulce metrik Azure Diagnostics v úložišti.

  • Prvek StorageAccount je potřeba aktualizovat názvem účtu úložiště diagnostiky.

    <?xml version="1.0" encoding="utf-8"?>
    <PublicConfig xmlns="http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration">
        <WadCfg>
          <DiagnosticMonitorConfiguration overallQuotaInMB="4096">
            <DiagnosticInfrastructureLogs scheduledTransferLogLevelFilter="Error"/>
            <PerformanceCounters scheduledTransferPeriod="PT1M">
          <PerformanceCounterConfiguration counterSpecifier="\Processor(_Total)\% Processor Time" sampleRate="PT15S" unit="Percent">
            <annotation displayName="CPU utilization" locale="en-us"/>
          </PerformanceCounterConfiguration>
          <PerformanceCounterConfiguration counterSpecifier="\Processor(_Total)\% Privileged Time" sampleRate="PT15S" unit="Percent">
            <annotation displayName="CPU privileged time" locale="en-us"/>
          </PerformanceCounterConfiguration>
          <PerformanceCounterConfiguration counterSpecifier="\Processor(_Total)\% User Time" sampleRate="PT15S" unit="Percent">
            <annotation displayName="CPU user time" locale="en-us"/>
          </PerformanceCounterConfiguration>
          <PerformanceCounterConfiguration counterSpecifier="\Processor Information(_Total)\Processor Frequency" sampleRate="PT15S" unit="Count">
            <annotation displayName="CPU frequency" locale="en-us"/>
          </PerformanceCounterConfiguration>
          <PerformanceCounterConfiguration counterSpecifier="\System\Processes" sampleRate="PT15S" unit="Count">
            <annotation displayName="Processes" locale="en-us"/>
          </PerformanceCounterConfiguration>
          <PerformanceCounterConfiguration counterSpecifier="\Process(_Total)\Thread Count" sampleRate="PT15S" unit="Count">
            <annotation displayName="Threads" locale="en-us"/>
          </PerformanceCounterConfiguration>
          <PerformanceCounterConfiguration counterSpecifier="\Process(_Total)\Handle Count" sampleRate="PT15S" unit="Count">
            <annotation displayName="Handles" locale="en-us"/>
          </PerformanceCounterConfiguration>
          <PerformanceCounterConfiguration counterSpecifier="\Memory\% Committed Bytes In Use" sampleRate="PT15S" unit="Percent">
            <annotation displayName="Memory usage" locale="en-us"/>
          </PerformanceCounterConfiguration>
          <PerformanceCounterConfiguration counterSpecifier="\Memory\Available Bytes" sampleRate="PT15S" unit="Bytes">
            <annotation displayName="Memory available" locale="en-us"/>
          </PerformanceCounterConfiguration>
          <PerformanceCounterConfiguration counterSpecifier="\Memory\Committed Bytes" sampleRate="PT15S" unit="Bytes">
            <annotation displayName="Memory committed" locale="en-us"/>
          </PerformanceCounterConfiguration>
          <PerformanceCounterConfiguration counterSpecifier="\Memory\Commit Limit" sampleRate="PT15S" unit="Bytes">
            <annotation displayName="Memory commit limit" locale="en-us"/>
          </PerformanceCounterConfiguration>
          <PerformanceCounterConfiguration counterSpecifier="\Memory\Pool Paged Bytes" sampleRate="PT15S" unit="Bytes">
            <annotation displayName="Memory paged pool" locale="en-us"/>
          </PerformanceCounterConfiguration>
          <PerformanceCounterConfiguration counterSpecifier="\Memory\Pool Nonpaged Bytes" sampleRate="PT15S" unit="Bytes">
            <annotation displayName="Memory non-paged pool" locale="en-us"/>
          </PerformanceCounterConfiguration>
          <PerformanceCounterConfiguration counterSpecifier="\PhysicalDisk(_Total)\% Disk Time" sampleRate="PT15S" unit="Percent">
            <annotation displayName="Disk active time" locale="en-us"/>
          </PerformanceCounterConfiguration>
          <PerformanceCounterConfiguration counterSpecifier="\PhysicalDisk(_Total)\% Disk Read Time" sampleRate="PT15S" unit="Percent">
            <annotation displayName="Disk active read time" locale="en-us"/>
          </PerformanceCounterConfiguration>
          <PerformanceCounterConfiguration counterSpecifier="\PhysicalDisk(_Total)\% Disk Write Time" sampleRate="PT15S" unit="Percent">
            <annotation displayName="Disk active write time" locale="en-us"/>
          </PerformanceCounterConfiguration>
          <PerformanceCounterConfiguration counterSpecifier="\PhysicalDisk(_Total)\Disk Transfers/sec" sampleRate="PT15S" unit="CountPerSecond">
            <annotation displayName="Disk operations" locale="en-us"/>
          </PerformanceCounterConfiguration>
          <PerformanceCounterConfiguration counterSpecifier="\PhysicalDisk(_Total)\Disk Reads/sec" sampleRate="PT15S" unit="CountPerSecond">
            <annotation displayName="Disk read operations" locale="en-us"/>
          </PerformanceCounterConfiguration>
          <PerformanceCounterConfiguration counterSpecifier="\PhysicalDisk(_Total)\Disk Writes/sec" sampleRate="PT15S" unit="CountPerSecond">
            <annotation displayName="Disk write operations" locale="en-us"/>
          </PerformanceCounterConfiguration>
          <PerformanceCounterConfiguration counterSpecifier="\PhysicalDisk(_Total)\Disk Bytes/sec" sampleRate="PT15S" unit="BytesPerSecond">
            <annotation displayName="Disk speed" locale="en-us"/>
          </PerformanceCounterConfiguration>
          <PerformanceCounterConfiguration counterSpecifier="\PhysicalDisk(_Total)\Disk Read Bytes/sec" sampleRate="PT15S" unit="BytesPerSecond">
            <annotation displayName="Disk read speed" locale="en-us"/>
          </PerformanceCounterConfiguration>
          <PerformanceCounterConfiguration counterSpecifier="\PhysicalDisk(_Total)\Disk Write Bytes/sec" sampleRate="PT15S" unit="BytesPerSecond">
            <annotation displayName="Disk write speed" locale="en-us"/>
          </PerformanceCounterConfiguration>
          <PerformanceCounterConfiguration counterSpecifier="\PhysicalDisk(_Total)\Avg. Disk Queue Length" sampleRate="PT15S" unit="Count">
            <annotation displayName="Disk average queue length" locale="en-us"/>
          </PerformanceCounterConfiguration>
          <PerformanceCounterConfiguration counterSpecifier="\PhysicalDisk(_Total)\Avg. Disk Read Queue Length" sampleRate="PT15S" unit="Count">
            <annotation displayName="Disk average read queue length" locale="en-us"/>
          </PerformanceCounterConfiguration>
          <PerformanceCounterConfiguration counterSpecifier="\PhysicalDisk(_Total)\Avg. Disk Write Queue Length" sampleRate="PT15S" unit="Count">
            <annotation displayName="Disk average write queue length" locale="en-us"/>
          </PerformanceCounterConfiguration>
          <PerformanceCounterConfiguration counterSpecifier="\LogicalDisk(_Total)\% Free Space" sampleRate="PT15S" unit="Percent">
            <annotation displayName="Disk free space (percentage)" locale="en-us"/>
          </PerformanceCounterConfiguration>
          <PerformanceCounterConfiguration counterSpecifier="\LogicalDisk(_Total)\Free Megabytes" sampleRate="PT15S" unit="Count">
            <annotation displayName="Disk free space (MB)" locale="en-us"/>
          </PerformanceCounterConfiguration>
        </PerformanceCounters>
        <Metrics resourceId="(Update with resource ID for the VM)" >
            <MetricAggregation scheduledTransferPeriod="PT1H"/>
            <MetricAggregation scheduledTransferPeriod="PT1M"/>
        </Metrics>
        <WindowsEventLog scheduledTransferPeriod="PT1M">
          <DataSource name="Application!*[System[(Level = 1 or Level = 2)]]"/>
          <DataSource name="Security!*[System[(Level = 1 or Level = 2)]"/>
          <DataSource name="System!*[System[(Level = 1 or Level = 2)]]"/>
        </WindowsEventLog>
          </DiagnosticMonitorConfiguration>
        </WadCfg>
        <StorageAccount>(Update with diagnostics storage account name)</StorageAccount>
    </PublicConfig>
    

Další kroky