Een waarschuwing gebruiken om een Azure Automation runbook te activeren
U kunt deze Azure Monitor voor het bewaken van metrische gegevens en logboeken op basisniveau voor de meeste services in Azure. U kunt runbooks Azure Automation met behulp van actiegroepen om taken te automatiseren op basis van waarschuwingen. In dit artikel wordt beschreven hoe u een runbook kunt configureren en uitvoeren met behulp van waarschuwingen.
Vereisten
- Een Azure Automation account met ten minste één door de gebruiker toegewezen beheerde identiteit. Zie Using a user-assigned managed identity for an Azure Automation account (Een doorde gebruiker toegewezen beheerde identiteit gebruiken voor een Azure Automation account) voor meer informatie.
- Az-modules:
Az.Accountsen geïmporteerd in hetAz.ComputeAutomation-account. Zie Az-modules importeren voor meer informatie. - Een virtuele Azure-machine.
- De Azure Az PowerShell-module die op uw computer is geïnstalleerd. Zie De Azure Az PowerShell-moduleinstalleren als u wilt installeren of upgraden.
- Een algemene bekendheid met Automation-runbooks.
Waarschuwingstypen
U kunt Automation-runbooks gebruiken met drie waarschuwingstypen:
- Algemene waarschuwingen
- Waarschuwingen voor activiteitenlogboeken
- Waarschuwingen voor bijna realtime metrische gegevens
Notitie
Het algemene waarschuwingsschema standaardiseer de verbruikservaring voor waarschuwingsmeldingen in Azure. In het verleden hadden de drie waarschuwingstypen in Azure (metrische gegevens, logboeken en activiteitenlogboek) hun eigen e-mailsjablonen, webhookschema's, enzovoort. Zie Common alert schema (Algemeen waarschuwingsschema) voor meer informatie.
Wanneer een waarschuwing een runbook aanroept, is de werkelijke aanroep een HTTP POST-aanvraag voor de webhook. De body van de POST-aanvraag bevat een JSON-geformatteerd object met nuttige eigenschappen die zijn gerelateerd aan de waarschuwing. De volgende tabel bevat koppelingen naar het payloadschema voor elk waarschuwingstype:
| Waarschuwing | Beschrijving | Nettoladingschema |
|---|---|---|
| Algemene waarschuwing | Het algemene waarschuwingsschema dat de verbruikservaring voor waarschuwingsmeldingen in Azure standaardiseren. | Algemeen payloadschema voor waarschuwingen. |
| Waarschuwing voor activiteitenlogboek | Hiermee wordt een melding verzendt wanneer een nieuwe gebeurtenis in het Azure-activiteitenlogboek overeenkomt met specifieke voorwaarden. Bijvoorbeeld wanneer een Delete VM bewerking plaatsvindt in myProductionResourceGroup of wanneer er een nieuwe Azure Service Health gebeurtenis met de status Actief wordt weergegeven. |
Payloadschema voor waarschuwingen voor activiteitenlogboek |
| Waarschuwing voor bijna realtime metrische gegevens | Verzendt een melding sneller dan waarschuwingen voor metrische gegevens wanneer een of meer metrische gegevens op platformniveau voldoen aan opgegeven voorwaarden. Bijvoorbeeld wanneer de waarde voor CPU%op een VM groter is dan 90 en de waarde voor Netwerk in groter is dan 500 MB voor de afgelopen 5 minuten. | Nettoladingschema voor waarschuwingen voor bijna realtime metrische gegevens |
Omdat de gegevens die door elk type waarschuwing worden verstrekt anders zijn, wordt elk waarschuwingstype anders verwerkt. In de volgende sectie leert u hoe u een runbook maakt voor het afhandelen van verschillende soorten waarschuwingen.
Machtigingen toewijzen aan beheerde identiteiten
Wijs machtigingen toe aan de juiste beheerde identiteit zodat deze een virtuele machine kan stoppen. Het runbook kan de door het systeem toegewezen beheerde identiteit van het Automation-account of een door de gebruiker toegewezen beheerde identiteit gebruiken. Er worden stappen gegeven voor het toewijzen van machtigingen aan elke identiteit. In de onderstaande stappen wordt PowerShell gebruikt. Als u liever de portal gebruikt, zie Azure-rollen toewijzen met behulp van de Azure Portal.
Meld u interactief aan bij Azure met de cmdlet Verbinding maken-AzAccount en volg de instructies.
# 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>Geef een geschikte waarde op voor de onderstaande variabelen en voer vervolgens het script uit.
$resourceGroup = "resourceGroup" $automationAccount = "AutomationAccount" $userAssignedManagedIdentity = "userAssignedManagedIdentity"Gebruik de PowerShell-cmdlet New-AzRoleAssignment om een rol toe te wijzen aan de door het systeem toegewezen beheerde identiteit.
$SAMI = (Get-AzAutomationAccount -ResourceGroupName $resourceGroup -Name $automationAccount).Identity.PrincipalId New-AzRoleAssignment ` -ObjectId $SAMI ` -ResourceGroupName $resourceGroup ` -RoleDefinitionName "DevTest Labs User"Wijs een rol toe aan een door de gebruiker toegewezen beheerde identiteit.
$UAMI = (Get-AzUserAssignedIdentity -ResourceGroupName $resourceGroup -Name $userAssignedManagedIdentity) New-AzRoleAssignment ` -ObjectId $UAMI.PrincipalId ` -ResourceGroupName $resourceGroup ` -RoleDefinitionName "DevTest Labs User"Voor de door het systeem toegewezen beheerde identiteit moet u de waarde voor
ClientIdlater gebruik tonen en registreren.$UAMI.ClientId
Een runbook maken voor het afhandelen van waarschuwingen
Als u Automation wilt gebruiken met waarschuwingen, hebt u een runbook nodig dat de JSON-nettolading van de waarschuwing beheert die aan het runbook wordt doorgegeven. Het volgende voorbeeldrunbook moet worden aangeroepen vanuit een Azure-waarschuwing.
Zoals beschreven in de vorige sectie, heeft elk type waarschuwing een ander schema. Het script neemt de webhookgegevens van een waarschuwing in de WebhookData invoerparameter van het runbook. Vervolgens evalueert het script de JSON-nettolading om te bepalen welk waarschuwingstype wordt gebruikt.
In dit voorbeeld wordt een waarschuwing van een virtuele Azure-machine (VM) gebruikt. De VM-gegevens worden opgehaald uit de nettolading en vervolgens wordt die informatie gebruikt om de VM te stoppen. De verbinding moet worden ingesteld in het Automation-account waar het runbook wordt uitgevoerd. Wanneer u waarschuwingen gebruikt om runbooks te activeren, is het belangrijk om de status van de waarschuwing te controleren in het runbook dat wordt geactiveerd. Het runbook wordt telkens wanneer de status van de waarschuwing verandert, triggers. Waarschuwingen hebben meerdere -staten. De twee meest voorkomende zijn Geactiveerd en Opgelost. Controleer de status van uw runbooklogica om ervoor te zorgen dat het runbook niet meer dan één keer wordt uitgevoerd. In het voorbeeld in dit artikel ziet u hoe u kunt zoeken naar waarschuwingen met de status Alleen geactiveerd.
Het runbook maakt gebruik van de door het Automation-accountsysteem toegewezen beheerde identiteit om te verifiëren bij Azure om de beheeractie op de VM uit te voeren. Het runbook kan eenvoudig worden gewijzigd om een door de gebruiker toegewezen beheerde identiteit te gebruiken.
Gebruik dit voorbeeld om een runbook met de naam Stop-AzureVmInResponsetoVMAlert te maken. U kunt het PowerShell-script wijzigen en dit gebruiken met veel verschillende resources.
Meld u aan bij Azure Portalen navigeer naar uw Automation-account.
Selecteer onder Procesautomatisering de optie Runbooks.
Selecteer + Een runbook maken.
- Noem het runbook
Stop-AzureVmInResponsetoVMAlert. - Selecteer PowerShell in de vervolgkeuzelijst Runbooktype.
- Selecteer Maken.
- Noem het runbook
Plak de volgende code in de runbookeditor:
[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." }Als u wilt dat het runbook wordt uitgevoerd met de door het systeem toegewezen beheerde identiteit, laat u de code zoals deze is. Als u liever een door de gebruiker toegewezen beheerde identiteit gebruikt, gaat u als volgende te werk:
- Verwijder vanaf regel 78,
$AzureContext = (Connect-AzAccount -Identity).context, - Vervang deze door
$AzureContext = (Connect-AzAccount -Identity -AccountId <ClientId>).context, en - Voer de client-id in die u eerder hebt verkregen.
- Verwijder vanaf regel 78,
Selecteer Opslaan, Publiceren en vervolgens Ja wanneer u hier om wordt gevraagd.
Sluit de pagina Runbook om terug te keren naar de pagina Automation-account.
De waarschuwing maken
Waarschuwingen maken gebruik van actiegroepen. Dit zijn verzamelingen acties die door de waarschuwing worden geactiveerd. Runbooks zijn slechts een van de vele acties die u met actiegroepen kunt gebruiken.
Selecteer in uw Automation-account onder Bewaking de optie Waarschuwingen.
Selecteer + Nieuwe waarschuwingsregel om de pagina Waarschuwingsregel maken te openen.
Selecteer onder Bereik de optie Resource bewerken.
Selecteer op de pagina Een resource selecteren in de vervolgkeuzelijst Filteren op resourcetype de optie Virtuele machines.
Vink het selectievakje aan naast de virtuele machine(s) die u wilt bewaken. Selecteer vervolgens Done om terug te keren naar de pagina Waarschuwingsregel maken.
Selecteer onder Voorwaarde de optie Voorwaarde toevoegen.
Voer op de pagina Een signaal selecteren in het
Percentage CPUzoektekstvak in en selecteer cpu-percentage in de resultaten.Voer op de pagina Signaallogica configureren onder Drempelwaarde een initiële lage waarde in voor testdoeleinden, zoals
5. U kunt teruggaan en deze waarde bijwerken zodra u hebt bevestigd dat de waarschuwing werkt zoals verwacht. Selecteer vervolgens Done om terug te keren naar de pagina Waarschuwingsregel maken.
Selecteer onder Acties de optie Actiegroepen toevoegen en vervolgens +Actiegroep maken.
Op de pagina Actiegroep maken:
Voer op het tabblad Basisinformatie de naam van een actiegroep en de Weergavenaam in.
Voer op het tabblad Acties in het tekstvak Naam een naam in. Selecteer vervolgens in de vervolgkeuzelijst Actietype de optie Automation-runbook om de pagina Runbook configureren te openen.
Selecteer voor het runbookbronitem De optie Gebruiker.
Selecteer uw abonnement in de vervolgkeuzelijst Abonnement.
Selecteer uw Automation-account in de vervolgkeuzelijst Automation-account.
Selecteer stop-AzureVmInResponsetoVMAlert in de vervolgkeuzelijst Runbook.
Selecteer Ja voor het item Het algemene waarschuwingsschema inschakelen.
Selecteer OK om terug te keren naar de pagina Actiegroep maken.
Selecteer Beoordelen en maken en vervolgens Maken om terug te keren naar de pagina Waarschuwingsregel maken.
Onder Details waarschuwingsregel voor het tekstvak Naam waarschuwingsregel.
Selecteer Waarschuwingsregel maken. U kunt de actiegroep gebruiken in de waarschuwingen voor activiteitenlogboek en bijna realtime waarschuwingen die u maakt.
Verificatie
Zorg ervoor dat uw VM wordt uitgevoerd. Navigeer naar het runbook Stop-AzureVmInResponsetoVMAlert en kijk of de lijst Recente taken is ingevuld. Zodra een voltooide taak wordt weergegeven, selecteert u de taak en controleert u de uitvoer. Controleer ook of uw VM is gestopt.
Volgende stappen
- Zie Een runbook starten voor verschillende manieren om een runbook te starten.
- Zie Waarschuwingen voor activiteitenlogboek maken voor informatie over het maken van een waarschuwing voor activiteitenlogboek.
- Zie Een waarschuwingsregel maken in de Azure Portal voor meer informatie over het maken van eenAzure Portal.