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-portalen 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:

  1. Se till att du har Azure PowerShell installerat.

  2. Installera skriptet med hjälp av följande kommando:

    Install-Script -Name Create-AzDiagPolicy
    
  3. 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"  
    
  4. 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-portalen 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.

Screenshot that shows settings for initiative definition.

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.

Screenshot of the settings for the Basics tab in the Assign initiative section of the Diagnostic settings to Log Analytics workspace in the Azure portal.

Genom att använda initiativparametrar kan du ange arbetsytan eller annan information en gång för alla principdefinitioner i initiativet.

Screenshot that shows initiative parameters on the Parameters tab.

Å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-portalen har du möjlighet att skapa en reparationsaktivitet samtidigt. Mer information om reparationen finns i Åtgärda icke-kompatibla resurser med Azure Policy .

Screenshot that shows initiative remediation for a Log Analytics workspace.

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-portalen 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-supporten via Azure-portalen.

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.

Nästa steg