استخدم تنبيهًا لتشغيل دفتر تشغيل Azure Automation

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

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

أنواع التنبيهات

يمكنك استخدام دفاتر التشغيل الآلي مع ثلاثة أنواع من التنبيهات:

  • التنبيهات الشائعة
  • تنبيهات سجل النشاط
  • تنبيهات قياس في الوقت الفعلي تقريبا

إشعار

يعمل مخطط التنبيه الشائع على توحيد تجربة الاستهلاك لإعلامات التنبيه في Azure. تاريخيا، كان لأنواع التنبيه الثلاثة في Azure (القياس، السجل، وسجل النشاط) قوالب بريد إلكتروني الخاصة بهم، مخططات الإخطار على الويب، الخ. لمعرفة المزيد، راجع مخطط التنبيه العام.

عند استدعاء تنبيه دفتر تشغيل، يكون الاستدعاء الفعلي هو طلب HTTP POST إلى الإخطار على الويب. يحتوي نص طلب POST على عنصر بتنسيق JSON يحتوي على خصائص مفيدة تتعلق بالتنبيه. يسرد الجدول التالي الارتباطات إلى مخطط البيانات الأساسية لكل نوع من أنواع التنبيه:

Alert ‏‏الوصف مخطط البيانات الأساسية
تنبيه شائع يعمل مخطط التنبيه الشائع على توحيد تجربة الاستهلاك لإعلامات التنبيه في Azure اليوم. مخطط حمولة التنبيه الشائع.
تنبيه سجل النشاط إرسال إعلام عند تطابق أي حدث جديد في سجل نشاط Azure مع شروط معينة. على سبيل المثال، عند حدوث عملية Delete VM في myProductionResourceGroup أو عند ظهور حدث حالة خدمة Azure جديد مع حالة نشطة. مخطط البيانات الأساسية لتنبيه سجل النشاط
قرب تنبيه القياس في الوقت الفعلي إرسال إشعار أسرع من تنبيهات القياس عندما يستوفي مقياس واحد أو أكثر على مستوى النظام الأساسي شروطا محددة. على سبيل المثال، عندما تكون قيمة CPU ٪ على الجهاز الظاهري أكبر من 90، وقيمة الشبكة في أكبر من 500 ميغا بايت للدقائق 5 الماضية. قرب مخطط البيانات الأساسية لتنبيه القياس في الوقت الفعلي

نظرا لأن البيانات التي يتم توفيرها من قبل كل نوع من أنواع التنبيه مختلفة، يتم التعامل مع كل نوع تنبيه بشكل مختلف. في القسم التالي، يمكنك التعرف على كيفية إنشاء دفتر تشغيل للتعامل مع أنواع مختلفة من التنبيهات.

تعيين أذونات للهويات المدارة

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

  1. سجّل الدخول إلى Azure بشكل تفاعلي باستخدام Connect-AzAccount cmdlet واتبع الإرشادات.

    # Sign in to your Azure subscription
    $sub = Get-AzSubscription -ErrorAction SilentlyContinue
    if(-not($sub))
    {
        Connect-AzAccount
    }
    
    # If you have multiple subscriptions, set the one to use
    # Select-AzSubscription -SubscriptionId <SUBSCRIPTIONID>
    
  2. قم بتوفير قيمة مناسبة للمتغيرات أدناه ثم قم بتنفيذ البرنامج النصي.

    $resourceGroup = "resourceGroup"
    $automationAccount = "AutomationAccount"
    $userAssignedManagedIdentity = "userAssignedManagedIdentity"
    
  3. استخدم PowerShell cmdlet New-AzRoleAssignment لتعيين دور للهوية المدارة المعينة من قبل النظام.

    $SAMI = (Get-AzAutomationAccount -ResourceGroupName $resourceGroup -Name $automationAccount).Identity.PrincipalId
    New-AzRoleAssignment `
        -ObjectId $SAMI `
        -ResourceGroupName $resourceGroup `
        -RoleDefinitionName "DevTest Labs User"
    
  4. تعيين دور إلى هوية مدارة تم تعيينها من قبل المستخدم.

    $UAMI = (Get-AzUserAssignedIdentity -ResourceGroupName $resourceGroup -Name $userAssignedManagedIdentity)
    New-AzRoleAssignment `
        -ObjectId $UAMI.PrincipalId `
        -ResourceGroupName $resourceGroup `
        -RoleDefinitionName "DevTest Labs User"
    
  5. بالنسبة للهوية المُدارة المعينة من قبل النظام، أظهر ClientId وسجل القيمة للاستخدام اللاحق.

    $UAMI.ClientId
    

