Resourcestatuswaarschuwingen configureren met Resource Manager-sjablonen
In dit artikel wordt beschreven hoe u programmatisch waarschuwingen Resource Health activiteitenlogboek kunt maken met behulp van Azure Resource Manager-sjablonen en Azure PowerShell.
Azure Resource Health houdt u op de hoogte van de huidige en historische status van uw Azure-resources. Met Azure Resource Health-waarschuwingen ontvangt u vrijwel in realtime een melding als de status van deze resources wordt gewijzigd. Door Resource Health maken, kunnen gebruikers waarschuwingen bulksgewijs maken en aanpassen.
Notitie
In dit artikel wordt de Azure Az PowerShell-module gebruikt. Dit is de aanbevolen PowerShell-module voor interactie met Azure. Raadpleeg Azure PowerShell installeren om aan de slag te gaan met de Az PowerShell-module. Raadpleeg Azure PowerShell migreren van AzureRM naar Az om te leren hoe u naar de Azure PowerShell-module migreert.
Vereisten
Als u de instructies op deze pagina wilt volgen, moet u van tevoren een aantal dingen instellen:
- U moet de module Azure PowerShell installeren
- U moet een actiegroep maken of opnieuw gebruiken die is geconfigureerd om u op de hoogte te stellen
Instructies
Meld u met behulp van PowerShell aan bij Azure met uw account en selecteer het abonnement dat u wilt gebruiken
Login-AzAccount Select-AzSubscription -Subscription <subscriptionId>U kunt gebruiken
Get-AzSubscriptionom de abonnementen weer te geven waar u toegang toe hebt.Zoek de volledige id van Azure Resource Manager actiegroep en sla deze op
(Get-AzActionGroup -ResourceGroupName <resourceGroup> -Name <actionGroup>).IdMaak een sjabloon voor Resource Manager en sla Resource Health op als
resourcehealthalert.json( zie de detailshieronder)Een nieuwe implementatie Azure Resource Manager maken met behulp van deze sjabloon
New-AzResourceGroupDeployment -Name ExampleDeployment -ResourceGroupName <resourceGroup> -TemplateFile <path\to\resourcehealthalert.json>U wordt gevraagd om de resource-id van de waarschuwingsnaam en actiegroep in te voeren die u eerder hebt gekopieerd:
Supply values for the following parameters: (Type !? for Help.) activityLogAlertName: <Alert Name> actionGroupResourceId: /subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/microsoft.insights/actionGroups/<actionGroup>Als alles goed werkt, ontvangt u een bevestiging in PowerShell
DeploymentName : ExampleDeployment ResourceGroupName : <resourceGroup> ProvisioningState : Succeeded Timestamp : 11/8/2017 2:32:00 AM Mode : Incremental TemplateLink : Parameters : Name Type Value =============== ========= ========== activityLogAlertName String <Alert Name> activityLogAlertEnabled Bool True actionGroupResourceId String /... Outputs : DeploymentDebugLogLevel :
Als u van plan bent dit proces volledig te automatiseren, hoeft u alleen de sjabloon Resource Manager bewerken om niet te vragen naar de waarden in stap 5.
Resource Manager sjabloonopties voor Resource Health waarschuwingen
U kunt deze basissjabloon gebruiken als uitgangspunt voor het maken van Resource Health waarschuwingen. Deze sjabloon werkt zoals geschreven en u ontvangt waarschuwingen voor alle nieuw geactiveerde resource health-gebeurtenissen voor alle resources in een abonnement.
Onderaan dit artikel hebben we ook een complexere waarschuwingssjabloon opgenomen waarmee de signaal-ruisverhouding voor Resource Health waarschuwingen moet worden vergroot in vergelijking met deze sjabloon.
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"activityLogAlertName": {
"type": "string",
"metadata": {
"description": "Unique name (within the Resource Group) for the Activity log alert."
}
},
"actionGroupResourceId": {
"type": "string",
"metadata": {
"description": "Resource Id for the Action group."
}
}
},
"resources": [
{
"type": "Microsoft.Insights/activityLogAlerts",
"apiVersion": "2017-04-01",
"name": "[parameters('activityLogAlertName')]",
"location": "Global",
"properties": {
"enabled": true,
"scopes": [
"[subscription().id]"
],
"condition": {
"allOf": [
{
"field": "category",
"equals": "ResourceHealth"
},
{
"field": "status",
"equals": "Active"
}
]
},
"actions": {
"actionGroups":
[
{
"actionGroupId": "[parameters('actionGroupResourceId')]"
}
]
}
}
}
]
}
Een brede waarschuwing zoals deze wordt doorgaans echter niet aanbevolen. Meer informatie over hoe u deze waarschuwing kunt insbereiken om u te richten op de gebeurtenissen die we hieronder belangrijk vinden.
Het waarschuwingsbereik aanpassen
Resource Health kunnen worden geconfigureerd voor het bewaken van gebeurtenissen op drie verschillende scopes:
- Abonnementsniveau
- Niveau resourcegroep
- Resourceniveau
De waarschuwingssjabloon is geconfigureerd op abonnementsniveau, maar als u uw waarschuwing wilt configureren om u alleen op de hoogte te stellen van bepaalde resources of resources binnen een bepaalde resourcegroep, hoeft u alleen de sectie in de bovenstaande sjabloon te scopes wijzigen.
Voor een bereik op resourcegroepniveau moet de sectie bereiken er als volgende uitzien:
"scopes": [
"/subscriptions/<subscription id>/resourcegroups/<resource group>"
],
En voor een bereik op resourceniveau moet de sectie Bereik er als volgende uitzien:
"scopes": [
"/subscriptions/<subscription id>/resourcegroups/<resource group>/providers/<resource>"
],
Bijvoorbeeld: "/subscriptions/d37urb3e-ed41-4670-9c19-02a1d2808ff9/resourcegroups/myRG/providers/microsoft.compute/virtualmachines/myVm"
U kunt naar Azure Portal gaan en de URL bekijken wanneer u uw Azure-resource bekijkt om deze tekenreeks op te halen.
De resourcetypen aanpassen waarvoor u een waarschuwing wordt ontvangen
Waarschuwingen op het niveau van het abonnement of de resourcegroep kunnen verschillende soorten resources hebben. Als u waarschuwingen wilt beperken tot alleen afkomstig is uit een bepaalde subset van resourcetypen, kunt u dat definiëren in de sectie van de condition sjabloon:
"condition": {
"allOf": [
...,
{
"anyOf": [
{
"field": "resourceType",
"equals": "MICROSOFT.COMPUTE/VIRTUALMACHINES",
"containsAny": null
},
{
"field": "resourceType",
"equals": "MICROSOFT.STORAGE/STORAGEACCOUNTS",
"containsAny": null
},
...
]
}
]
},
Hier gebruiken we de wrapper om de resource health-waarschuwing te laten overeenkomen met een van de opgegeven voorwaarden, zodat waarschuwingen kunnen worden gebruikt die zijn gericht anyOf op specifieke resourcetypen.
Het aanpassen van Resource Health gebeurtenissen die u waarschuwen
Wanneer resources een statusgebeurtenis ondergaan, kunnen ze een reeks fasen door ondergaan die de status van de statusgebeurtenis vertegenwoordigen: Active , In Progress , en Updated Resolved .
Mogelijk wilt u alleen een melding ontvangen wanneer een resource een slechte status krijgt. In dat geval wilt u de waarschuwing zo configureren dat deze alleen wordt gewaarschuwd wanneer status de Active is. Als u echter ook op de hoogte wilt worden gesteld van de andere fasen, kunt u de volgende gegevens toevoegen:
"condition": {
"allOf": [
...,
{
"anyOf": [
{
"field": "status",
"equals": "Active"
},
{
"field": "status",
"equals": "In Progress"
},
{
"field": "status",
"equals": "Resolved"
},
{
"field": "status",
"equals": "Updated"
}
]
}
]
}
Als u op de hoogte wilt worden gesteld van alle vier de fasen van statusgebeurtenissen, kunt u deze voorwaarde bij elkaar verwijderen en wordt u via de waarschuwing op de hoogte gesteld, ongeacht de status eigenschap .
Notitie
Elke sectie anyOf moet slechts één veldtypewaarde bevatten.
De Resource Health om onbekende gebeurtenissen te voorkomen
Azure Resource Health kunt u de meest recente status van uw resources rapporteren door ze voortdurend te bewaken met testtests. De relevante gerapporteerde statussen zijn: 'Beschikbaar', 'Niet beschikbaar' en 'Gedegradeerd'. In situaties waarin de runner en de Azure-resource niet kunnen communiceren, wordt de status Onbekend gerapporteerd voor de resource en wordt deze beschouwd als een statusgebeurtenis 'Actief'.
Wanneer een resource echter 'Onbekend' rapporteert, is de status ervan waarschijnlijk niet gewijzigd sinds het laatste nauwkeurige rapport. Als u waarschuwingen over onbekende gebeurtenissen wilt elimineren, kunt u die logica opgeven in de sjabloon:
"condition": {
"allOf": [
...,
{
"anyOf": [
{
"field": "properties.currentHealthStatus",
"equals": "Available",
"containsAny": null
},
{
"field": "properties.currentHealthStatus",
"equals": "Unavailable",
"containsAny": null
},
{
"field": "properties.currentHealthStatus",
"equals": "Degraded",
"containsAny": null
}
]
},
{
"anyOf": [
{
"field": "properties.previousHealthStatus",
"equals": "Available",
"containsAny": null
},
{
"field": "properties.previousHealthStatus",
"equals": "Unavailable",
"containsAny": null
},
{
"field": "properties.previousHealthStatus",
"equals": "Degraded",
"containsAny": null
}
]
},
]
},
In dit voorbeeld melden we alleen gebeurtenissen waarbij de huidige en vorige status niet 'Onbekend' hebben. Deze wijziging kan handig zijn als uw waarschuwingen rechtstreeks naar uw mobiele telefoon of e-mailadres worden verzonden.
Houd er rekening mee dat de eigenschappen currentHealthStatus en previousHealthStatus in sommige gebeurtenissen null kunnen zijn. Wanneer bijvoorbeeld een gebeurtenis Bijgewerkt optreedt, is de status van de resource waarschijnlijk niet gewijzigd sinds het laatste rapport, alleen dat er aanvullende gebeurtenisgegevens beschikbaar zijn (bijvoorbeeld oorzaak). Daarom kan het gebruik van de bovenstaande component ertoe leiden dat sommige waarschuwingen niet worden geactiveerd, omdat de waarden properties.currentHealthStatus en properties.previousHealthStatus worden ingesteld op null.
De waarschuwing aanpassen om door de gebruiker geïnitieerde gebeurtenissen te voorkomen
Resource Health kunnen worden geactiveerd door door het platform geïnitieerde en door de gebruiker geïnitieerde gebeurtenissen. Het kan zinvol zijn om alleen een melding te verzenden wanneer de statusgebeurtenis wordt veroorzaakt door het Azure-platform.
Het is eenvoudig om uw waarschuwing zo te configureren dat deze alleen wordt gefilterd op dit soort gebeurtenissen:
"condition": {
"allOf": [
...,
{
"field": "properties.cause",
"equals": "PlatformInitiated",
"containsAny": null
}
]
}
Houd er rekening mee dat het veld oorzaak in sommige gebeurtenissen null kan zijn. Dat wil zeggen dat er een statusovergang plaatsvindt (bijvoorbeeld beschikbaar voor niet-beschikbaar) en de gebeurtenis onmiddellijk wordt geregistreerd om vertragingen in meldingen te voorkomen. Daarom kan het gebruik van de bovenstaande component ertoe leiden dat een waarschuwing niet wordt geactiveerd, omdat de eigenschapswaarde properties.cause wordt ingesteld op null.
Sjabloon Resource Health waarschuwing voltooien
Met behulp van de verschillende aanpassingen die in de vorige sectie zijn beschreven, is hier een voorbeeldsjabloon die is geconfigureerd om de signaal-ruisverhouding te maximaliseren. Houd rekening met de bovenstaande waarschuwingen, waarbij de eigenschapswaarden currentHealthStatus, previousHealthStatus en cause in sommige gebeurtenissen null kunnen zijn.
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"activityLogAlertName": {
"type": "string",
"metadata": {
"description": "Unique name (within the Resource Group) for the Activity log alert."
}
},
"actionGroupResourceId": {
"type": "string",
"metadata": {
"description": "Resource Id for the Action group."
}
}
},
"resources": [
{
"type": "Microsoft.Insights/activityLogAlerts",
"apiVersion": "2017-04-01",
"name": "[parameters('activityLogAlertName')]",
"location": "Global",
"properties": {
"enabled": true,
"scopes": [
"[subscription().id]"
],
"condition": {
"allOf": [
{
"field": "category",
"equals": "ResourceHealth",
"containsAny": null
},
{
"anyOf": [
{
"field": "properties.currentHealthStatus",
"equals": "Available",
"containsAny": null
},
{
"field": "properties.currentHealthStatus",
"equals": "Unavailable",
"containsAny": null
},
{
"field": "properties.currentHealthStatus",
"equals": "Degraded",
"containsAny": null
}
]
},
{
"anyOf": [
{
"field": "properties.previousHealthStatus",
"equals": "Available",
"containsAny": null
},
{
"field": "properties.previousHealthStatus",
"equals": "Unavailable",
"containsAny": null
},
{
"field": "properties.previousHealthStatus",
"equals": "Degraded",
"containsAny": null
}
]
},
{
"anyOf": [
{
"field": "properties.cause",
"equals": "PlatformInitiated",
"containsAny": null
}
]
},
{
"anyOf": [
{
"field": "status",
"equals": "Active",
"containsAny": null
},
{
"field": "status",
"equals": "Resolved",
"containsAny": null
},
{
"field": "status",
"equals": "In Progress",
"containsAny": null
},
{
"field": "status",
"equals": "Updated",
"containsAny": null
}
]
}
]
},
"actions": {
"actionGroups": [
{
"actionGroupId": "[parameters('actionGroupResourceId')]"
}
]
}
}
}
]
}
U weet echter het beste welke configuraties voor u effectief zijn. Gebruik daarom de hulpprogramma's die u in deze documentatie hebt geleerd om uw eigen aanpassing te maken.
Volgende stappen
Meer informatie over Resource Health:
- Azure Resource Health overzicht
- Resourcetypen en statuscontroles die beschikbaar zijn via Azure Resource Health
Maak Service Health waarschuwingen: