Erstellen von Diagnoseeinstellungen im großen Stil mithilfe von Azure Policy und Initiativen
Zum Überwachen von Azure-Ressourcen müssen Diagnoseeinstellungen für jede Ressource erstellt werden. Wenn Sie über viele Ressourcen verfügen, kann dieser Prozess schwierig zu verwalten sein. Damit Sie Diagnoseeinstellungen leichter im großen Stil erstellen und anwenden können, verwenden Sie Azure Policy, um Diagnoseeinstellungen sowohl für neue als auch für vorhandene Ressourcen automatisch zu generieren.
Jeder Azure-Ressourcentyp verfügt über einen eindeutigen Satz von Kategorien, die in der Diagnoseeinstellung aufgelistet werden. Für jeden Ressourcentyp ist deshalb eine separate Richtliniendefinition erforderlich. Einige Ressourcentypen verfügen über integrierte Richtliniendefinitionen, die Sie ohne Änderungen zuweisen können. Für andere Ressourcentypen können Sie eine benutzerdefinierte Definition erstellen.
Protokollkategoriegruppen
Protokollkategoriengruppen dienen zum Gruppieren ähnlicher Protokolltypen. Kategoriegruppen erleichtern es, in einem einzigen Befehl auf mehrere Protokolle zu verweisen. Es gibt eine allLogs-Kategoriegruppe, die alle Protokolle enthält. Es gibt auch eine Kategoriegruppe Überwachung, die alle Überwachungsprotokolle enthält. Mithilfe einer Kategoriegruppe können Sie eine Richtlinie definieren, die dynamisch aktualisiert wird, wenn einer Gruppe neue Protokollkategorien hinzugefügt werden.
Integrierte Richtliniendefinitionen für Azure Monitor
In der Regel gibt es drei integrierte Richtliniendefinitionen für jeden Ressourcentyp, die den drei Zielen entsprechen, an die die Diagnose gesendet werden soll:
- Log Analytics-Arbeitsbereiche
- Azure Storage-Konten
- Event Hubs
Weisen Sie die Richtlinien für den Ressourcentyp je nach den benötigten Zielen zu.
Es existieren eine Reihe von integrierten Richtlinien und Initiativen, die auf den Überwachungsprotokoll-Kategoriegruppen basieren, damit Sie Diagnoseeinstellungen mit nur wenigen Schritten anwenden können. Weitere Informationen finden Sie unter Aktivieren von Diagnoseeinstellungen nach Kategoriegruppe mit integrierten Richtlinien.
Eine vollständige Liste der integrierten Richtlinien für Azure Monitor finden Sie unter Integrierte Azure Policy-Definitionen für Azure Monitor.
Benutzerdefinierte Richtliniendefinitionen
Für Ressourcentypen, die über keine integrierte Richtlinie verfügen, müssen Sie eine benutzerdefinierte Richtliniendefinition erstellen. Sie können im Microsoft Azure-Portal eine neue Richtlinie manuell erstellen, indem Sie eine vorhandene integrierte Richtlinie kopieren und dann für Ihren Ressourcentyp ändern. Stattdessen können Sie die Richtlinie auch programmgesteuert mithilfe eines Skripts im PowerShell-Katalog erstellen.
Das Skript Create-AzDiagPolicy erstellt Richtliniendateien für einen bestimmten Ressourcentyp, die Sie mithilfe von PowerShell oder der Azure CLI installieren können. Erstellen Sie mit folgendem Verfahren eine benutzerdefinierte Richtliniendefinition für Diagnoseeinstellungen:
Vergewissern Sie sich, dass Azure PowerShell installiert ist.
Installieren Sie das Skript mit dem folgenden Befehl:
Install-Script -Name Create-AzDiagPolicy
Führen Sie das Skript mit den Parametern aus, die angeben, wohin die Protokolle gesendet werden sollen. Geben Sie bei der Eingabeaufforderung einen Abonnement- und Ressourcentyp an.
Wenn Sie z. B. eine Richtliniendefinition erstellen möchten, die Protkolle an einen Log Analytics-Arbeitsbereich und einen Event Hub sendet, verwenden Sie den folgenden Befehl:
Create-AzDiagPolicy.ps1 -ExportLA -ExportEH -ExportDir ".\PolicyFiles"
Alternativ können Sie ein Abonnement und einen Ressourcentyp im Befehl angeben. Wenn Sie z. B. eine Richtliniendefinition erstellen möchten, die an einen Log Analytics-Arbeitsbereich und einen Event Hub für Azure SQL Server-Datenbanken sendet, verwenden Sie den folgenden Befehl:
Create-AzDiagPolicy.ps1 -SubscriptionID <subscription id> -ResourceType Microsoft.Sql/servers/databases -ExportLA -ExportEH -ExportDir ".\PolicyFiles"
Das Skript erstellt separate Ordner für jede Richtliniendefinition. Jeder Ordner enthält drei Dateien mit den Namen azurepolicy.json, azurepolicy.rules.json und azurepolicy.parameters.json. Wenn Sie die Richtlinie manuell im Azure-Portal erstellen möchten, können Sie den Inhalt von azurepolicy.json kopieren und einfügen, da diese Datei die gesamte Richtliniendefinition enthält. Verwenden Sie die anderen beiden Dateien mit PowerShell oder der Azure CLI, um die Richtliniendefinition über eine Befehlszeile zu erstellen.
In den folgenden Beispielen wird gezeigt, wie die Richtliniendefinition sowohl über PowerShell als auch über die Azure CLI installiert wird. Beide Beispiele enthalten Metadaten zum Angeben einer Kategorie zur Überwachung, um die neue Richtliniendefinition mit den integrierten Richtliniendefinitionen zu gruppieren.
New-AzPolicyDefinition -name "Deploy Diagnostic Settings for SQL Server database to Log Analytics workspace" -policy .\Apply-Diag-Settings-LA-Microsoft.Sql-servers-databases\azurepolicy.rules.json -parameter .\Apply-Diag-Settings-LA-Microsoft.Sql-servers-databases\azurepolicy.parameters.json -mode All -Metadata '{"category":"Monitoring"}'
az policy definition create --name 'deploy-diag-setting-sql-database--workspace' --display-name 'Deploy Diagnostic Settings for SQL Server database to Log Analytics workspace' --rules 'Apply-Diag-Settings-LA-Microsoft.Sql-servers-databases\azurepolicy.rules.json' --params 'Apply-Diag-Settings-LA-Microsoft.Sql-servers-databases\azurepolicy.parameters.json' --subscription 'AzureMonitor_Docs' --mode All
Initiative
Anstatt für jede Richtliniendefinition eine Zuweisung zu erstellen, ist es eine gängige Strategie, eine Initiative zu erstellen, die die Richtliniendefinitionen umfasst, um Diagnoseeinstellungen für jeden Azure-Dienst zu erstellen. Erstellen Sie abhängig von der Art der Verwaltung Ihrer Umgebung eine Zuweisung zwischen der Initiative und einer Verwaltungsgruppe, einem Abonnement oder einer Ressourcengruppe. Diese Strategie bietet folgende Vorteile:
- Erstellen Sie eine einzelne Zuweisung für die Initiative anstelle mehrerer Zuweisungen für jeden Ressourcentyp. Verwenden Sie dieselbe Initiative für mehrere Überwachungsgruppen, Abonnements oder Ressourcengruppen.
- Ändern Sie die Initiative, wenn Sie einen neuen Ressourcentyp oder ein neues Ziel hinzufügen müssen. Beispielsweise können die ersten Anforderungen darin bestehen, Daten nur an einen Log Analytics-Arbeitsbereich zu senden, aber später möchten Sie einen Event Hub hinzufügen. Ändern Sie die Initiative, anstatt neue Zuweisungen zu erstellen.
Ausführliche Informationen zum Erstellen einer Initiative finden Sie unter Erstellen und Zuweisen einer Initiativdefinition. Beachten Sie die folgenden Empfehlungen:
- Legen Sie Kategorie auf Überwachung fest, um sie mit zugehörigen integrierten und benutzerdefinierten Richtliniendefinitionen zu gruppieren.
- Anstatt die Details für den Log Analytics-Arbeitsbereich und den Event Hub für die Richtliniendefinition in der Initiative anzugeben, verwenden Sie einen allgemeinen Initiativparameter. Mit diesem Parameter können Sie auf einfache Weise einen allgemeinen Wert für alle Richtliniendefinitionen angeben und diesen Wert bei Bedarf ändern.
Zuweisung
Weisen Sie die Initiative abhängig vom Umfang ihrer zu überwachenden Ressourcen einer Azure-Verwaltungsgruppe, einem Abonnement oder einer Ressourcengruppe zu. Eine Verwaltungsgruppe ist nützlich für bereichsbezogene Richtlinien, insbesondere wenn Ihre Organisation über mehrere Abonnements verfügt.
Mithilfe von Initiativparametern können Sie den Arbeitsbereich oder andere Details einmal für alle Richtliniendefinitionen in der Initiative angeben.
Wartung
Die Initiative wird auf jeden virtuellen Computer angewendet, während er erstellt wird. Mit einem Wartungstask werden die Richtliniendefinitionen in der Initiative für vorhandene Ressourcen bereitgestellt, sodass Sie Diagnoseeinstellungen für alle Ressourcen erstellen können, die bereits erstellt wurden.
Wenn Sie die Zuweisung mithilfe des Azure-Portals erstellen, können Sie gleichzeitig einen Wartungstask erstellen. Weitere Informationen zur Wartung finden Sie unter Korrigieren nicht konformer Ressourcen mit Azure Policy.
Problembehandlung
Nicht unterstützte Metrikkategorie
Beim Bereitstellen einer Diagnoseeinstellung erhalten Sie eine Fehlermeldung ähnlich wie Metrikkategorie „xxxx“ wird nicht unterstützt. Dieser Fehler wird möglicherweise angezeigt, auch wenn Ihre vorherige Bereitstellung erfolgreich war.
Das Problem tritt auf, wenn Sie eine Resource Manager-Vorlage, die REST-API, die Azure CLI oder Azure PowerShell verwenden. Über das Microsoft Azure-Portal erstellte Diagnoseeinstellungen sind nicht betroffen, da nur die unterstützten Kategorienamen angezeigt werden.
Von den anderen Metrikkategorien außer AllMetrics
werden nur eine begrenzte Anzahl von Azure-Diensten unterstützt. Zuvor wurden andere Kategorienamen ignoriert, wenn sie eine Diagnoseeinstellung bereitstellen, was sie zu AllMetrics
umgeleitet hat. Ab Februar 2021 wird die angegebene Metrikkategorie überprüft. Diese Änderungen führt zu Fehlern bei einigen Bereitstellungen.
Um dieses Problem zu beheben, aktualisieren Sie Ihre Bereitstellungen, um alle metrischen Kategorienamen zu entfernen, die nicht AllMetrics
sind. Wenn die Bereitstellung mehrere Kategorien hinzufügt, verwenden Sie nur eine AllMetrics
-Kategorie. Wenn das Problem weiterhin besteht, wenden Sie sich an den Azure-Support über das Azure-Portal.
Einstellung wird aufgrund von Nicht-ASCII-Zeichen in resourceID nicht mehr angezeigt
Diagnoseeinstellungen unterstützen keine Ressourcen-IDs mit Nicht-ASCII-Zeichen (z. B. „Präproduktion“). Da Sie Ressourcen in Azure nicht umbenennen können, müssen Sie eine neue Ressource ohne Nicht-ASCII-Zeichen erstellen. Wenn sich die Zeichen in einer Ressourcengruppe befinden, können Sie die darin enthaltenen Ressourcen in eine neue verschieben.