إنشاء دفتر تشغيل لمعالجة التنبيهات

لاستخدام التنفيذ التلقائي مع التنبيهات، تحتاج إلى دفتر تشغيل يقوم بإدارة البيانات الأساسية لتنبيه JSON التي تم تمريرها إلى دفتر التشغيل. يجب استدعاء دفتر تشغيل المثال التالي من تنبيه Azure.

كما هو موضح في المقطع السابق، كل نوع من التنبيه له مخطط مختلف. يأخذ البرنامج النصي بيانات الإخطار على الويب من تنبيه في WebhookData معلمة إدخال دفتر التشغيل. ثم يقوم البرنامج النصي بتقييم بيانات JSON الأساسية لتحديد نوع التنبيه المستخدم.

يستخدم هذا المثال تنبيه من جهاز ظاهري Azure (VM). يقوم باسترداد بيانات الجهاز الظاهري من البيانات الأساسية، ثم يستخدم تلك المعلومات لإيقاف الجهاز الظاهري. يجب إعداد الاتصال في الحساب التلقائي حيث يتم تشغيل دفتر التشغيل. عند استخدام التنبيهات لتشغيل دفاتر التشغيل، من المهم التحقق من حالة التنبيه في دفتر التشغيل الذي يتم تشغيله. تشغيل دفتر التشغيل في كل مرة يتغير فيها حالة التنبيه. التنبيهات لها حالات متعددة، وأكثرها شيوعًا هي التنشيط والحل. افحص الحالة في منطق دفتر التشغيل الخاص بك لضمان عدم تشغيل دفتر التشغيل أكثر من مرة. يوضح المثال في هذه المقالة كيفية البحث عن التنبيهات مع حالة تنشيط فقط.

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

إشعار

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

