Použití upozornění k aktivaci runbooku Azure Automation
Azure Monitor můžete použít k monitorování metrik a protokolů základní úrovně pro většinu služeb v Azure. Runbooky Azure Automation můžete volat pomocí skupin akcí k automatizaci úloh na základě upozornění. V tomto článku se dozvíte, jak nakonfigurovat a spustit runbook pomocí upozornění.
Požadavky
- Účet Azure Automation s alespoň jednou spravovanou identitou přiřazenou uživatelem. Další informace najdete v tématu Použití spravované identity přiřazené uživatelem pro účet Azure Automation.
- Moduly Az:
Az.Accounts
aAz.Compute
importovány do účtu Automation. Další informace najdete v tématu Import modulů Az. - Virtuální počítač Azure.
- Modul Azure Az PowerShell nainstalovaný na vašem počítači. Pokud chcete nainstalovat nebo upgradovat, přečtěte si, jak nainstalovat modul Azure Az PowerShell.
- Obecná znalost runbooků Automation
Typy výstrah
Runbooky automation můžete používat se třemi typy upozornění:
- Běžná upozornění
- Upozornění protokolu aktivit
- Upozornění metrik téměř v reálném čase
Poznámka:
Běžné schéma upozornění standardizuje prostředí spotřeby pro oznámení výstrah v Azure. V minulosti měly tři typy upozornění 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 upozornění.
Když výstraha volá runbook, skutečné volání je požadavek HTTP POST na webhook. Text požadavku POST obsahuje objekt ve formátu JSON, který má užitečné vlastnosti související s výstrahou. Následující tabulka uvádí odkazy na schéma datové části pro každý typ výstrahy:
Výstrahy | Popis | Schéma datové části |
---|---|---|
Běžná výstraha | Běžné schéma upozornění, které standardizuje prostředí spotřeby pro oznámení výstrah v Azure dnes. | Schéma běžné datové části upozornění |
Upozornění protokolu aktivit | Odešle oznámení, když jakákoli nová událost v protokolu aktivit Azure odpovídá konkrétním podmínkám. Například když Delete VM dojde k operaci v myProductionResourceGroup nebo když se zobrazí nová událost služby Azure Service Health s aktivním stavem. |
Schéma datové části upozornění protokolu aktivit |
Upozornění metrik téměř v reálném čase | Odešle oznámení rychleji než upozornění na metriky, když jedna nebo více metrik na úrovni platformy splňuje zadané podmínky. Pokud je například hodnota pro využití procesoru na virtuálním počítači větší než 90 a hodnota sítě In je za posledních 5 minut větší než 500 MB. | Schéma datové části upozornění na metriku téměř v reálném čase |
Vzhledem k tomu, že data poskytovaná jednotlivými typy výstrah se liší, každý typ výstrahy se zpracovává jinak. V další části se dozvíte, jak vytvořit runbook pro zpracování různých typů upozornění.
Přiřazení oprávnění ke spravovaným identitám
Přiřaďte oprávnění příslušné spravované identitě , aby mohla zastavit virtuální počítač. Runbook může používat spravovanou identitu přiřazenou systémem účtu Automation nebo spravovanou identitu přiřazenou uživatelem. Kroky jsou k dispozici 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í webu Azure Portal.
Přihlaste se k Azure interaktivně pomocí rutiny Connect-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íže uvedené proměnné a spusťte skript.
$resourceGroup = "resourceGroup" $automationAccount = "AutomationAccount" $userAssignedManagedIdentity = "userAssignedManagedIdentity"
Pomocí rutiny PowerShellu 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řaďte roli spravované identitě přiřazené uživatelem.
$UAMI = (Get-AzUserAssignedIdentity -ResourceGroupName $resourceGroup -Name $userAssignedManagedIdentity) New-AzRoleAssignment ` -ObjectId $UAMI.PrincipalId ` -ResourceGroupName $resourceGroup ` -RoleDefinitionName "DevTest Labs User"
U spravované identity přiřazené systémem zobrazte
ClientId
a poznamenejte si hodnotu pro pozdější použití.$UAMI.ClientId
Vytvoření runbooku pro zpracování výstrah
Pokud chcete službu Automation používat s upozorněními, potřebujete runbook, který spravuje datovou část JSON upozornění, která se předá runbooku. Následující příklad runbooku musí být volána z upozornění Azure.
Jak je popsáno v předchozí části, každý typ výstrahy má jiné schéma. Skript vezme data webhooku z výstrahy ve vstupním parametru runbooku WebhookData
. Pak skript vyhodnotí datovou část JSON a určí, jaký typ výstrahy se používá.
Tento příklad využívá upozornění z virtuálního počítače Azure. Extrahuje data virtuálního počítače z datové části, konkrétně z cílového prostředku aktivovaného upozornění, a pak pomocí těchto informací virtuální počítač zastaví. Připojení musí být nastavené v účtu Automation, ve kterém je runbook spuštěný. Při použití upozornění k aktivaci runbooků je důležité zkontrolovat stav upozornění v runbooku, který se aktivuje. Runbook se aktivuje při každé změně stavu výstrahy. Výstrahy mají více stavů, přičemž dva nejběžnější jsou Aktivované a Vyřešené. Zkontrolujte stav v logice runbooku, abyste měli jistotu, že runbook neběží více než jednou. Příklad v tomto článku ukazuje, jak vyhledat výstrahy s aktivovaným stavem.
Runbook používá spravovanou identitu přiřazenou systémem účtu Automation k ověření v Azure k provedení akce správy na virtuálním počítači. Runbook je možné snadno upravit tak, aby používal spravovanou identitu přiřazenou uživatelem.
Poznámka:
Doporučujeme používat přístup k veřejné síti, protože není možné použít upozornění Azure (metrika, protokol a protokol aktivit) k aktivaci webhooku Automation, když účet Automation používá privátní propojení a je nakonfigurovaný s veřejnou možností přístupu nastavenou na Zakázat.
Tento příklad použijte k vytvoření runbooku 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 webu Azure Portal a přejděte ke svému účtu Automation.
V části Automatizace procesů vyberte Runbooky.
Vyberte + Vytvořit runbook.
- Pojmenujte runbook
Stop-AzureVmInResponsetoVMAlert
. - V rozevíracím seznamu typu runbooku vyberte PowerShell.
- Vyberte Vytvořit.
- Pojmenujte runbook
V editoru runbooku 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 runbook běžel se spravovanou identitou přiřazenou systémem, nechejte kód tak, jak je. Pokud chcete použít spravovanou identitu přiřazenou uživatelem, pak:
- Z řádku 78 odeberte
$AzureContext = (Connect-AzAccount -Identity).context
, - Nahraďte ho a
$AzureContext = (Connect-AzAccount -Identity -AccountId <ClientId>).context
- Zadejte ID klienta, které jste získali dříve.
- Z řádku 78 odeberte
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í aktivovaných výstrahou. Runbooky jsou jen jednou z mnoha akcí, které můžete použít se skupinami akcí.
V účtu Automation v části Monitorování vyberte Výstrahy.
Výběrem + Nové pravidlo upozornění otevřete stránku Vytvořit pravidlo upozornění.
V části Obor vyberte Upravit prostředek.
Na stránce Vybrat 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 se výběrem možnosti Hotovo vraťte na stránku Vytvořit pravidlo upozornění.
V části Podmínka vyberte Přidat podmínku.
Na stránce Vybrat signál zadejte
Percentage CPU
do vyhledávacího textového pole a z výsledků vyberte Procento procesoru.Na stránce Konfigurovat logiku signálu zadejte v části Prahová hodnota počáteční nízkou hodnotu pro účely testování, například
5
. Jakmile potvrdíte, že upozornění funguje podle očekávání, můžete se vrátit a tuto hodnotu aktualizovat. Potom se výběrem možnosti Hotovo vraťte na stránku Vytvořit pravidlo upozornění.V části Akce vyberte Přidat skupiny akcí a pak +Vytvořit skupinu akcí.
Na stránce Vytvořit skupinu akcí:
Na kartě Základy zadejte název skupiny akcí a zobrazovaný název.
Na kartě Akce zadejte do textového pole Název název název. Potom v rozevíracím seznamu Typ akce vyberte Automation Runbook a otevřete stránku Konfigurovat runbook.
Jako zdrojová položka runbooku vyberte Uživatel.
V rozevíracím seznamu Předplatné vyberte své předplatné.
V rozevíracím seznamu účtu Automation vyberte svůj účet Automation.
V rozevíracím seznamu Runbook vyberte Stop-AzureVmInResponsetoVMAlert.
U položky Povolit společné schéma upozornění vyberte Ano.
Kliknutím na tlačítko OK se vrátíte na stránku Vytvořit skupinu akcí.
Vyberte Zkontrolovat a vytvořit a pak se vraťte na stránku Vytvořit pravidlo upozornění.
V části Podrobnosti o pravidle upozornění zadejte textové pole Název pravidla upozornění.
Vyberte Vytvořit pravidlo upozornění. Skupinu akcí můžete použít v upozorněních protokolu aktivit a téměř v reálném čase, která vytvoříte.
Ověření
Ujistěte se, že je váš virtuální počítač spuštěný. Přejděte do runbooku Stop-AzureVmInResponsetoVMAlert a sledujte seznam posledních úloh , který se má naplnit. Po zobrazení dokončené úlohy vyberte úlohu a zkontrolujte výstup. Zkontrolujte také, jestli se virtuální počítač zastavil.
Běžné operace správy virtuálních počítačů Azure
Azure Automation poskytuje skripty pro běžné operace správy virtuálních počítačů Azure, jako je restartování virtuálního počítače, zastavení virtuálního počítače, odstranění virtuálního počítače, vertikální navýšení nebo snížení kapacity v galerii runbooků. Skripty najdete také v úložišti Azure Automation na GitHubu . Tyto skripty můžete také použít, jak je uvedeno v předchozích krocích.
Operace správy virtuálních počítačů Azure | Podrobnosti |
---|---|
Zastavení upozornění Azure-VM-On-Alert | Tento runbook zastaví virtuální počítač Azure Resource Manageru v reakci na trigger upozornění Azure. Cílovým prostředkem aktivovaného upozornění musí být virtuální počítač, který se má zastavit. To se předává ve vstupním parametru z datové části aktivovaného upozornění. Runbook se musí volat z upozornění Azure prostřednictvím webhooku. Do účtu Automation by se měla přidat nejnovější verze modulu Az. Spravovaná identita by měla být povolená a přístup přispěvatele k účtu Automation by měl být udělený. |
Restartování azure-VM-on-Alert | Tento runbook zastaví virtuální počítač Azure Resource Manageru v reakci na trigger upozornění Azure. Cílovým prostředkem aktivovaného upozornění musí být virtuální počítač, který se má restartovat. To se předává ve vstupním parametru z datové části aktivovaného upozornění. Runbook se musí volat z upozornění Azure prostřednictvím webhooku. Do účtu Automation by se měla přidat nejnovější verze modulu Az. Spravovaná identita by měla být povolená a přístup přispěvatele k účtu Automation by měl být udělený. |
Odstranění upozornění azure-VM-On-Alert | Tento runbook zastaví virtuální počítač Azure Resource Manageru v reakci na trigger upozornění Azure. Cílovým prostředkem aktivovaného upozornění musí být virtuální počítač, který chcete odstranit. To se předává ve vstupním parametru z datové části aktivovaného upozornění. Runbook se musí volat z upozornění Azure prostřednictvím webhooku. Do účtu Automation by se měla přidat nejnovější verze modulu Az. Spravovaná identita by měla být povolená a přístup přispěvatele k účtu Automation by měl být udělený. |
ScaleDown-Azure-VM-On-Alert | Tento runbook zastaví virtuální počítač Azure Resource Manageru v reakci na trigger upozornění Azure. Cílovým prostředkem aktivovaného upozornění musí být virtuální počítač, který se má vertikálně snížit. To se předává ve vstupním parametru z datové části aktivovaného upozornění. Runbook se musí volat z upozornění Azure prostřednictvím webhooku. Do účtu Automation by se měla přidat nejnovější verze modulu Az. Spravovaná identita by měla být povolená a přístup přispěvatele k účtu Automation by měl být udělený. |
Upozornění na škálování na virtuální počítač Azure | Tento runbook zastaví virtuální počítač Azure Resource Manageru v reakci na trigger upozornění Azure. Cílovým prostředkem aktivovaného upozornění musí být virtuální počítač, který se má vertikálně navýšit. To se předává ve vstupním parametru z datové části aktivovaného upozornění. Runbook se musí volat z upozornění Azure prostřednictvím webhooku. Do účtu Automation by se měla přidat nejnovější verze modulu Az. Spravovaná identita by měla být povolená a přístup přispěvatele k účtu Automation by měl být udělený. |
Další kroky
- Přečtěte si další informace o tom, jak vytvořit rozpočet a přidružit ho ke runbooku Automation.
- Seznamte se s různými způsoby spuštění runbooku, viz Spuštění runbooku.
- Vytvořte upozornění protokolu aktivit, viz Vytvoření upozornění protokolu aktivit.
- Zjistěte, jak vytvořit upozornění téměř v reálném čase, viz Vytvoření pravidla upozornění na webu Azure Portal.