Aktivace sady Runbook Azure Automation pomocí výstrahy
Pomocí Azure monitor můžete monitorovat metriky a protokoly základní úrovně pro většinu služeb v Azure. Můžete volat Azure Automation Runbooky pomocí skupin akcí pro automatizaci úloh na základě výstrah. V tomto článku se dozvíte, jak nakonfigurovat a spustit Runbook pomocí výstrah.
Požadavky
- Účet Azure Automation, který má alespoň jednu spravovanou identitu přiřazenou uživatelem. Další informace najdete v tématu použití spravované identity přiřazené uživatelem pro účet Azure Automation.
- AZ modules:
Az.AccountsaAz.ComputeImported do účtu Automation. Další informace najdete v tématu Import AZ modules. - Virtuální počítač Azure.
- Azure AZ PowerShell Module nainstalovaný na vašem počítači. Informace o instalaci nebo upgradu najdete v tématu Postup instalace Azure AZ PowerShell Module.
- Obecná znalost se sadami Runbook Automation.
Typy výstrah
Runbooky Automation můžete používat se třemi typy výstrah:
- Běžná upozornění
- Upozornění protokolu aktivit
- Výstrahy metriky téměř v reálném čase
Poznámka
Běžné schéma výstrah standardizace prostředí spotřeby pro oznamování výstrah v Azure. V minulosti měly tři typy výstrah v Azure (metrika, protokol a protokol aktivit) vlastní e-mailové šablony, schémata webhooků atd. Další informace najdete v tématu běžné schéma výstrah.
Když výstraha zavolá Runbook, samotné volání je požadavek HTTP POST Webhooku. Tělo žádosti POST obsahuje objekt ve formátu JSON, který obsahuje užitečné vlastnosti, které se vztahují k výstraze. V následující tabulce jsou uvedeny odkazy na schéma datové části pro každý typ výstrahy:
| Výstrahy | Description | Schéma datové části |
|---|---|---|
| Běžná výstraha | Běžné schéma výstrah, které spojuje prostředí spotřeby pro oznamování výstrah v Azure ještě dnes. | Běžné schéma datové části výstrahy. |
| Upozornění protokolu aktivit | Pošle oznámení, pokud jakákoli nová událost v protokolu aktivit Azure odpovídá specifickým podmínkám. Například při Delete VM výskytu operace v myProductionResourceGroup nebo při zobrazení nové události Azure Service Health s aktivním stavem. |
Schéma datové části upozornění protokolu aktivit |
| Výstraha metriky téměř v reálném čase | Pokud jedna nebo více metrik na úrovni platformy splňuje zadané podmínky, pošle oznámení rychleji než výstrahy metriky. Například pokud je hodnota pro procesor% na virtuálním počítači větší než 90 a hodnota pro síť v je větší než 500 MB za posledních 5 minut. | Schéma datové části výstrah téměř v reálném čase |
Vzhledem k tomu, že se data poskytnutá jednotlivými typy výstrah liší, je každý typ výstrahy zpracováván jinak. V další části se dozvíte, jak vytvořit Runbook pro zpracování různých typů výstrah.
Přiřazení oprávnění spravovaným identitám
Přiřaďte oprávnění ke správné spravované identitě , aby mohl virtuální počítač zastavit. Sada Runbook může použít spravovanou identitu přiřazenou systémem účtu Automation nebo uživatelem přiřazenou identitu. Jsou k dispozici kroky pro přiřazení oprávnění ke každé identitě. Následující postup použijte PowerShell. Pokud dáváte přednost používání portálu, přečtěte si téma přiřazení rolí Azure pomocí Azure Portal.
přihlaste se k Azure interaktivně pomocí rutiny Připojení-AzAccount a postupujte podle pokynů.
# 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>Zadejte odpovídající hodnotu pro následující proměnné a potom spusťte skript.
$resourceGroup = "resourceGroup" $automationAccount = "AutomationAccount" $userAssignedManagedIdentity = "userAssignedManagedIdentity"Pomocí rutiny prostředí PowerShell New-AzRoleAssignment přiřaďte roli spravované identitě přiřazené systémem.
$SAMI = (Get-AzAutomationAccount -ResourceGroupName $resourceGroup -Name $automationAccount).Identity.PrincipalId New-AzRoleAssignment ` -ObjectId $SAMI ` -ResourceGroupName $resourceGroup ` -RoleDefinitionName "DevTest Labs User"Přiřazení role k spravované identitě přiřazené uživateli
$UAMI = (Get-AzUserAssignedIdentity -ResourceGroupName $resourceGroup -Name $userAssignedManagedIdentity) New-AzRoleAssignment ` -ObjectId $UAMI.PrincipalId ` -ResourceGroupName $resourceGroup ` -RoleDefinitionName "DevTest Labs User"Pro spravovanou identitu přiřazenou systémem zobrazte
ClientIda zaznamenejte hodnotu pro pozdější použití.$UAMI.ClientId
Vytvoření Runbooku pro zpracování výstrah
Chcete-li použít automatizaci s výstrahami, potřebujete sadu Runbook, která spravuje datovou část JSON výstrahy, která je předána do sady Runbook. Následující příklad Runbooku musí být volán z výstrahy Azure.
Jak je popsáno v předchozí části, každý typ výstrahy má jiné schéma. Skript převezme data Webhooku z výstrahy ve WebhookData vstupním parametru Runbooku. Potom skript vyhodnocuje datovou část JSON a určí, který typ výstrahy se používá.
V tomto příkladu se používá výstraha z virtuálního počítače Azure (VM). Načte data virtuálního počítače z datové části a pak tyto informace použije k zastavení virtuálního počítače. Připojení musí být nastaveno v účtu Automation, ve kterém je sada Runbook spuštěna. Pokud používáte výstrahy pro aktivaci runbooků, je důležité kontrolovat stav upozornění v aktivovaném Runbooku. Sada Runbook se spustí při každé změně stavu výstrahy. Výstrahy mají více stavů, přičemž tyto dva nejběžnější jsou aktivované a vyřešené. Zkontrolujte stav v logice Runbooku, abyste se ujistili, že se Runbook nespustí víckrát než jednou. V příkladu v tomto článku se dozvíte, jak vyhledat výstrahy se stavem aktivováno.
Sada Runbook používá spravovanou identitu přiřazenou systémem účtu Automation k ověřování pomocí Azure za účelem provedení akce správy s virtuálním počítačem. Sadu Runbook lze snadno upravit tak, aby používala uživatelsky přiřazenou spravovanou identitu.
Tento příklad slouží k vytvoření sady Runbook s názvem stop-AzureVmInResponsetoVMAlert. Skript PowerShellu můžete upravit a použít ho s mnoha různými prostředky.
Přihlaste se k Azure Portala přejděte k účtu Automation.
V části Automatizace procesu vyberte Runbooky.
Vyberte + vytvořit Runbook.
- Pojmenujte Runbook
Stop-AzureVmInResponsetoVMAlert. - V rozevíracím seznamu typ Runbooku vyberte PowerShell.
- Vyberte Vytvořit.
- Pojmenujte Runbook
V editoru runbooků vložte následující kód:
[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." }Pokud chcete, aby sada Runbook běžela se spravovanou identitou přiřazenou systémem, ponechte kód tak, jak je. Pokud dáváte přednost použití spravované identity přiřazené uživatelem, postupujte takto:
- Z řádku 78, odebrat
$AzureContext = (Connect-AzAccount -Identity).context, - Nahraďte parametrem
$AzureContext = (Connect-AzAccount -Identity -AccountId <ClientId>).contexta - Zadejte ID klienta, které jste získali dříve.
- Z řádku 78, odebrat
Po zobrazení výzvy vyberte Uložit, publikovat a pak Ano .
Zavřete stránku Runbooku a vraťte se na stránku účtu Automation .
Vytvoření výstrahy
Výstrahy používají skupiny akcí, což jsou kolekce akcí, které výstraha aktivovala. Sady Runbook jsou pouze jednou z mnoha akcí, které lze použít se skupinami akcí.
V účtu Automation v části monitorování vyberte výstrahy.
Vyberte + nové pravidlo výstrahy a otevřete stránku vytvořit pravidlo upozornění .
V části obor vyberte Upravit prostředek.
Na stránce Vyberte prostředek v rozevíracím seznamu filtrovat podle typu prostředku vyberte virtuální počítače.
Zaškrtněte políčko vedle virtuálních počítačů, které chcete monitorovat. Potom vyberte Hotovo a vraťte se na stránku vytvořit pravidlo upozornění .
V části Podmínka vyberte Přidat podmínku.
Na stránce vyberte signál zadejte
Percentage CPUdo textového pole hledání a pak z výsledků vyberte procento CPU .Na stránce Konfigurovat logiku signálu v oblasti prahová hodnota zadejte počáteční nízkou hodnotu pro účely testování, například
5. Jakmile ověříte, že výstraha funguje podle očekávání, můžete přejít zpět a aktualizovat tuto hodnotu. Potom vyberte Hotovo a vraťte se na stránku vytvořit pravidlo upozornění .
V části Akce vyberte Přidat skupiny akcí a potom + vytvořit skupinu akcí.
Na stránce vytvořit skupinu akcí :
Na kartě základy zadejte název skupiny akcí a zobrazované jméno.
Na kartě Akce v textovém poli název zadejte název. Potom v rozevíracím seznamu typ akce vyberte Automation Runbook a otevřete stránku Konfigurovat sadu Runbook .
Jako zdrojovou položku Runbooku vyberte uživatel.
V rozevíracím seznamu předplatné vyberte své předplatné.
V rozevíracím seznamu účet Automation vyberte svůj účet Automation.
V rozevíracím seznamu Runbooku vyberte stop-AzureVmInResponsetoVMAlert.
U položky Povolit schéma běžné výstrahy vyberte Ano.
Kliknutím na tlačítko OK se vraťte na stránku vytvořit skupinu akcí .
Vyberte zkontrolovat + vytvořit a pak vytvořit a vraťte se na stránku vytvořit pravidlo upozornění .
V části Podrobnosti pravidla výstrahy zadejte do textového pole název pravidla výstrahy .
Vyberte Vytvořit pravidlo upozornění. Skupinu akcí můžete použít v upozorněních protokolu aktivit a v téměř vytvořených výstrahách v reálném čase .
Ověření
Ujistěte se, že je váš virtuální počítač spuštěný. Přejděte na Runbook stop-AzureVmInResponsetoVMAlert a sledujte poslední seznam úloh , které se naplní. Po zobrazení dokončené úlohy vyberte úlohu a zkontrolujte výstup. Zkontrolujte také, jestli je váš virtuální počítač zastavený.
Další kroky
- Další způsoby, jak spustit sadu Runbook, najdete v tématu Spuštění Runbooku.
- Pokud chcete vytvořit upozornění protokolu aktivit, přečtěte si téma vytvoření výstrah protokoluaktivit.
- Informace o tom, jak vytvořit upozornění téměř v reálném čase, najdete v tématu Vytvoření pravidla výstrahy v Azure Portal.