Skapa diagnostikinställningar i stor skala med hjälp av Azure-principer och initiativ
För att kunna övervaka Azure-resurser är det nödvändigt att skapa diagnostikinställningar för varje resurs. Den här processen kan vara svår att hantera när du har många resurser. För att förenkla processen med att skapa och tillämpa diagnostikinställningar i stor skala använder du Azure Policy för att automatiskt generera diagnostikinställningar för både nya och befintliga resurser.
Varje Azure-resurstyp har en unik uppsättning kategorier som anges i diagnostikinställningarna. Varje resurstyp kräver därför en separat principdefinition. Vissa resurstyper har inbyggda principdefinitioner som du kan tilldela utan ändringar. För andra resurstyper kan du skapa en anpassad definition.
Loggkategorigrupper
Logga kategorigrupper, gruppera liknande typer av loggar. Kategorigrupper gör det enkelt att referera till flera loggar i ett enda kommando. Det finns en allLogs-kategorigrupp som innehåller alla loggar. Det finns också en granskningskategorigrupp som innehåller alla granskningsloggar. Genom att använda till en kategorigrupp kan du definiera en princip som dynamiskt uppdateras när nya loggkategorier läggs till i gruppen.
Inbyggda principdefinitioner för Azure Monitor
Det finns vanligtvis tre inbyggda principdefinitioner för varje resurstyp, som motsvarar de tre mål som diagnostiken ska skickas till:
- Log Analytics-arbetsytor
- Azure Storage-konton
- Event Hubs
Tilldela principerna för resurstypen enligt vilka mål du behöver.
Det finns en uppsättning inbyggda principer och initiativ baserade på kategorigrupperna för granskningsloggar som hjälper dig att tillämpa diagnostikinställningar med bara några få steg. Mer information finns i Aktivera diagnostikinställningar efter kategorigrupp med hjälp av inbyggda principer.
En fullständig lista över inbyggda principer för Azure Monitor finns i Inbyggda Definitioner för Azure Policy för Azure Monitor
Anpassade principdefinitioner
För resurstyper som inte har någon inbyggd princip måste du skapa en anpassad principdefinition. Du kan skapa en ny princip manuellt i Azure Portal genom att kopiera en befintlig inbyggd princip och sedan ändra den för din resurstyp. Du kan också skapa principen programmatiskt med hjälp av ett skript i PowerShell-galleriet.
Skriptet Create-AzDiagPolicy skapar principfiler för en viss resurstyp som du kan installera med hjälp av PowerShell eller Azure CLI. Använd följande procedur för att skapa en anpassad principdefinition för diagnostikinställningar:
Se till att du har Azure PowerShell installerat.
Installera skriptet med hjälp av följande kommando:
Install-Script -Name Create-AzDiagPolicy
Kör skriptet med hjälp av parametrarna för att ange var loggarna ska skickas. Ange en prenumeration och resurstyp i kommandotolken.
Om du till exempel vill skapa en principdefinition som skickar loggar till en Log Analytics-arbetsyta och en händelsehubb använder du följande kommando:
Create-AzDiagPolicy.ps1 -ExportLA -ExportEH -ExportDir ".\PolicyFiles"
Du kan också ange en prenumeration och resurstyp i kommandot . Om du till exempel vill skapa en principdefinition som skickar loggar till en Log Analytics-arbetsyta och en händelsehubb för SQL Server-databaser använder du följande kommando:
Create-AzDiagPolicy.ps1 -SubscriptionID <subscription id> -ResourceType Microsoft.Sql/servers/databases -ExportLA -ExportEH -ExportDir ".\PolicyFiles"
Skriptet skapar separata mappar för varje principdefinition. Varje mapp innehåller tre filer med namnet azurepolicy.json, azurepolicy.rules.json och azurepolicy.parameters.json. Om du vill skapa principen manuellt i Azure Portal kan du kopiera och klistra in innehållet i azurepolicy.json eftersom den innehåller hela principdefinitionen. Använd de andra två filerna med PowerShell eller Azure CLI för att skapa principdefinitionen från en kommandorad.
I följande exempel visas hur du installerar principdefinitionen från både PowerShell och Azure CLI. Varje exempel innehåller metadata för att ange en kategori av Övervakning för att gruppera den nya principdefinitionen med de inbyggda principdefinitionerna.
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
Initiativ
I stället för att skapa en tilldelning för varje principdefinition är en vanlig strategi att skapa ett initiativ som innehåller principdefinitionerna för att skapa diagnostikinställningar för varje Azure-tjänst. Skapa en tilldelning mellan initiativet och en hanteringsgrupp, prenumeration eller resursgrupp, beroende på hur du hanterar din miljö. Den här strategin erbjuder följande fördelar:
- Skapa en enskild tilldelning för initiativet i stället för flera tilldelningar för varje resurstyp. Använd samma initiativ för flera övervakningsgrupper, prenumerationer eller resursgrupper.
- Ändra initiativet när du behöver lägga till en ny resurstyp eller ett nytt mål. Dina initiala krav kan till exempel vara att endast skicka data till en Log Analytics-arbetsyta, men senare vill du lägga till en händelsehubb. Ändra initiativet i stället för att skapa nya tilldelningar.
Mer information om hur du skapar ett initiativ finns i Skapa och tilldela en initiativdefinition. Överväg följande rekommendationer:
- Ange Kategori till Övervakning för att gruppera den med relaterade inbyggda och anpassade principdefinitioner.
- I stället för att ange information om Log Analytics-arbetsytan och händelsehubben för principdefinitioner som ingår i initiativet använder du en gemensam initiativparameter. Med den här parametern kan du enkelt ange ett gemensamt värde för alla principdefinitioner och ändra det värdet om det behövs.
Tilldelning
Tilldela initiativet till en Azure-hanteringsgrupp, prenumeration eller resursgrupp, beroende på omfånget för dina resurser som ska övervakas. En hanteringsgrupp är användbar för omfångsprinciper, särskilt om din organisation har flera prenumerationer.
Genom att använda initiativparametrar kan du ange arbetsytan eller annan information en gång för alla principdefinitioner i initiativet.
Åtgärder
Initiativet tillämpas på varje virtuell dator när det skapas. En reparationsuppgift distribuerar principdefinitionerna i initiativet till befintliga resurser, så att du kan skapa diagnostikinställningar för alla resurser som redan har skapats.
När du skapar tilldelningen med hjälp av Azure Portal kan du skapa en reparationsaktivitet samtidigt. Mer information om reparationen finns i Reparera inkompatibla resurser med Azure Policy .
Felsökning
Måttkategori stöds inte
När du distribuerar en diagnostikinställning får du ett felmeddelande som liknar måttkategorin "xxxx" stöds inte. Du kan få det här felet även om din tidigare distribution lyckades.
Problemet uppstår när du använder en Resource Manager-mall, REST API, Azure CLI eller Azure PowerShell. Diagnostikinställningar som skapas via Azure Portal påverkas inte eftersom endast de kategorinamn som stöds visas.
Andra måttkategorier än AllMetrics
stöds inte förutom ett begränsat antal Azure-tjänster. Tidigare ignorerades andra kategorinamn när du distribuerade en diagnostikinställning och omdirigerade dem till AllMetrics
. Från och med februari 2021 verifieras den angivna måttkategorin. Den här ändringen har gjort att vissa distributioner misslyckas.
Åtgärda problemet genom att uppdatera dina distributioner för att ta bort eventuella andra måttkategorinamn än AllMetrics
. Om distributionen lägger till flera kategorier använder du bara en AllMetrics
kategori. Om problemet kvarstår kontaktar du Azure Support via Azure Portal.
Inställningen försvinner på grund av icke-ASCII-tecken i resourceID
Diagnostikinställningar stöder inte resourceID med icke-ASCII-tecken (till exempel Preproduccón). Eftersom du inte kan byta namn på resurser i Azure måste du skapa en ny resurs utan icke-ASCII-tecken. Om tecknen finns i en resursgrupp kan du flytta resurserna till en ny grupp.