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

هام

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

راجع نظرة عامة على تشخيص Azure للحصول على خلفية حول تشخيص Azure.

كيفية تمكين التشخيص في دور العامل

توضح هذه الإرشادات كيفية تنفيذ دور عامل Azure الذي تبعث منه بيانات تتبع الاستخدام باستخدام الفئة NET. EventSource. يتم استخدام Azure Diagnostics لجمع بيانات تتبع الاستخدام وتخزينها في حساب تخزين على Azure. عند إنشاء دور عامل، يمكّن Visual Studio Diagnostics 1.0 تلقائياً ضمن الحل في عدة تطوير البرامج Azure لـNET. 2.4 وما سبق. تصف الإرشادات التالية عملية إنشاء دور العامل، مما يعطل Diagnostics 1.0 عن الحل ونشر Diagnostics 1.2 أو 1.3 إلى دور العامل.

المتطلبات الأساسية

تفترض هذه المقالة أن لديك اشتراك Azure وأنك تستخدمVisual Studio في Azure SDK. إذا لم يكن لديك اشتراك Azure، يمكنك التسجيل للحصول على تجربة مجانية. تأكد أيضاً من تثبيت وتكوين الإصدار 0.8.7 من Azure PowerShell أو إصدار أحدث.

الخطوة 1: إنشاء دور العامل

  1. قم بتشغيل Visual Studio.
  2. قم بإنشاء مشروع خدمة سحابة Azure من قالب السحابة التي تستهدف NET. Framework 4.5. قم بتسمية المشروع "WadExample" وانقر فوق موافق.
  3. حدّد دور العامل وانقر فوق موافق. وسيتم إنشاء المشروع.
  4. وفي مستكشف الحلول، انقر نقراً مزدوجاً فوق ملف خصائص WorkerRole1.
  5. في علامة التبويب التكوين، قم بإلغاء تحديد تمكين التشخيص لتعطيل Diagnostics 1.0 (Azure SDK 2.4 وأي إصدار سابق).
  6. قم بإنشاء الحل الخاص بك للتحقق من عدم وجود أي أخطاء.

الخطوة 2: ضع التعليمة البرمجية الخاصة بك

استبدل محتويات WorkerRole.cs بالرمز التالي. تُطبق فئة SampleEventSourceWriter، الموروثة من فئة EventSource، أربع طرق تسجيل: SendEnums، وMessageMethod، وSetOther وHighFreq. تُحدّد المعلمة الأولى لأسلوب WriteEvent معرّف الحدث المعني. يطبق أسلوب «التشغيل» حلقة غير محدودة تستدعي كل طرق التسجيل المُطبقة في فئة SampleEventSourceWriter لكل 10 ثوان.

using Microsoft.WindowsAzure.ServiceRuntime;
using System;
using System.Diagnostics;
using System.Diagnostics.Tracing;
using System.Net;
using System.Threading;

namespace WorkerRole1
{
    sealed class SampleEventSourceWriter : EventSource
    {
        public static SampleEventSourceWriter Log = new SampleEventSourceWriter();
        public void SendEnums(MyColor color, MyFlags flags) { if (IsEnabled())  WriteEvent(1, (int)color, (int)flags); }// Cast enums to int for efficient logging.
        public void MessageMethod(string Message) { if (IsEnabled())  WriteEvent(2, Message); }
        public void SetOther(bool flag, int myInt) { if (IsEnabled())  WriteEvent(3, flag, myInt); }
        public void HighFreq(int value) { if (IsEnabled()) WriteEvent(4, value); }

    }

    enum MyColor
    {
        Red,
        Blue,
        Green
    }

    [Flags]
    enum MyFlags
    {
        Flag1 = 1,
        Flag2 = 2,
        Flag3 = 4
    }

    public class WorkerRole : RoleEntryPoint
    {
        public override void Run()
        {
            // This is a sample worker implementation. Replace with your logic.
            Trace.TraceInformation("WorkerRole1 entry point called");

            int value = 0;

            while (true)
            {
                Thread.Sleep(10000);
                Trace.TraceInformation("Working");

                // Emit several events every time we go through the loop
                for (int i = 0; i < 6; i++)
                {
                    SampleEventSourceWriter.Log.SendEnums(MyColor.Blue, MyFlags.Flag2 | MyFlags.Flag3);
                }

                for (int i = 0; i < 3; i++)
                {
                    SampleEventSourceWriter.Log.MessageMethod("This is a message.");
                    SampleEventSourceWriter.Log.SetOther(true, 123456789);
                }

                if (value == int.MaxValue) value = 0;
                SampleEventSourceWriter.Log.HighFreq(value++);
            }
        }

        public override bool OnStart()
        {
            // Set the maximum number of concurrent connections
            ServicePointManager.DefaultConnectionLimit = 12;

            // For information on handling configuration changes
            // see the MSDN topic at https://go.microsoft.com/fwlink/?LinkId=166357.

            return base.OnStart();
        }
    }
}

الخطوة 3: نشر دور العامل الخاص بك

تحذير

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

  • تشخصيات 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 بعد توزيع الدور المحدث.

  1. قم بنشر دور العامل الخاص بك إلى Azure من داخل Visual Studio من خلال تحديد مشروع WadExample في مستكشف الحلول ثم نشر من القائمة البناء.
  2. اختر اشتراكك.
  3. وفي مربع حوار إعدادات النشر في Microsoft Azure، اختر إنشاء…جديد.
  4. في مربع حوار إنشاء خدمة السحابة وحساب التخزين، أدخل اسم (على سبيل المثال، "WadExample") وحدّد منطقة أو مجموعة الترابط.
  5. قم بتعيين البيئة إلى التشغيل المرحلي.
  6. قم بتعديل أي الإعدادات أخرى حسب الاقتضاء وانقر فوق نشر.
  7. بعد اكتمال النشر، تحقّق في مدخل Microsoft Azure أن خدمة السحابة في حالة التشغيل.

