Mengaktifkan diagnostik di Azure Cloud Services (klasik) menggunakan PowerShell

Penting

Cloud Services (klasik) sekarang tidak lagi digunakan untuk pelanggan baru dan akan dihentikan untuk semua pelanggan pada 31 Agustus 2024. Penyebaran baru sebaiknya menggunakan Azure Resource Manager yang baru berdasarkan model penyebaran Azure Cloud Services (dukungan tambahan) .

Anda dapat mengumpulkan data diagnostik seperti log aplikasi, penghitung kinerja, dll. dari Cloud Servoce menggunakan ekstensi Diagnostik Azure. Artikel ini menjelaskan cara mengaktifkan ekstensi Diagnostik Azure untuk Cloud Service menggunakan PowerShell. Lihat Cara menginstal dan mengonfigurasi Azure PowerShell untuk prasyarat yang diperlukan untuk artikel ini.

Mengaktifkan ekstensi diagnostik sebagai bagian dari penyebaran Cloud Service

Pendekatan ini berlaku untuk jenis skenario integrasi berkelanjutan, di mana ekstensi diagnostik dapat diaktifkan sebagai bagian dari penerapan layanan awan. Saat membuat penyebaran Cloud Service baru, Anda dapat mengaktifkan ekstensi diagnostik dengan meneruskan parameter ExtensionConfiguration ke cmdlet New-AzureDeployment. Parameter ExtensionConfiguration mengambil berbagai konfigurasi diagnostik yang dapat dibuat menggunakan cmdlet New-AzureServiceDiagnosticsExtensionConfig.

Contoh berikut menunjukkan bagaimana Anda dapat mengaktifkan diagnostik untuk layanan awan dengan WebRole dan WorkerRole, masing-masing memiliki konfigurasi diagnostik yang berbeda.

$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)

Jika file konfigurasi diagnostik menentukan elemen StorageAccount dengan nama akun penyimpanan, maka cmdlet New-AzureServiceDiagnosticsExtensionConfig akan secara otomatis menggunakan akun penyimpanan tersebut. Agar ini berfungsi, akun penyimpanan harus berada dalam langganan yang sama dengan Cloud Service yang sedang diterapkan.

Dari Azure SDK 2.6 dan seterusnya file konfigurasi ekstensi yang dihasilkan oleh target output penerbitan MSBuild akan mencakup nama akun penyimpanan berdasarkan string konfigurasi diagnostik yang ditentukan dalam file konfigurasi layanan (.cscfg). Skrip di bawah ini menunjukkan kepada Anda cara mengurai file konfigurasi Ekstensi dari output target terbitan dan mengonfigurasi ekstensi diagnostik untuk setiap peran saat menerapkan layanan awan.

$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 Online menggunakan pendekatan serupa untuk penerapan otomatis Cloud Services dengan ekstensi diagnostik. Lihat Publish-AzureCloudDeployment.ps1 untuk contoh lengkap.

Jikatidak ada StorageAccount yang ditentukan dalam konfigurasi diagnostik, maka Anda harus meneruskan parameter StorageAccountName ke cmdlet. Jika parameter StorageAccountName ditentukan, maka cmdlet akan selalu menggunakan akun penyimpanan yang ditentukan dalam parameter dan bukan yang ditentukan dalam file konfigurasi diagnostik.

Jika akun penyimpanan diagnostik berada dalam langganan yang berbeda dari Cloud Service, maka Anda harus secara eksplisit meneruskan parameter StorageAccountName dan StorageAccountKey ke cmdlet. Parameter StorageAccountKey tidak diperlukan saat akun penyimpanan diagnostik berada dalam langganan yang sama, karena cmdlet dapat secara otomatis meminta dan mengatur nilai kunci saat mengaktifkan ekstensi diagnostik. Namun, jika akun penyimpanan diagnostik berada dalam langganan yang berbeda, maka cmdlet mungkin tidak dapat mendapatkan kunci secara otomatis dan Anda perlu secara eksplisit menentukan kunci melalui parameter 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

Mengaktifkan ekstensi diagnostik pada Cloud Service yang ada

Anda dapat menggunakan cmdlet Set-AzureServiceDiagnosticsExtension untuk mengaktifkan atau memperbarui konfigurasi diagnostik pada Cloud Servoce yang sudah berjalan.

Peringatan

Saat Anda mengaktifkan diagnostik untuk peran yang ada, ekstensi apa pun yang telah Anda tetapkan dinonaktifkan saat paket disebarkan. Faktor itu meliputi:

  • Diagnostik Microsoft Monitoring Agent (MMA)
  • Pemantauan Microsoft Azure Security
  • Microsoft Antimalware
  • Microsoft Monitoring Agent (MMA)
  • Agen Profiler Layanan Microsoft
  • Ekstensi Domain Windows Azure
  • Ekstensi Windows Azure Diagnostics
  • Ekstensi Desktop Jarak Jauh Windows Azure
  • Pengumpul Log Windows Azure

Anda dapat mengatur ulang ekstensi melalui portal Microsoft Azure atau PowerShell setelah menyebarkan peran yang diperbarui.

$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

Mendapatkan konfigurasi ekstensi diagnostik saat ini

Gunakan cmdlet Get-AzureServiceDiagnosticsExtension untuk mendapatkan konfigurasi diagnostik saat ini untuk layanan awan.

Get-AzureServiceDiagnosticsExtension -ServiceName "MyService"

Menghapus ekstensi diagnostik

Untuk menonaktifkan diagnostik pada layanan awan, Anda dapat menggunakan cmdlet Remove-AzureServiceDiagnosticsExtension.

Remove-AzureServiceDiagnosticsExtension -ServiceName "MyService"

Jika Anda mengaktifkan ekstensi diagnostik menggunakan Set-AzureServiceDiagnosticsExtension atau New-AzureServiceDiagnosticsExtensionConfig tanpa parameter Peran, maka Anda dapat menghapus ekstensi menggunakan Remove-AzureServiceDiagnosticsExtension tanpa parameter Peran. Jika parameter Peran digunakan saat mengaktifkan ekstensi, maka parameter tersebut juga harus digunakan saat menghapus ekstensi.

Untuk menghapus ekstensi diagnostik dari setiap peran individu:

Remove-AzureServiceDiagnosticsExtension -ServiceName "MyService" -Role "WebRole"

Langkah berikutnya