Resourcestatuswaarschuwingen configureren met Resource Manager-sjablonen
In dit artikel wordt beschreven hoe u waarschuwingen voor resourcestatusactiviteitenlogboeken programmatisch 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. Met het programmatisch maken van Resource Health-waarschuwingen kunnen gebruikers waarschuwingen bulksgewijs maken en aanpassen.
Notitie
Het wordt aanbevolen de Azure Az PowerShell-module te gebruiken om te communiceren met Azure. Zie Azure PowerShell installeren om aan de slag te gaan. 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 een aantal zaken vooraf instellen:
- Installeer de Azure PowerShell-module.
- Maak of hergebruik een actiegroep die is geconfigureerd om u op de hoogte te stellen.
Instructies
Gebruik PowerShell om u met uw account aan te melden bij Azure en selecteer het abonnement waarmee u wilt communiceren.
Login-AzAccount Select-AzSubscription -Subscription <subscriptionId>
Notitie
U kunt deze gebruiken
Get-AzSubscription
om de abonnementen weer te geven waar u toegang toe hebt.Zoek en sla de volledige Azure Resource Manager-id voor uw actiegroep op.
(Get-AzActionGroup -ResourceGroupName <resourceGroup> -Name <actionGroup>).Id
Als resourcehealthalert.json een Resource Manager-sjabloon voor Resource Health-waarschuwingen maken en opslaan, raadpleegt u Resource Manager-sjabloonopties voor Resource Health-waarschuwingen.
Maak een nieuwe Azure Resource Manager-implementatie 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 te typen 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, krijgt 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, moet u de Resource Manager-sjabloon bewerken om niet om de waarden in stap 5 te vragen.
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 registreert u om waarschuwingen te ontvangen voor alle nieuw geactiveerde resourcestatusgebeurtenissen voor alle resources in een abonnement.
Notitie
Onderaan dit artikel hebben we ook een complexere waarschuwingssjabloon opgenomen die de signaal-ruisverhouding voor Resource Health-waarschuwingen moet verhogen 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. In de volgende sectie leert u hoe u deze waarschuwing omlaag kunt instellen om u te richten op de gebeurtenissen die we belangrijk maken.
Het waarschuwingsbereik aanpassen
Resource Health-waarschuwingen kunnen worden geconfigureerd voor het bewaken van gebeurtenissen op drie verschillende bereiken:
- Abonnementsniveau
- Niveau van 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, moet u de scopes
sectie in deze sjabloon wijzigen.
Voor een bereik op resourcegroepsniveau moet de sectie bereiken er als volgt uitzien:
"scopes": [
"/subscriptions/<subscription id>/resourcegroups/<resource group>"
],
En voor een bereik op resourceniveau moet de bereiksectie er als volgt uitzien:
"scopes": [
"/subscriptions/<subscription id>/resourcegroups/<resource group>/providers/<resource>"
],
Bijvoorbeeld:"/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/myRG/providers/microsoft.compute/virtualmachines/myVm"
Notitie
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 die u waarschuwen
Waarschuwingen op abonnements- of resourcegroepniveau kunnen verschillende soorten resources hebben. Als u waarschuwingen wilt beperken tot alleen afkomstig zijn van een bepaalde subset van resourcetypen, kunt u dit definiëren in de condition
sectie van de sjabloon:
"condition": {
"allOf": [
...,
{
"anyOf": [
{
"field": "resourceType",
"equals": "MICROSOFT.COMPUTE/VIRTUALMACHINES",
"containsAny": null
},
{
"field": "resourceType",
"equals": "MICROSOFT.STORAGE/STORAGEACCOUNTS",
"containsAny": null
},
...
]
}
]
},
Hier gebruiken we de anyOf
wrapper om de resourcestatuswaarschuwing te laten overeenkomen met een van de voorwaarden die we opgeven, zodat waarschuwingen worden toegestaan die zijn gericht op specifieke resourcetypen.
De Resource Health-gebeurtenissen aanpassen die u waarschuwen
Wanneer resources een statusevenement ondergaan, kunnen ze een reeks fasen doorlopen die de status van de status van de status van de gebeurtenis vertegenwoordigen: Active
, In Progress
, Updated
en Resolved
.
Mogelijk wilt u alleen een melding ontvangen wanneer een resource beschadigd raakt. In dat geval wilt u de waarschuwing zo configureren dat deze alleen wordt gewaarschuwd wanneer de status
resource zich bevindt Active
. Als u echter ook op de hoogte wilt worden gesteld van de andere fasen, kunt u deze gegevens als volgt toevoegen:
"condition": {
"allOf": [
...,
{
"anyOf": [
{
"field": "status",
"equals": "Active"
},
{
"field": "status",
"equals": "In Progress"
},
{
"field": "status",
"equals": "Resolved"
},
{
"field": "status",
"equals": "Updated"
}
]
}
]
}
Als u een melding wilt ontvangen voor alle vier de fasen van statusevenementen, kunt u deze voorwaarde allemaal samen verwijderen en ontvangt u een melding, ongeacht de status
eigenschap.
Notitie
Elke sectie 'anyOf' moet slechts één veldtypewaarden bevatten.
De Resource Health-waarschuwingen aanpassen om onbekende gebeurtenissen te voorkomen
Azure Resource Health kan de nieuwste status van uw resources rapporteren door ze voortdurend te bewaken met behulp van testlopers. De relevante gerapporteerde statussen zijn: Available
, Unavailable
en Degraded
. In situaties waarin de runner en de Azure-resource niet kunnen communiceren, wordt er echter een Unknown
status gerapporteerd voor de resource en die wordt beschouwd als een status gebeurtenis 'Actief'.
Wanneer een resource echter rapporteert Unknown
, is de status ervan waarschijnlijk niet gewijzigd sinds het laatste nauwkeurige rapport. Als u waarschuwingen voor Unknown
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 waar de huidige en vorige status niet over beschikt Unknown
. Deze wijziging kan handig zijn als uw waarschuwingen rechtstreeks naar uw mobiele telefoon of e-mail worden verzonden.
Het is mogelijk dat de currentHealthStatus
eigenschappen previousHealthStatus
null zijn in sommige gebeurtenissen. Wanneer er bijvoorbeeld een bijgewerkte gebeurtenis optreedt, is de status van de resource waarschijnlijk niet gewijzigd sinds het laatste rapport, alleen dat er meer gebeurtenisgegevens beschikbaar zijn (bijvoorbeeld oorzaak). Daarom kan het gebruik van de component in dit voorbeeld ertoe leiden dat sommige waarschuwingen niet worden geactiveerd, omdat de properties.currentHealthStatus
waarden properties.previousHealthStatus
zijn ingesteld op null.
De waarschuwing aanpassen om door de gebruiker geïnitieerde gebeurtenissen te voorkomen
Resource Health-gebeurtenissen 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 status gebeurtenis wordt veroorzaakt door het Azure-platform.
U kunt uw waarschuwing eenvoudig configureren om te filteren op dit soort gebeurtenissen:
"condition": {
"allOf": [
...,
{
"field": "properties.cause",
"equals": "PlatformInitiated",
"containsAny": null
}
]
}
Het is mogelijk dat het oorzaakveld null is in sommige gebeurtenissen. Een statusovergang vindt plaats (bijvoorbeeld beschikbaar voor niet beschikbaar) en de gebeurtenis wordt onmiddellijk geregistreerd om vertragingen van meldingen te voorkomen. Daarom kan het gebruik van de component in dit voorbeeld ertoe leiden dat er geen waarschuwing wordt geactiveerd, omdat de properties.cause
eigenschapswaarde wordt ingesteld op null.
Resource Health-waarschuwingssjabloon voltooien
Hier volgt een voorbeeldsjabloon die is geconfigureerd met behulp van de aanpassingen die in de vorige sectie zijn beschreven om de verhouding tussen signaal en ruis te maximaliseren. Houd er rekening mee dat de bovenstaande opmerkingen waar de currentHealthStatus
, previousHealthStatus
en oorzaak van eigenschapswaarden 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, dus gebruik de hulpprogramma's die u in deze documentatie hebt geleerd om uw eigen aanpassingen te maken.
Volgende stappen
Meer informatie over Resource Health:
- Overzicht van Azure Resource Health
- Resourcetypen en statuscontroles die beschikbaar zijn via Azure Resource Health
ServiceStatuswaarschuwingen maken: