Azure Automation-runbook aktiválása riasztással
Az Azure Monitor használatával monitorozhat alapszintű metrikákat és naplókat az Azure legtöbb szolgáltatásához. Az Azure Automation-runbookokat műveletcsoportok használatával hívhatja meg a feladatok riasztások alapján történő automatizálásához. Ez a cikk bemutatja, hogyan konfigurálhat és futtathat runbookokat riasztások használatával.
Előfeltételek
- An Azure Automation account with at least one user-assigned managed identity. További információ: Felhasználó által hozzárendelt felügyelt identitás használata Azure Automation-fiókhoz.
- Az modules:
Az.Accounts
andAz.Compute
imported into the Automation account. For more information, see Import Az modules. - Egy Azure-beli virtuális gép.
- A számítógépre telepített Azure Az PowerShell-modul . A telepítéssel vagy frissítéssel kapcsolatban tekintse meg az Azure Az PowerShell-modul telepítését ismertető témakört.
- Az Automation runbookok általános ismerete.
Riasztástípusok
Az automation runbookokat három riasztástípussal használhatja:
- Gyakori riasztások
- Tevékenységnapló-alapú riasztások
- Közel valós idejű metrikariasztások
Megjegyzés:
A gyakori riasztási séma szabványosítja a riasztási értesítések használati élményét az Azure-ban. Az Azure három riasztástípusa (metrika, napló és tevékenységnapló) korábban saját e-mail sablonokkal, webhooksémákkal stb. rendelkezik. További információ: Gyakori riasztási séma.
Amikor egy riasztás meghív egy runbookot, a tényleges hívás egy HTTP POST-kérés a webhook felé. A POST-kérelem törzse egy JSON formátumú objektumot tartalmaz, amely a riasztáshoz kapcsolódó hasznos tulajdonságokkal rendelkezik. Az alábbi táblázat az egyes riasztástípusok hasznos adatséma hivatkozásait sorolja fel:
Alert | Leírás | Hasznos adatséma |
---|---|---|
Gyakori riasztás | A riasztási séma, amely szabványosítja a riasztásértesítések használati élményét az Azure-ban. | Gyakori riasztási hasznos adatséma. |
Tevékenységnapló-riasztás | Értesítést küld, ha az Azure-tevékenységnaplóban szereplő új események adott feltételeknek összhangban vannak. Például amikor egy Delete VM művelet a myProductionResourceGroup-ban történik, vagy amikor megjelenik egy új, aktív állapotú Azure Service Health-esemény. |
Tevékenységnapló-riasztás hasznos adatséma |
Közel valós idejű metrikariasztás | Gyorsabban küld értesítést, mint a metrikariasztások, ha egy vagy több platformszintű metrikák megfelelnek a megadott feltételeknek. Ha például egy virtuális gépen a PROCESSZOR %-ának értéke nagyobb, mint 90, és a Network In értéke 500 MB-nál nagyobb az elmúlt 5 percben. | Közel valós idejű metrikariasztás hasznos adatséma |
Mivel az egyes riasztástípusok által biztosított adatok eltérőek, a rendszer minden riasztástípust másként kezel. A következő szakaszban megtudhatja, hogyan hozhat létre runbookot a különböző típusú riasztások kezeléséhez.
Engedélyek hozzárendelése felügyelt identitásokhoz
Rendeljen engedélyeket a megfelelő felügyelt identitáshoz , hogy lehetővé tegye a virtuális gép leállítását. A runbook használhatja az Automation-fiók rendszer által hozzárendelt felügyelt identitását vagy egy felhasználó által hozzárendelt felügyelt identitást. A lépések meg vannak adva az egyes identitásokhoz való engedélyek hozzárendeléséhez. Az alábbi lépések a PowerShellt használják. Ha inkább a portált szeretné használni, olvassa el az Azure-szerepkörök hozzárendelése az Azure Portal használatával című témakört.
Jelentkezzen be interaktívan az Azure-ba az Csatlakozás-AzAccount parancsmaggal, és kövesse az utasításokat.
# 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>
Adjon meg egy megfelelő értéket az alábbi változókhoz, majd hajtsa végre a szkriptet.
$resourceGroup = "resourceGroup" $automationAccount = "AutomationAccount" $userAssignedManagedIdentity = "userAssignedManagedIdentity"
A New-AzRoleAssignment PowerShell-parancsmaggal szerepkört rendelhet a rendszer által hozzárendelt felügyelt identitáshoz.
$SAMI = (Get-AzAutomationAccount -ResourceGroupName $resourceGroup -Name $automationAccount).Identity.PrincipalId New-AzRoleAssignment ` -ObjectId $SAMI ` -ResourceGroupName $resourceGroup ` -RoleDefinitionName "DevTest Labs User"
Szerepkör hozzárendelése felhasználó által hozzárendelt felügyelt identitáshoz.
$UAMI = (Get-AzUserAssignedIdentity -ResourceGroupName $resourceGroup -Name $userAssignedManagedIdentity) New-AzRoleAssignment ` -ObjectId $UAMI.PrincipalId ` -ResourceGroupName $resourceGroup ` -RoleDefinitionName "DevTest Labs User"
A rendszer által hozzárendelt felügyelt identitás esetében jelenítse meg
ClientId
és rögzítse a későbbi használat értékét.$UAMI.ClientId
Runbook létrehozása a riasztások kezeléséhez
Az Automation riasztásokkal való használatához olyan runbookra van szükség, amely kezeli a runbooknak átadott JSON-hasznos adatokat. Az alábbi példa runbookot azure-riasztásból kell meghívni.
Az előző szakaszban leírtak szerint minden riasztástípus más sémával rendelkezik. A szkript egy riasztásból veszi át a webhook adatait a WebhookData
runbook bemeneti paraméterében. Ezután a szkript kiértékeli a JSON hasznos adatait annak meghatározásához, hogy melyik riasztástípust használja.
Ez a példa egy Azure-beli virtuális gép (VM) riasztását használja. Lekéri a virtuálisgép-adatokat a hasznos adatokból, majd ezeket az információkat felhasználva állítja le a virtuális gépet. A kapcsolatot abban az Automation-fiókban kell beállítani, ahol a runbook fut. Ha riasztásokat használ a runbookok aktiválásához, fontos ellenőrizni az aktivált runbook riasztási állapotát. A runbook minden alkalommal aktiválódik, amikor a riasztás állapota megváltozik. A riasztások több állapottal rendelkeznek, amelyek közül a két leggyakoribb az aktiválás és a feloldás. Ellenőrizze, hogy van-e állapot a runbook logikájában, hogy a runbook ne fusson többször. A cikkben szereplő példa bemutatja, hogyan kereshet csak aktivált állapotú riasztásokat.
A runbook az Automation-fiók rendszer által hozzárendelt felügyelt identitásával hitelesíti az Azure-t a virtuális gép felügyeleti műveletének végrehajtásához. A runbook könnyen módosítható úgy, hogy felhasználó által hozzárendelt felügyelt identitást használjon.
Megjegyzés:
Javasoljuk, hogy nyilvános hálózati hozzáférést használjon, mivel nem használható Azure-riasztás (metrikák, naplók és tevékenységnaplók) az Automation-webhookok aktiválásához, ha az Automation-fiók privát hivatkozásokat használ, és a nyilvános hozzáférés beállítása letiltásra van konfigurálva.
Ebben a példában létrehozhat egy Stop-AzureVmInResponsetoVMAlert nevű runbookot. Módosíthatja a PowerShell-szkriptet, és számos különböző erőforrással használhatja.
Jelentkezzen be az Azure Portalra, és lépjen az Automation-fiókjához.
A Folyamatautomatizálás területen válassza a Runbookok lehetőséget.
Válassza a + Runbook létrehozása lehetőséget.
- Nevezze el a runbookot
Stop-AzureVmInResponsetoVMAlert
. - A Runbook típus legördülő listájában válassza a PowerShellt.
- Select Create.
- Nevezze el a runbookot
A runbook-szerkesztőben illessze be a következő kódot:
[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." }
Ha azt szeretné, hogy a runbook a rendszer által hozzárendelt felügyelt identitással fusson, hagyja meg a kódot. Ha inkább felhasználó által hozzárendelt felügyelt identitást szeretne használni, akkor:
- A 78. sorból távolítsa el
$AzureContext = (Connect-AzAccount -Identity).context
a - Cserélje le a
$AzureContext = (Connect-AzAccount -Identity -AccountId <ClientId>).context
- Adja meg a korábban beszerzett ügyfél-azonosítót.
- A 78. sorból távolítsa el
Ha a rendszer kéri, válassza a Mentés, a Közzététel , majd az Igen lehetőséget.
Zárja be a Runbook lapot az Automation-fiók lapjára való visszatéréshez.
A riasztás létrehozása
A riasztások műveletcsoportokat használnak, amelyek a riasztás által aktivált műveletek gyűjteményei. A runbookok csak egyike a műveletcsoportokkal használható műveleteknek.
Az Automation-fiók Figyelés területén válassza a Riasztások lehetőséget.
Válassza a + Új riasztási szabály lehetőséget a Riasztási szabály létrehozása lap megnyitásához.
A Hatókör csoportban válassza az Erőforrás szerkesztése lehetőséget.
Az Erőforrás kiválasztása lap Szűrő erőforrástípus szerinti legördülő listájában válassza a Virtuális gépek lehetőséget.
Jelölje be a monitorozni kívánt virtuális gép(ek) melletti jelölőnégyzetet. Ezután válassza a Kész lehetőséget a riasztási szabály létrehozása lapra való visszatéréshez.
A Feltétel csoportban válassza a Feltétel hozzáadása lehetőséget.
A Jel kiválasztása lapon írja be
Percentage CPU
a keresőmezőbe, majd válassza ki a Százalékos PROCESSZOR elemet az eredmények közül.A Jellogika konfigurálása lapon a Küszöbérték érték alatt adjon meg egy kezdeti alacsony értéket tesztelési célokra, például
5
. Ha megerősítette, hogy a riasztás a várt módon működik, visszatérhet, és frissítheti ezt az értéket. Ezután válassza a Kész lehetőséget a riasztási szabály létrehozása lapra való visszatéréshez.A Műveletek csoportban válassza a Műveletcsoportok hozzáadása, majd a +Műveletcsoport létrehozása lehetőséget.
A Műveletcsoport létrehozása lapon:
Az Alapszintű beállítások lapon adja meg a Műveletcsoport nevét és a Megjelenítendő nevet.
A Műveletek lap Név szövegmezőjében adjon meg egy nevet. Ezután a Művelettípus legördülő listában válassza az Automation Runbook lehetőséget a Runbook konfigurálása lap megnyitásához.
A Runbook forráseleméhez válassza a Felhasználó lehetőséget.
Az Előfizetés legördülő listában válassza ki az előfizetést.
Az Automation-fiók legördülő listájában válassza ki az Automation-fiókját.
A Runbook legördülő listájában válassza a Stop-AzureVmInResponsetoVMAlert lehetőséget.
A gyakori riasztási sémaelem engedélyezéséhez válassza az Igen lehetőséget.
Kattintson az OK gombra a Műveletcsoport létrehozása lapra való visszatéréshez.
Válassza a Véleményezés + létrehozás , majd a Létrehozás lehetőséget a Riasztási szabály létrehozása lapra való visszatéréshez.
A Riasztási szabály részletei csoportban adja meg a Riasztási szabály neve szövegmezőt.
Válassza a Riasztási szabály létrehozása lehetőséget. A műveletcsoportot a tevékenységnapló-riasztásokban és a közel valós idejű riasztásokban használhatja.
Ellenőrzés
Győződjön meg arról, hogy a virtuális gép fut. Lépjen a Stop-AzureVmInResponsetoVMAlert runbookra, és figyelje meg, hogy a Legutóbbi feladatok lista ki legyen töltve. Ha megjelenik egy befejezett feladat, jelölje ki a feladatot, és tekintse át a kimenetet. Ellenőrizze azt is, hogy leállt-e a virtuális gép.
Gyakori Azure-beli virtuálisgép-kezelési műveletek
Az Azure Automation olyan gyakori Azure-beli virtuálisgép-felügyeleti műveletekhez biztosít szkripteket, mint például a virtuális gép újraindítása, a virtuális gép leállítása, a virtuális gép törlése, a Runbook-katalógusban történő vertikális fel- és leskálázás. A szkriptek az Azure Automation GitHub-adattárban is megtalálhatók. Ezeket a szkripteket a fenti lépésekben leírtak szerint is használhatja.
Azure-beli virtuális gépek felügyeleti műveletei | Részletek |
---|---|
Azure-beli virtuális gép riasztásának leállítása | Ez a runbook leállítja az Azure Resource Manager-alapú virtuális gépet egy Azure-riasztási eseményindítóra válaszul. A bemenet olyan riasztási adatok, amelyek a leállítani kívánt virtuális gép azonosításához szükségesek. A runbookot egy Azure-riasztásból kell meghívni egy webhookon keresztül. Az Az modul legújabb verzióját hozzá kell adni az automation-fiókhoz. Engedélyezni kell a felügyelt identitást, és hozzá kell férni az automation-fiókhoz. |
Restart-Azure-VM-On-Alert | Ez a runbook leállítja az Azure Resource Manager-alapú virtuális gépet egy Azure-riasztási eseményindítóra válaszul. A bemenet olyan riasztási adatok, amelyek a leállítani kívánt virtuális gép azonosításához szükségesek. A runbookot egy Azure-riasztásból kell meghívni egy webhookon keresztül. Az Az modul legújabb verzióját hozzá kell adni az automation-fiókhoz. Engedélyezni kell a felügyelt identitást, és hozzá kell férni az automation-fiókhoz. |
Delete-Azure-VM on-Alert | Ez a runbook leállítja az Azure Resource Manager-alapú virtuális gépet egy Azure-riasztási eseményindítóra válaszul. A bemenet olyan riasztási adatok, amelyek a leállítani kívánt virtuális gép azonosításához szükségesek. A runbookot egy Azure-riasztásból kell meghívni egy webhookon keresztül. Az Az modul legújabb verzióját hozzá kell adni az automation-fiókhoz. Engedélyezni kell a felügyelt identitást, és hozzá kell férni az automation-fiókhoz. |
ScaleDown-Azure-VM-on-Alert | Ez a runbook leállítja az Azure Resource Manager-alapú virtuális gépet egy Azure-riasztási eseményindítóra válaszul. A bemenet olyan riasztási adatok, amelyek a leállítani kívánt virtuális gép azonosításához szükségesek. A runbookot egy Azure-riasztásból kell meghívni egy webhookon keresztül. Az Az modul legújabb verzióját hozzá kell adni az automation-fiókhoz. Engedélyezni kell a felügyelt identitást, és hozzá kell férni az automation-fiókhoz. |
ScaleUp-Azure-VM on-Alert | Ez a runbook leállítja az Azure Resource Manager-alapú virtuális gépet egy Azure-riasztási eseményindítóra válaszul. A bemenet olyan riasztási adatok, amelyek a leállítani kívánt virtuális gép azonosításához szükségesek. A runbookot egy Azure-riasztásból kell meghívni egy webhookon keresztül. Az Az modul legújabb verzióját hozzá kell adni az automation-fiókhoz. Engedélyezni kell a felügyelt identitást, és hozzá kell férni az automation-fiókhoz. |
Következő lépések
- A runbookok indításának különböző módjait lásd : Runbook indítása.
- Tevékenységnapló-riasztás létrehozása: Tevékenységnapló-riasztások létrehozása.
- Megtudhatja, hogyan hozhat létre közel valós idejű riasztást, lásd : Riasztási szabály létrehozása az Azure Portalon.