Aracılığıyla paylaş


Windows çalıştıran bir sanal makinede Azure Tanılama etkinleştirmek için PowerShell kullanma

Azure Tanılama, Azure'da dağıtılan bir uygulamada tanılama verilerinin toplanmasına olanak tanıyan özelliktir. Windows çalıştıran bir Azure sanal makinesinden (VM) uygulama günlükleri veya performans sayaçları gibi tanılama verilerini toplamak için tanılama uzantısını kullanabilirsiniz.

Resource Manager dağıtım modelini kullanıyorsanız tanılama uzantısını etkinleştirin

Resource Manager şablonuna uzantı yapılandırmasını ekleyerek Azure Resource Manager dağıtım modeli aracılığıyla bir Windows VM oluştururken tanılama uzantısını etkinleştirebilirsiniz. Bkz. Azure Resource Manager şablonunu kullanarak izleme ve tanılama ile Windows sanal makinesi oluşturma.

tanılama uzantısını Resource Manager dağıtım modeli aracılığıyla oluşturulan mevcut bir VM'de etkinleştirmek için aşağıda gösterildiği gibi Set-AzVMDiagnosticsExtension PowerShell cmdlet'ini kullanabilirsiniz.

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

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

$diagnosticsconfig_path , aşağıdaki örnekte açıklandığı gibi XML'de tanılama yapılandırmasını içeren dosyanın yoludur.

Tanılama yapılandırma dosyası depolama hesabı adına sahip bir StorageAccount öğesi belirtiyorsa Set-AzVMDiagnosticsExtension betiği tanılama uzantısını otomatik olarak bu depolama hesabına tanılama verileri gönderecek şekilde ayarlar. Bunun çalışması için depolama hesabının VM ile aynı abonelikte olması gerekir.

Tanılama yapılandırmasında StorageAccount belirtilmediyse, StorageAccountName parametresini cmdlet'ine geçirmeniz gerekir. StorageAccountName parametresi belirtilirse, cmdlet her zaman tanılama yapılandırma dosyasında belirtilen depolama hesabını değil parametresinde belirtilen depolama hesabını kullanır.

Tanılama depolama hesabı VM'den farklı bir abonelikteyse, StorageAccountName ve StorageAccountKey parametrelerini cmdlet'ine açıkça geçirmeniz gerekir. Tanılama depolama hesabı aynı abonelikte olduğunda StorageAccountKey parametresi gerekli değildir, cmdlet tanılama uzantısını etkinleştirirken anahtar değerini otomatik olarak sorgulayabilir ve ayarlayabilir. Ancak, tanılama depolama hesabı farklı bir abonelikteyse, cmdlet anahtarı otomatik olarak alamayabilir ve anahtarı StorageAccountKey parametresi aracılığıyla açıkça belirtmeniz gerekir.

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

Vm'de tanılama uzantısı etkinleştirildikten sonra Get-AzVmDiagnosticsExtension cmdlet'ini kullanarak geçerli ayarları alabilirsiniz.

Get-AzVMDiagnosticsExtension -ResourceGroupName $vm_resourcegroup -VMName $vm_name

Cmdlet, tanılama yapılandırmasını içeren PublicSettings'i döndürür. Desteklenen iki tür yapılandırma vardır: WadCfg ve xmlCfg. WadCfg JSON yapılandırması, xmlCfg ise Base64 ile kodlanmış biçimde XML yapılandırmasıdır. XML'yi okumak için kodunu çözmeniz gerekir.

$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

Remove-AzVmDiagnosticsExtension cmdlet'i, tanılama uzantısını VM'den kaldırmak için kullanılabilir.

Klasik dağıtım modelini kullanıyorsanız tanılama uzantısını etkinleştirin

Önemli

Klasik dağıtım modeliyle oluşturulan VM'ler 1 Eylül 2023'te kullanımdan kaldırılacaktır.

Azure Hizmet Yönetimi'nden IaaS kaynaklarını kullanıyorsanız lütfen geçişinizi 1 Eylül 2023'e kadar tamamlayın. Azure Resource Manager'daki birçok özellik geliştirmelerinden yararlanmak için geçişi daha erken yapmanızı öneririz.

Daha fazla bilgi için bkz. IaaS kaynaklarınızı 1 Eylül 2023'e kadar Azure Resource Manager geçirme.

Klasik dağıtım modeli aracılığıyla oluşturduğunuz bir VM'de tanılama uzantısını etkinleştirmek için Set-AzureVMDiagnosticsExtension cmdlet'ini kullanabilirsiniz. Aşağıdaki örnekte, tanılama uzantısının etkinleştirildiği klasik dağıtım modeli aracılığıyla yeni bir VM'nin nasıl oluşturulacağı gösterilmektedir.

$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

Klasik dağıtım modeliyle oluşturulmuş mevcut bir VM'de tanılama uzantısını etkinleştirmek için öncelikle Get-AzureVM cmdlet'ini kullanarak VM yapılandırmasını alın. Ardından Set-AzureVMDiagnosticsExtension cmdlet'ini kullanarak tanılama uzantısını içerecek şekilde VM yapılandırmasını güncelleştirin. Son olarak, Update-AzureVM kullanarak vm'ye güncelleştirilmiş yapılandırmayı uygulayın.

$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

Örnek tanılama yapılandırması

Yukarıdaki betiklerle tanılama genel yapılandırması için aşağıdaki XML kullanılabilir. Bu örnek yapılandırma, Windows olay günlüklerindeki uygulama, güvenlik ve sistem kanallarından gelen hatalarla ve tanılama altyapısı günlüklerindeki hatalarla birlikte çeşitli performans sayaçlarını tanılama depolama hesabına aktarır.

Yapılandırmanın aşağıdakileri içerecek şekilde güncelleştirilmesi gerekir:

  • Metrics öğesinin resourceID özniteliğinin VM'nin kaynak kimliğiyle güncelleştirilmesi gerekir.

    • Kaynak kimliği şu desen kullanılarak oluşturulabilir: "/subscriptions/{SUBSCRIPTION ID for the subscription with the VM}/resourceGroups/{The resourcegroup name for the VM}/providers/Microsoft.Compute/virtualMachines/{The VM Name}".

    • Örneğin, VM'nin çalıştığı aboneliğin abonelik kimliği 11111111-1111-1111-11111-1111111111 ise, kaynak grubunun kaynak grubu adı MyResourceGroup ve VM Adı MyWindowsVM ise resourceID değeri şu şekilde olur:

      <Metrics resourceId="/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/MyResourceGroup/providers/Microsoft.Compute/virtualMachines/MyWindowsVM" >
      
    • Performans sayaçları ve ölçüm yapılandırmasına göre ölçümlerin nasıl oluşturulduğu hakkında daha fazla bilgi için bkz. depolamadaki ölçümler tablosunu Azure Tanılama.

  • StorageAccount öğesinin tanılama depolama hesabının adıyla güncelleştirilmesi gerekir.

    <?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>
    

Sonraki adımlar