Resourcestatuswaarschuwingen configureren met Resource Manager-sjablonen
In dit artikel leest u hoe u waarschuwingen voor resourcestatusactiviteitenlogboeken maakt 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:
- U moet de Azure PowerShell-module installeren.
- U moet een actiegroep maken of opnieuw gebruiken die is geconfigureerd om u hiervan 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
Een Resource Manager-sjabloon voor Resource Health-waarschuwingen maken en opslaan als
resourcehealthalert.json
(zie details)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 :
[!NOTE]
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.
main
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 echter niet aanbevolen. Meer informatie over hoe we deze waarschuwing omlaag kunnen instellen om ons te richten op de gebeurtenissen die we belangrijk vinden.
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, hoeft u de scopes
sectie in de bovenstaande sjabloon te 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: 'Beschikbaar', 'Niet beschikbaar' en 'Gedegradeerd'. In situaties waarin de runner en de Azure-resource niet kunnen communiceren, wordt de status 'Onbekend' echter gerapporteerd voor de resource en die wordt beschouwd als een status gebeurtenis 'Actief'.
Wanneer een resource echter 'Onbekend' rapporteert, is de status ervan waarschijnlijk niet gewijzigd sinds het laatste nauwkeurige rapport. Als u waarschuwingen voor onbekende gebeurtenissen wilt verwijderen, 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 waarvoor de huidige en vorige status niet 'Onbekend' is. Deze wijziging kan handig zijn als uw waarschuwingen rechtstreeks naar uw mobiele telefoon of e-mail worden verzonden.
Houd er rekening mee dat het mogelijk is dat de eigenschappen currentHealthStatus en 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 die andere gebeurtenisgegevens zijn beschikbaar (bijvoorbeeld de 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-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
}
]
}
Houd er rekening mee dat het oorzaakveld in sommige gebeurtenissen null kan zijn. 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 bovenstaande component ertoe leiden dat een waarschuwing niet wordt geactiveerd, omdat de eigenschapswaarde properties.cause is ingesteld op null.
Resource Health-waarschuwingssjabloon voltooien
Wanneer u de verschillende aanpassingen gebruikt die in de vorige sectie worden beschreven, ziet u hier een voorbeeldsjabloon die is geconfigureerd 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: