Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel wird gezeigt, wie Sie mithilfe von Azure Resource Manager-Vorlagen und Azure PowerShell Resource Health-Aktivitätsprotokollbenachrichtigungen erstellen.
Azure Resource Health informiert Sie über den aktuellen und den vergangenen Integritätsstatus Ihrer Azure-Ressourcen. Azure Resource Health-Warnungen können Sie nahezu in Echtzeit informieren, wenn sich der Integritätsstatus dieser Ressourcen ändert. Die programmgesteuerte Erstellung von Resource Health-Warnungen ermöglicht Benutzern das Massenerstellen und -anpassen von Warnungen.
Hinweis
Es wird empfohlen, das Azure Az PowerShell-Modul für die Interaktion mit Azure zu verwenden. Informationen zu den ersten Schritten finden Sie unter Installieren von Azure PowerShell. Informationen zum Migrieren zum Az PowerShell-Modul finden Sie unter Migrieren von Azure PowerShell von AzureRM zum Az-Modul.
Voraussetzungen
Damit Sie die Anweisungen auf dieser Seite ausführen können, müssen Sie vorab einige Komponenten einrichten:
- Sie müssen das Azure PowerShell-Modul installieren.
- Sie müssen eine Aktionsgruppe erstellen oder wiederverwenden, die so konfiguriert ist, dass Sie benachrichtigt werden.
Anweisungen
Melden Sie sich unter Verwendung von PowerShell und Ihres Kontos bei Azure an, und wählen Sie das gewünschte Abonnement aus.
Login-AzAccount Select-AzSubscription -Subscription <subscriptionId>
Hinweis
Sie können mit
Get-AzSubscription
die Abonnements auflisten, auf die Sie Zugriff haben.Suchen Sie die vollständige Azure Resource Manager-ID für Ihre Aktionsgruppe, und speichern Sie sie.
(Get-AzActionGroup -ResourceGroupName <resourceGroup> -Name <actionGroup>).Id
Erstellen Sie eine Resource Manager-Vorlage für Resource Health-Benachrichtigungen, und speichern Sie diese als
resourcehealthalert.json
. (siehe Details)Erstellen Sie mit dieser Vorlage eine neue Azure Resource Manager-Bereitstellung.
New-AzResourceGroupDeployment -Name ExampleDeployment -ResourceGroupName <resourceGroup> -TemplateFile <path\to\resourcehealthalert.json>
Sie werden zur Eingabe des Warnungsnamen und der Ressourcen-ID der Aktionsgruppe aufgefordert, die Sie zuvor kopiert haben:
Supply values for the following parameters: (Type !? for Help.) activityLogAlertName: <Alert Name> actionGroupResourceId: /subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/microsoft.insights/actionGroups/<actionGroup>
Wurden alle Schritte erfolgreich ausgeführt, erhalten Sie eine Bestätigung 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 :
Hinweis
Wenn Sie diesen Prozess vollständig automatisieren möchten, müssen Sie einfach die Resource Manager-Vorlage so bearbeiten, dass in Schritt 5 nicht zur Eingabe der Werte aufgefordert wird.
Resource Manager-Vorlagenoptionen für Resource Health-Warnungen
Sie können diese Basisschablone als Ausgangspunkt zur Erstellung von Warnmeldungen zur Ressourcen-Gesundheit verwenden. Diese Vorlage funktioniert wie vorliegend, und Sie werden für den Empfang von Warnungen für alle neu aktivierten Ressourcenintegritätsereignisse in allen Ressourcen eines Abonnements registriert.
Hinweis
Am Ende dieses Artikels haben wir eine komplexere Warnungsvorlage eingefügt, die das Signal-zu-Rausch-Verhältnis für Warnungen zur Ressourcengesundheit im Vergleich zu dieser Vorlage erhöhen sollte.
{
"$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')]"
}
]
}
}
}
]
}
Eine breit angelegte Benachrichtigung wie diese wird jedoch nicht empfohlen. Erfahren Sie, wie wir diese Benachrichtigung einschränken können, um uns auf die für uns wichtigen Ereignisse zu konzentrieren.
Anpassen des Warnungsbereichs
Resource Health-Warnungen können so konfiguriert werden, dass sie Ereignisse in drei verschiedenen Bereichen überwachen:
- Abonnementstufe
- Ressourcengruppenebene
- Ressourcenebene
Die Warnungsvorlage wird auf Abonnementebene konfiguriert. Wenn Sie Ihre Warnung jedoch so konfigurieren möchten, dass Sie nur über bestimmte Ressourcen oder Ressourcen innerhalb einer bestimmten Ressourcengruppe informiert werden, müssen Sie einfach den scopes
Abschnitt in der angezeigten Vorlage ändern.
Für einen Bereich auf Ressourcengruppenebene sieht der Abschnitt „scopes“ etwa wie folgt aus:
"scopes": [
"/subscriptions/<subscription id>/resourcegroups/<resource group>"
],
Für einen Bereich auf Ressourcenebene sollte der Bereichsabschnitt folgendermaßen aussehen:
"scopes": [
"/subscriptions/<subscription id>/resourcegroups/<resource group>/providers/<resource>"
],
Beispiel: "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/myRG/providers/microsoft.compute/virtualmachines/myVm"
Hinweis
Diese Zeichenfolge erhalten Sie, indem Sie Ihre Azure-Ressource im Azure-Portal anzeigen und sich die URL ansehen.
Anpassen der Ressourcentypen, die Sie benachrichtigen
Warnungen auf Abonnement- oder Ressourcengruppenebene enthalten unter Umständen unterschiedliche Ressourcen. Wenn Sie Warnungen auf eine bestimmte Teilmenge von Ressourcentypen beschränken möchten, können Sie dies im Abschnitt condition
der Vorlage festlegen. Beispiel:
"condition": {
"allOf": [
...,
{
"anyOf": [
{
"field": "resourceType",
"equals": "MICROSOFT.COMPUTE/VIRTUALMACHINES",
"containsAny": null
},
{
"field": "resourceType",
"equals": "MICROSOFT.STORAGE/STORAGEACCOUNTS",
"containsAny": null
},
...
]
}
]
},
Hier verwenden wir den Wrapper anyOf
, um zu erlauben, dass die Ressourcenwarnung zum Gesundheitsstatus einer beliebigen der angegebenen Bedingungen entspricht. Dadurch werden Warnungen ermöglicht, die auf bestimmte Ressourcentypen abzielen.
Anpassen der Resource Health-Ereignisse, die Sie benachrichtigen
Wenn für Ressourcen ein Gesundheitsereignis auftritt, können sie eine Reihe von Phasen durchlaufen, die den Zustand des Gesundheitsereignisses darstellen: Active
, In Progress
, Updated
und Resolved
.
Sie möchten möglicherweise nur benachrichtigt werden, wenn eine Ressource fehlerhaft ist. In diesem Fall sollten Sie Ihre Warnung so konfigurieren, dass Sie nur benachrichtigt werden, wenn für status
der Wert Active
lautet. Wenn Sie jedoch auch über die anderen Phasen benachrichtigt werden möchten, können Sie diese Details wie folgt hinzufügen:
"condition": {
"allOf": [
...,
{
"anyOf": [
{
"field": "status",
"equals": "Active"
},
{
"field": "status",
"equals": "In Progress"
},
{
"field": "status",
"equals": "Resolved"
},
{
"field": "status",
"equals": "Updated"
}
]
}
]
}
Wenn Sie bei allen vier Phasen der Gesundheitsereignisse informiert werden möchten, können Sie diese Bedingung vollständig entfernen, und die Benachrichtigung erfolgt unabhängig von der Eigenschaft status
.
Hinweis
Jeder Abschnitt „anyOf“ sollte nur einen Feldtypwert enthalten.
Anpassen der Resource Health-Warnungen, um Ereignisse vom Typ „Unknown“ (Unbekannt) zu vermeiden
Azure Resource Health kann die aktuelle Gesundheit Ihrer Ressourcen melden, indem es kontinuierlich Testrunner zur Überwachung Ihrer Ressourcen verwendet. Die relevanten gemeldeten Gesundheitszustände sind: "Verfügbar", "Nicht verfügbar" und "Verschlechtert". Wenn der Testlauf und die Azure-Ressource nicht kommunizieren können, wird für die Ressource der Integritätsstatus „Unknown“ gemeldet, und dieser Status wird als Integritätsereignis vom Typ „Active“ (Aktiv) betrachtet.
Wenn eine Ressource jedoch "Unbekannt" meldet, ist es wahrscheinlich, dass dessen Gesundheitsstatus seit dem letzten genauen Bericht unverändert ist. Wenn Sie Warnungen für Ereignisse vom Typ „Unknown“ vermeiden möchten, können Sie die folgende Logik in die Vorlage aufnehmen:
"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 diesem Beispiel wird nur bei Ereignissen eine Benachrichtigung gesendet, deren aktueller und vorheriger Integritätsstatus nicht „Unbekannt“ lautet. Diese Änderung kann eine nützliche Ergänzung sein, wenn Ihre Warnungen direkt an Ihr Mobiltelefon oder Ihre mobile E-Mail gesendet wird.
Es ist möglich, dass die eigenschaften currentHealthStatus und previousHealthStatus in einigen Ereignissen null sein. Wenn beispielsweise ein Aktualisierungsereignis eintritt, ist es wahrscheinlich, dass der Gesundheitsstatus der Ressource seit dem letzten Bericht identisch ist. Nur diese anderen Ereignisinformationen sind verfügbar (z. B. die Ursache). Daher kann die Verwendung dieser Klausel dazu führen, dass einige Warnungen nicht ausgelöst werden, da die Werte "properties.currentHealthStatus" und "properties.previousHealthStatus" auf NULL festgelegt werden.
Anpassen der Warnung, um vom Benutzer initiierte Ereignisse zu vermeiden
Ressourcengesundheit-Ereignisse werden durch von der Plattform initiierte und von Benutzern initiierte Ereignisse ausgelöst. Es kann sinnvoll sein, nur eine Benachrichtigung zu senden, wenn die Azure-Plattform das Gesundheitsereignis verursacht.
Die Warnung kann einfach so konfiguriert werden, dass sie nur nach diesen Ereignistypen filtert:
"condition": {
"allOf": [
...,
{
"field": "properties.cause",
"equals": "PlatformInitiated",
"containsAny": null
}
]
}
Es ist möglich, dass das Ursachefeld in einigen Ereignissen null ist. Das bedeutet, dass sich der Gesundheitszustand ändert (z. B. von „Verfügbar“ in „Nicht verfügbar“) und das Ereignis sofort protokolliert wird, um Benachrichtigungsverzögerungen zu vermeiden. Daher kann die Verwendung dieser Klausel dazu führen, dass eine Warnung nicht ausgelöst wird, da der Eigenschaftswert "properties.cause" auf NULL festgelegt ist.
Abschließen einer Resource Health-Warnungsvorlage
Wenn Sie die verschiedenen im vorherigen Abschnitt beschriebenen Anpassungen verwenden, finden Sie hier eine Beispielvorlage, die so konfiguriert ist, dass das Signal-Rausch-Verhältnis maximiert wird. Denken Sie daran, dass die Eigenschaften „currentHealthStatus“ und „previousHealthStatus“ sowie die Eigenschaftswerte für „cause“ wie beschrieben bei einigen Ereignissen den Wert NULL haben können.
{
"$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')]"
}
]
}
}
}
]
}
Sie können jedoch selbst am besten einschätzen, welche Konfigurationen effektiv sind. Nehmen Sie daher mit den in dieser Dokumentation vorgestellten Methoden eigene Anpassungen vor.
Nächste Schritte
Erfahren Sie mehr über Resource Health:
- Übersicht über Azure Resource Health
- Über Azure Resource Health verfügbare Ressourcentypen und Integritätsüberprüfungen
Erstellen von Service Health-Warnungen: