تمكين التشخيص في خدمات Azure السحابية (كلاسيكي) باستخدام PowerShell

هام

تم الآن إهمال Cloud Services (كلاسيكي) للعملاء الجدد وسيتم استبعادها في 31 أغسطس 2024 لجميع العملاء. ينبغي أن تستخدم عمليات النشر الجديدة نموذج النشر الجديد القائم على Azure Resource Manager ‏‏Azure Cloud Services (الدعم الموسع) .

يمكنك جمع بيانات تشخيصية مثل سجلات التطبيقات وعدادات الأداء وما إلى ذلك من الخدمة السحابية باستخدام ملحق تشخيص Azure. توضح هذه المقالة كيفية تمكين ملحق تشخيص Azure لخدمة سحابية باستخدام PowerShell. انظر كيفية تثبيت Azure PowerShell وتكوينه للتعرف على المتطلبات الأساسية المطلوبة بهذه المقالة.

تمكين ملحق التشخيص كجزء من توزيع الخدمة السحابية

ينطبق هذا الأسلوب على نوع وحدات السيناريو للتكامل المستمر، حيث يمكن تمكين ملحق التشخيص كجزء من توزيع الخدمة السحابية. عند إنشاء توزيع خدمة سحابية جديدة، يمكنك تمكين ملحق التشخيص عن طريق تمرير في المعلمة ExtensionConfiguration إلى cmdlet New-AzureDeployment. تأخذ المعلمة ExtensionConfiguration صفيف من تكوينات التشخيص التي يمكن إنشاؤها باستخدام cmdlet New-AzureServiceDiagnosgnosticsExtensionConfig.

يوضح المثال التالي كيف يمكنك تمكين التشخيص لخدمة سحابية مع WebRole وWorkerRole، ولكل منهما تكوين تشخيص مختلف.

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

إذا كان ملف تكوين التشخيص يحدد StorageAccount عنصرًا باسم حساب تخزين، New-AzureServiceDiagnosticsExtensionConfig فسيستخدم cmdlet حساب التخزين هذا تلقائيًا. لكي يعمل هذا، يجب أن يكون حساب التخزين في نفس الاشتراك الذي يتم توزيعه في خدمة سحابية.

من Azure SDK 2.6 فصاعدًا، يتم إنشاء ملفات تكوين الملحق بواسطة مخرجات هدف نشر MSBuild والذي سيتضمن اسم حساب التخزين استنادًا إلى سلسلة تكوين التشخيص المحدد في ملف تكوين الخدمة (.cscfg). يوضح البرنامج النصي أدناه كيفية تحليل ملفات تكوين الملحق من إخراج هدف النشر وتكوين ملحق التشخيص لكل دور عند نشر خدمة سحابية.

$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 نهجًا مماثلًا للتوزيعات التلقائية للخدمات السحابية مع ملحق التشخيص. انظر Publish-AzureCloudDeployment.ps1 للحصول على مثال كامل.

إذا StorageAccount لم يتم التحديد في تكوين التشخيص، فسيلزمك التمرير في المعلمة StorageAccountName إلى cmdlet. إذا تم تحديد المعلمة StorageAccountName فسيستخدم cmdlet دومًا حساب التخزين المحدد في المعلمة وليس واحد المحدد في ملف تكوين التشخيص.

إذا كان حساب تخزين التشخيص في اشتراك مختلف عن خدمة سحابية، فسيلزمك التمرير بوضوح في المعلمات StorageAccountName وStorageAccountKey إلى cmdlet. لا يلزم المعلمة StorageAccountKey عندما يكون حساب تخزين التشخيص في نفس الاشتراك، حيث يُمكن أن يستعلم cmdlet تلقائيًا ويعين قيمة المفتاح عند تمكين ملحق التشخيص. ومع ذلك، إذا كان حساب تخزين التشخيص في اشتراك مختلف، فقد لا يتمكن cmdlet من الحصول على المفتاح تلقائيًا ويلزمه تحديد المفتاح بوضوح من خلال المعلمة 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

تمكين ملحق التشخيص على خدمة سحابية موجودة

يمكنك استخدام cmdletSet-AzureServiceDiagnosticsExtension لتمكين أو تحديث تكوين التشخيص على خدمة سحابية قيد التشغيل بالفعل.

تحذير

عند تمكين التشخيص لدور موجود، يتم تعطيل أي ملحقات عيَّنتَها بالفعل عند توزيع الحزمة. وتشمل هذه القيود ما يلي:

  • تشخصيات Microsoft Monitoring Agent
  • مراقبة Microsoft Azure Security
  • خدمة 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

يمكنك إعادة تعيين ملحقاتك عبر مدخل Microsoft Azure أو 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

الحصول على تكوين ملحق التشخيص الحالي

استخدم cmdlet Get-AzureServiceDiagnosticsExtension للحصول على تكوين التشخيص الحالي لخدمة سحابية.

Get-AzureServiceDiagnosticsExtension -ServiceName "MyService"

ملحق تشخيصات Azure

لإيقاف تشغيل التشخيصات على خدمة سحابية، يمكنك استخدام cmdlet Remove-AzureServiceDiagnosticsExtension.

Remove-AzureServiceDiagnosticsExtension -ServiceName "MyService"

إذا مكّنت ملحق التشخيصات باستخدام إما Set-AzureServiceDiagnosticsExtension أو New-AzureServiceDiagnosticsExtensionConfig دون معلمة الدور، فسوف تتمكن من إزالة الملحق باستخدام Remove-AzureServiceDiagnosticsExtension دون دور المعلمة. إذا تم استخدام معلمة الدور عند تمكين الملحق، يجب استخدامها أيضًا عند إزالة الملحق.

لإزالة ملحق التشخيص من كل دور فردي:

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

الخطوات التالية