استخدم هذا المثال لإنشاء دفتر تشغيل يسمى Stop-AzureVmInResponsetoVMAlert. يمكنك تعديل نص PowerShell واستخدامه مع العديد من الموارد المختلفة.

  1. سجّل الدخول إلى Azure portal، وانتقل إلى حسابك في Automation.

  2. ضمن "Process Automation"، حدد "Runbooks".

  3. حدد + إنشاء دفتر تشغيل.

    1. قم بتسمية سجل التشغيل Stop-AzureVmInResponsetoVMAlert.
    2. من القائمة المنسدلة "Runbook type"، حدد "PowerShell".
    3. حدد إنشاء.
  4. في محرر سجل التشغيل، ألصق الكود التالي:

    [OutputType("PSAzureOperationResponse")]
    param
    (
        [Parameter (Mandatory=$false)]
        [object] $WebhookData
    )
    $ErrorActionPreference = "stop"
    
    if ($WebhookData)
    {
        # Get the data object from WebhookData
        $WebhookBody = (ConvertFrom-Json -InputObject $WebhookData.RequestBody)
    
        # Get the info needed to identify the VM (depends on the payload schema)
        $schemaId = $WebhookBody.schemaId
        Write-Verbose "schemaId: $schemaId" -Verbose
        if ($schemaId -eq "azureMonitorCommonAlertSchema") {
            # This is the common Metric Alert schema (released March 2019)
            $Essentials = [object] ($WebhookBody.data).essentials
            # Get the first target only as this script doesn't handle multiple
            $alertTargetIdArray = (($Essentials.alertTargetIds)[0]).Split("/")
            $SubId = ($alertTargetIdArray)[2]
            $ResourceGroupName = ($alertTargetIdArray)[4]
            $ResourceType = ($alertTargetIdArray)[6] + "/" + ($alertTargetIdArray)[7]
            $ResourceName = ($alertTargetIdArray)[-1]
            $status = $Essentials.monitorCondition
        }
        elseif ($schemaId -eq "AzureMonitorMetricAlert") {
            # This is the near-real-time Metric Alert schema
            $AlertContext = [object] ($WebhookBody.data).context
            $SubId = $AlertContext.subscriptionId
            $ResourceGroupName = $AlertContext.resourceGroupName
            $ResourceType = $AlertContext.resourceType
            $ResourceName = $AlertContext.resourceName
            $status = ($WebhookBody.data).status
        }
        elseif ($schemaId -eq "Microsoft.Insights/activityLogs") {
            # This is the Activity Log Alert schema
            $AlertContext = [object] (($WebhookBody.data).context).activityLog
            $SubId = $AlertContext.subscriptionId
            $ResourceGroupName = $AlertContext.resourceGroupName
            $ResourceType = $AlertContext.resourceType
            $ResourceName = (($AlertContext.resourceId).Split("/"))[-1]
            $status = ($WebhookBody.data).status
        }
        elseif ($schemaId -eq $null) {
            # This is the original Metric Alert schema
            $AlertContext = [object] $WebhookBody.context
            $SubId = $AlertContext.subscriptionId
            $ResourceGroupName = $AlertContext.resourceGroupName
            $ResourceType = $AlertContext.resourceType
            $ResourceName = $AlertContext.resourceName
            $status = $WebhookBody.status
        }
        else {
            # Schema not supported
            Write-Error "The alert data schema - $schemaId - is not supported."
        }
    
        Write-Verbose "status: $status" -Verbose
        if (($status -eq "Activated") -or ($status -eq "Fired"))
        {
            Write-Verbose "resourceType: $ResourceType" -Verbose
            Write-Verbose "resourceName: $ResourceName" -Verbose
            Write-Verbose "resourceGroupName: $ResourceGroupName" -Verbose
            Write-Verbose "subscriptionId: $SubId" -Verbose
    
            # Determine code path depending on the resourceType
            if ($ResourceType -eq "Microsoft.Compute/virtualMachines")
            {
                # This is an Resource Manager VM
                Write-Verbose "This is an Resource Manager VM." -Verbose
    
                # Ensures you do not inherit an AzContext in your runbook
                Disable-AzContextAutosave -Scope Process
    
                # Connect to Azure with system-assigned managed identity
                $AzureContext = (Connect-AzAccount -Identity).context
    
                # set and store context
                $AzureContext = Set-AzContext -SubscriptionName $AzureContext.Subscription -DefaultProfile $AzureContext
    
                # Stop the Resource Manager VM
                Write-Verbose "Stopping the VM - $ResourceName - in resource group - $ResourceGroupName -" -Verbose
                Stop-AzVM -Name $ResourceName -ResourceGroupName $ResourceGroupName -DefaultProfile $AzureContext -Force
                # [OutputType(PSAzureOperationResponse")]
            }
            else {
                # ResourceType not supported
                Write-Error "$ResourceType is not a supported resource type for this runbook."
            }
        }
        else {
            # The alert status was not 'Activated' or 'Fired' so no action taken
            Write-Verbose ("No action taken. Alert status: " + $status) -Verbose
        }
    }
    else {
        # Error
        Write-Error "This runbook is meant to be started from an Azure alert webhook only."
    }
    
  5. إذا كنت تريد تشغيل دفتر التشغيل للتنفيذ مع هوية مدارة معينة من قِبل النظام، اترك التعليمات البرمجية كما هي. إذا كنت تفضل استخدام الهوية المدارة المعينة من قِبل المستخدم، بعد ذلك:

    1. من الخط 78، قم بإزالة $AzureContext = (Connect-AzAccount -Identity).context،
    2. استبدله بـ $AzureContext = (Connect-AzAccount -Identity -AccountId <ClientId>).context، و
    3. أدخل معرف العميل الذي حصلت عليه سابقاً.
  6. حدد "Save"، ثم "Publish"، ثم "Yes" عند المطالبة.

  7. أغلق صفحة دفتر التشغيل للعودة إلى صفحة "حساب التنفيذ التلقائي".

