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.
En uppsättning inbyggda principer och initiativ som baseras på kategorigrupperna för granskningsloggar har utvecklats för att hjälpa 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. Du uppmanas att ange en prenumeration och resurstyp.
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 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx -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 Åtgärda icke-kompatibla 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.
Problemet orsakas av en ny ändring i det underliggande API:et. Andra måttkategorier än "AllMetrics" stöds inte och har aldrig varit undantagna för några få specifika Azure-tjänster. Tidigare ignorerades andra kategorinamn när en diagnostikinställning distribuerades. Azure Monitor-serverdelen omdirigerade dessa kategorier till "AllMetrics". Från och med februari 2021 uppdaterades serverdelen för att specifikt bekräfta att den angivna måttkategorin är korrekt. Den här ändringen har gjort att vissa distributioner misslyckas.
Om du får det här felet uppdaterar du distributionerna för att ersätta eventuella måttkategorinamn med "AllMetrics" för att åtgärda problemet. Om distributionen tidigare lade till flera kategorier bör endast en med "AllMetrics"-referensen behållas. 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:er med icke-ASCII-tecken (till exempel Preproducción). Eftersom du inte kan byta namn på resurser i Azure är det enda alternativet att skapa en ny resurs utan icke-ASCII-tecken. Om tecknen finns i en resursgrupp kan du flytta resurserna under den till en ny. Annars måste du återskapa resursen.