تمكين تشخيص 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 Software Development Kits (SDKs) ل .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" وحدد Ok.
  3. حدد دور العامل وحدد موافق. تم إنشاء المشروع!
  4. وفي مستكشف الحلول، انقر نقرًا مزدوجًا فوق ملف خصائص WorkerRole1.
  5. في علامة التبويب Configuration ، قم بإلغاء تحديد Enable Diagnostics لتعطيل 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
  • خدمة 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 في نافذة Properties. حدد ... في الخاصية 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 وWADSetOtherTable. انقر نقرا مزدوجا فوق أحد الجداول لعرض بيانات تتبع الاستخدام التي تم جمعها.

CloudServices_diag_tables

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

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

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

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

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

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