إنشاء التنبيه

تستخدم التنبيهات مجموعات الإجراءات، وهي مجموعات من الإجراءات التي يتم تشغيلها بواسطة التنبيه. تعد دفاتر التشغيل واحدة من الإجراءات العديدة التي يمكنك استخدامها مع مجموعات الإجراءات.

  1. في حساب التنفيذ التلقائي، ضمن مراقبة، حدد تنبيهات.

  2. حدد + قاعدة تنبيه جديدة لفتح صفحة إنشاء قاعدة التنبيه.

    The create alert rule page and subsections.

  3. ضمن نطاق، حدد تحرير المورد.

  4. في الصفحة تحديد مورد، من القائمة المنسدلة تصفية حسب نوع المورد، حدد الأجهزة الظاهرية.

  5. حدد المربع المجاور للجهاز (الأجهزة) الظاهري التي تريد مراقبتها. ثم حدد تم للعودة إلى صفحة إنشاء قاعدة التنبيه.

  6. ضمن Condition، حدد Add condition.

  7. في الصفحة تحديد إشارة، أدخل Percentage CPU في مربع نص البحث، ثم حدد النسبة المئوية للمعالج من النتائج.

  8. في الصفحة تكوين منطق الإشارة، ضمن قيمة الحد أدخل قيمة منخفضة أولية لأغراض الاختبار، مثل 5. يمكنك العودة وتحديث هذه القيمة بمجرد التأكد من أن التنبيه يعمل كما هو متوقع. ثم حدد تم للعودة إلى صفحة إنشاء قاعدة التنبيه.

    Entering CPU percentage threshold value.

  9. في إجراءات، حدد إضافة مجموعة إجراءات، ثم+إنشاء مجموعة إجراءات.

    The create action group page with Basics tab open.

  10. في صفحة إنشاء مجموعة إجراءات:

    1. في علامة التبويب أساسيات، أدخل اسم مجموعة إجراءات والاسم المعروض.

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

      1. بالنسبة للعنصر مصدر دفتر التشغيل، حدد المستخدم.

      2. من القائمة المنسدلة الاشتراك، حدد اشتراكك.

      3. من القائمة المنسدلة حساب التنفيذ التلقائي، حدد حساب التنفيذ التلقائي الخاص بك.

      4. من القائمة المنسدلة دفتر التشغيل، حدد Stop-AzureVmInResponsetoVMAlert.

      5. لتمكين عنصر مخطط التنبيه العام، حدد نعم.

      6. حدد موافق للعودة إلى صفحة إنشاء مجموعة إجراءات.

        Configure runbook page with values.

    3. حدد تقييم + إنشاء ثم إنشاء للعودة إلى صفحة إنشاء قاعدة التنبيه.

  11. ضمن تفاصيل قاعدة التنبيه، لمربع نص اسم قاعدة التنبيه.

  12. حدد Create alert rule. يمكنك استخدام مجموعة الإجراءات في تنبيهات سجل النشاطوالتنبيهات القريبة من الوقت الحقيقي التي تقوم بإنشائها.

التحقق من الصحة

تأكد من تشغيل الجهاز الظاهري الخاص بك. انتقل إلى دفتر التشغيل Stop-AzureVmInResponsetoVMAlert وشاهد قائمة الوظائف الأخيرة ليتم تعبئتها. بمجرد ظهور وظيفة مكتملة، حدد الوظيفة وراجع الإخراج. تحقق أيضا لمعرفة ما إذا كان الجهاز الظاهري قد توقف.