الخطوة 4: قم بإنشاء ملف تكوين التشخيص وتثبيت الملحق

  1. قم بتحميل تعريف مخطط ملف التكوين العام عن طريق تنفيذ أمر PowerShell التالي:

    (Get-AzureServiceAvailableExtension -ExtensionName 'PaaSDiagnostics' -ProviderNamespace 'Microsoft.Azure.Diagnostics').PublicConfigurationSchema | Out-File -Encoding utf8 -FilePath 'WadConfig.xsd'
    
  2. أضف ملف XML إلى مشروع WorkerRole1 الخاص بك عن طريق النقر بزر الماوس الأيمن على مشروع WorkerRole1 وحدد Add ->New Item... ->Visual #C items ->Data ->XML File. قم بتسمية الملف "WadExample.xml".

    CloudServices_diag_add_xml

  3. ربط WadConfig.xsd بملف التكوين. تأكد من أن إطار محرر WadExample.xml هو الإطار النشط. اضغط علىF4 لفتح نافذة الخصائص. انقر فوق خاصية المخططات في نافذة الخصائص. انقر فوق في خاصية Schemas. انقر فوق الزر Add… وانتقل إلى الموقع حيث حفظت ملف XSD وحدد الملف WadConfig.xsd. انقر فوق موافق.

  4. قم باستبدال محتويات ملف التكوين WadExample.xml بلغة التمييز التالية القابلة للملحق. يعرّف ملف التكوين اثنين من عدّادات الأداء لتجميع: استخدام واحدة الاستخدام وحدة المعالجة المركزية وأُخرى لاستخدام الذاكرة. ثم يحدّد التكوين الأحداث الأربعة المطابقة للأساليب في فئة SampleEventSourceWriter.

<?xml version="1.0" encoding="utf-8"?>
<PublicConfig xmlns="http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration">
  <WadCfg>
    <DiagnosticMonitorConfiguration overallQuotaInMB="25000">
      <PerformanceCounters scheduledTransferPeriod="PT1M">
        <PerformanceCounterConfiguration counterSpecifier="\Processor(_Total)\% Processor Time" sampleRate="PT1M" unit="percent" />
        <PerformanceCounterConfiguration counterSpecifier="\Memory\Committed Bytes" sampleRate="PT1M" unit="bytes"/>
      </PerformanceCounters>
      <EtwProviders>
        <EtwEventSourceProviderConfiguration provider="SampleEventSourceWriter" scheduledTransferPeriod="PT5M">
          <Event id="1" eventDestination="EnumsTable"/>
          <Event id="2" eventDestination="MessageTable"/>
          <Event id="3" eventDestination="SetOtherTable"/>
          <Event id="4" eventDestination="HighFreqTable"/>
          <DefaultEvents eventDestination="DefaultTable" />
        </EtwEventSourceProviderConfiguration>
      </EtwProviders>
    </DiagnosticMonitorConfiguration>
  </WadCfg>
</PublicConfig>

الخطوة 5: قم بتثبيت التشخيصات على دور العامل الخاص بك

تعد PowerShell cmdlets لإدارة التشخيص على شبكة الإنترنت أو دور العامل هي : Set-AzureServiceDiagnosticsExtension، وGet-AzureServiceDiagnosticsExtension، وRemove-AzureServiceDiagnosticsExtension.

  1. افتح Azure PowerShell.
  2. قم بتطبيق البرنامج النصي لتثبيت التشخيص في دور العامل الخاص بك (استبدال StorageAccountKey بمفتاح حساب تخزين wadexample الخاص بك وconfig_path بالمسار إلى ملف WadExample.xml):
$storage_name = "wadexample"
$key = "<StorageAccountKey>"
$config_path="c:\users\<user>\documents\visual studio 2013\Projects\WadExample\WorkerRole1\WadExample.xml"
$service_name="wadexample"
$storageContext = New-AzureStorageContext -StorageAccountName $storage_name -StorageAccountKey $key
Set-AzureServiceDiagnosticsExtension -StorageContext $storageContext -DiagnosticsConfigurationPath $config_path -ServiceName $service_name -Slot Staging -Role WorkerRole1

الخطوة 6: انظر إلى بيانات تتبع الاستخدام الخاصة بك

وفي Visual Studio مستعرض الخادم، انتقل إلى حساب التخزين wadexample. بعد تشغيل خدمة السحابة لحوالي خمس (5) دقائق، يجب أن ترى الجداول WADEnumsTable، وWADHighFreqTable، وWADMessageTable، وWADPerformanceCountersTableوWASETOtherTable. انقر نقراً مزدوجاً فوق إحدى الجداول لعرض بيانات تتبع الاستخدام التي تم تجميعها.

CloudServices_diag_tables

مخطط ملف التكوين

يعرّف ملف تكوين التشخيص القيم المستخدمة في تكوين إعدادات تكوين التشخيص عند بدء تشغيل عامل التشخيص. راجع آخر مرجع للمخطط أحدث للحصول على أمثلة وقيم صحيحة.

استكشاف الأخطاء وإصلاحها

إذا واجهتك مشكلة، راجع استكشاف أخطاء Azure Diagnostics وإصلاحها للحصول على مساعدة في المشاكل الشائعة.

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

راجع قائمة مقالات تشخيص الجهاز الظاهري لـ Azure المعنية لتغيير البيانات التي تقوم بتجميعها، أو استكشف المشاكل وإصلاحها أو تعرّف على المزيد حول التشخيص بشكل عام.