Showing output from job.

عمليات إدارة أجهزة Azure الظاهرية الشائعة

يوفر Azure Automation برامج نصية لعمليات إدارة Azure VM الشائعة مثل إعادة تشغيل الجهاز الظاهري وإيقاف الجهاز الظاهري وحذف الجهاز الظاهري وتوسيع نطاق السيناريوهات وتقليصها في معرض Runbook. يمكن أيضا العثور على البرامج النصية في مستودع Azure Automation GitHub يمكنك أيضا استخدام هذه البرامج النصية كما هو مذكور في الخطوات المذكورة أعلاه.

عمليات إدارة جهاز Azure الظاهري التفاصيل
إيقاف-Azure-VM-عند التنبيه سيقوم دفتر التشغيل هذا بإيقاف Azure Resource Manager VM استجابة لمشغل تنبيه Azure.

الإدخال هو بيانات التنبيه مع المعلومات اللازمة لتحديد الجهاز الظاهري الذي يجب إيقافه.

يجب استدعاء دفتر التشغيل من تنبيه Azure عبر إخطار على الويب.

يجب إضافة أحدث إصدار من الوحدة النمطية Az إلى حساب التنفيذ التلقائي.

يجب تمكين الهوية المدارة ومنح وصول المساهم إلى حساب التنفيذ التلقائي.
إعادة تشغيل Azure-VM-عند التنبيه سيقوم دفتر التشغيل هذا بإيقاف Azure Resource Manager VM استجابة لمشغل تنبيه Azure.

الإدخال هو بيانات التنبيه مع المعلومات اللازمة لتحديد الجهاز الظاهري الذي يجب إيقافه.

يجب استدعاء دفتر التشغيل من تنبيه Azure عبر إخطار على الويب.

يجب إضافة أحدث إصدار من الوحدة النمطية Az إلى حساب التنفيذ التلقائي.

يجب تمكين الهوية المدارة ومنح وصول المساهم إلى حساب التنفيذ التلقائي.
Delete-Azure-VM-On-Alert سيقوم دفتر التشغيل هذا بإيقاف Azure Resource Manager VM استجابة لمشغل تنبيه Azure.

الإدخال هو بيانات التنبيه مع المعلومات اللازمة لتحديد الجهاز الظاهري الذي يجب إيقافه.

يجب استدعاء دفتر التشغيل من تنبيه Azure عبر إخطار على الويب.

يجب إضافة أحدث إصدار من الوحدة النمطية Az إلى حساب التنفيذ التلقائي.

يجب تمكين الهوية المدارة ومنح وصول المساهم إلى حساب التنفيذ التلقائي.
ScaleDown-Azure-VM-On-Alert سيقوم دفتر التشغيل هذا بإيقاف Azure Resource Manager VM استجابة لمشغل تنبيه Azure.

الإدخال هو بيانات التنبيه مع المعلومات اللازمة لتحديد الجهاز الظاهري الذي يجب إيقافه.

يجب استدعاء دفتر التشغيل من تنبيه Azure عبر إخطار على الويب.

يجب إضافة أحدث إصدار من الوحدة النمطية Az إلى حساب التنفيذ التلقائي.

يجب تمكين الهوية المدارة ومنح وصول المساهم إلى حساب التنفيذ التلقائي.
ScaleUp-Azure-VM-On-Alert سيقوم دفتر التشغيل هذا بإيقاف Azure Resource Manager VM استجابة لمشغل تنبيه Azure.

الإدخال هو بيانات التنبيه مع المعلومات اللازمة لتحديد الجهاز الظاهري الذي يجب إيقافه.

يجب استدعاء دفتر التشغيل من تنبيه Azure عبر إخطار على الويب.

يجب إضافة أحدث إصدار من الوحدة النمطية Az إلى حساب التنفيذ التلقائي.

يجب تمكين الهوية المدارة ومنح وصول المساهم إلى حساب التنفيذ التلقائي.

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