Skapa agentbaserade fel med Azure CLI (klassisk)

Important

Experiment (klassisk) ersätts av Chaos Studio Arbetsytor, den aktuella resursmodellen för Azure Chaos Studio. Det är fortfarande Chaos Studio, med ett nytt sätt att definiera och köra dina tester. Microsoft lägger inte längre till funktioner i Experiment (klassisk) och tar endast hänsyn till kritiska korrigeringar, till exempel säkerhetsuppdateringar, för backport till den här modellen. Använd Arbetsytor för nya motståndskraftstester. Om du vill flytta dina befintliga experiment följer du Flytta från Experiments (classic) till Chaos Studio-arbetsytor.

Den här Azure CLI guiden skapar agentbaserade fel med Azure Chaos Studio Experiment (klassisk). För CPU-tester av aktuella modeller använder du Workspaces CPU Pressure Scenario och Workspaces CLI guide. Kontrollera scenariokraven innan du väljer en modell.

Du kan använda ett kaosexperiment för att kontrollera att programmet är motståndskraftigt mot fel genom att orsaka dessa fel i en kontrollerad miljö. I den här artikeln orsakar du en hög % av cpu-användningshändelsen på en virtuell Linux-dator (VM) med hjälp av ett kaosexperiment och Azure Chaos Studio. Kör det här experimentet för att skydda en applikation mot att drabbas av resursbrist.

Du kan använda samma steg för att konfigurera och köra ett experiment för alla agentbaserade fel. Ett agentbaserat fel kräver konfiguration och installation av kaosagenten. Ett servicedirekt fel riktas direkt mot en Azure-resurs utan behov av instrumentering.

Förutsättningar

Öppna Azure Cloud Shell

Azure Cloud Shell är ett kostnadsfritt interaktivt gränssnitt som du kan använda för att köra stegen i den här artikeln. Den har vanliga Azure-verktyg förinstallerat och har konfigurerats för användning med ditt konto.

Öppna Cloud Shell genom att välja Prova i ett kodblocks övre högra hörn. Du kan också öppna Cloud Shell på en separat webbläsarflik genom att gå till Bash. Välj Kopiera för att kopiera kodblocken, klistra in den i Cloud Shell och välj Retur för att köra den.

Om du föredrar att installera och använda CLI lokalt kräver den här självstudien Azure CLI version 2.0.30 eller senare. Kör az --version för att hitta versionen. Om du behöver installera eller uppgradera kan du läsa Installera Azure CLI.

Kommentar

De här anvisningarna använder en Bash-terminal i Cloud Shell. Vissa kommandon kanske inte fungerar enligt beskrivningen om du kör CLI lokalt eller i en PowerShell-terminal.

Tilldela hanterad identitet till den virtuella datorn

Innan du konfigurerar Chaos Studio på den virtuella datorn tilldelar du en användartilldelad hanterad identitet till varje vm eller vm-skalningsuppsättning där du planerar att installera agenten. Använd kommandot az vm identity assign eller az vmss identity assign. Ersätt $VM_RESOURCE_ID/$VMSS_RESOURCE_ID med resurs-ID:t för den virtuella dator som du lägger till som ett kaosmål. Ersätt $MANAGED_IDENTITY_RESOURCE_ID med resurs-ID för den användartilldelade hanterade identiteten.

Virtuell maskin

az vm identity assign --ids $VM_RESOURCE_ID --identities $MANAGED_IDENTITY_RESOURCE_ID

Skaluppsättning för virtuella datorer

az vmss identity assign --ids $VMSS_RESOURCE_ID --identities $MANAGED_IDENTITY_RESOURCE_ID

Aktivera Chaos Studio på den virtuella datorn

Chaos Studio kan inte injicera fel på en virtuell dator om inte den virtuella datorn först har lagts till i Chaos Studio. Om du vill lägga till en virtuell dator i Chaos Studio skapar du ett mål och funktioner för resursen. Därefter installerar du kaosagenten.

Virtuella datorer har två måltyper. En måltyp möjliggör tjänstdirigeringsfel (där ingen agent krävs). Den andra måltypen aktiverar agentbaserade fel (vilket kräver installation av en agent). Chaos-agenten är ett program som är installerat på den virtuella datorn som ett VM-tillägg. Du använder den för att mata in fel i gästoperativsystemet.

Aktivera kaosmålet och funktionerna

Konfigurera sedan ett Microsoft Agent-mål på varje virtuell dator (VM) eller VM-skalningsuppsättning som anger vilken användartilldelad hanterad identitet agenten använder för att ansluta till Chaos Studio. I det här exemplet använder vi en hanterad identitet för alla virtuella datorer. Ett mål måste skapas via REST API. I det här exemplet använder az rest vi CLI-kommandot för att köra REST API-anropen.

  1. Ändra följande JSON genom att ersätta $USER_IDENTITY_CLIENT_ID med klient-ID:t för din hanterade identitet. Du hittar klient-ID:t i Azure Portal översikt över den användartilldelade hanterade identitet som du skapade. Ersätt $USER_IDENTITY_TENANT_ID med ditt Azure-klient-ID. Du hittar den i Azure-portalen under Microsoft Entra-ID under Klientinformation. Spara JSON som en fil på samma plats där du kör Azure CLI. I Cloud Shell kan du dra och släppa JSON-filen för att ladda upp den.

    {
      "properties": {
        "identities": [
          {
            "clientId": "$USER_IDENTITY_CLIENT_ID",
            "tenantId": "$USER_IDENTITY_TENANT_ID",
            "type": "AzureManagedIdentity"
          }
        ]
      }
    }
    
  2. Skapa målet genom att ersätta $RESOURCE_ID med resurs-ID:t för mål-VM:n eller den virtuella datorskalningsuppsättningen. Ersätt target.json med namnet på JSON-filen som du skapade i föregående steg.

    az rest --method put --uri https://management.azure.com/$RESOURCE_ID/providers/Microsoft.Chaos/targets/Microsoft-Agent?api-version=2023-11-01 --body @target.json --query properties.agentProfileId -o tsv
    

    Om du får ett PowerShell-parsningsfel växlar du till en Bash-terminal som rekommenderas för den här självstudien eller omger den refererade JSON-filen med enkla citattecken (--body '@target.json').

  3. Kopiera ned GUID för agentProfileId som returneras av det här kommandot för användning i ett senare steg.

  4. Skapa funktionerna genom att ersätta $RESOURCE_ID med resurs-ID:t för mål-VM:n eller skalningsuppsättningen för virtuella datorer. Ersätt $CAPABILITY med namnet på den felfunktion som du aktiverar (till exempel CPUPressure-1.0).

    az rest --method put --url "https://management.azure.com/$RESOURCE_ID/providers/Microsoft.Chaos/targets/Microsoft-Agent/capabilities/$CAPABILITY?api-version=2023-11-01" --body "{\"properties\":{}}"
    

    Om du till exempel aktiverar processorbelastningsfunktionen:

    az rest --method put --url "https://management.azure.com/subscriptions/b65f2fec-d6b2-4edd-817e-9339d8c01dc4/resourceGroups/myRG/providers/Microsoft.Compute/virtualMachines/myVM/providers/Microsoft.Chaos/targets/Microsoft-Agent/capabilities/CPUPressure-1.0?api-version=2023-11-01" --body "{\"properties\":{}}"
    

Installera tillägget för den virtuella datorn Chaos Studio

Kaosagenten är en applikation som körs på din VM eller på instanser i en VM-skalningsuppsättning för att utföra agentbaserade fel. Under installationen konfigurerar du:

  • Agenten med den hanterade identitet som agenten ska använda för att autentisera sig mot Chaos Studio.
  • Profil-ID för det Microsoft-Agent-mål som du skapade.
  • Du kan också använda en Application Insights-instrumentationsnyckel som gör att agenten kan skicka diagnostikhändelser till Application Insights.
  1. Kontrollera att du har följande information innan du börjar:

    • agentProfileId: Egenskapen som returnerades när du skapade målet. Om du inte har den här egenskapen kan du köra az rest --method get --uri https://management.azure.com/$RESOURCE_ID/providers/Microsoft.Chaos/targets/Microsoft-Agent?api-version=2023-11-01 och kopiera egenskapen agentProfileId .
    • ClientId: Klient-ID för den användartilldelade hanterade identiteten som används i målet. Om du inte har den här egenskapen kan du köra az rest --method get --uri https://management.azure.com/$RESOURCE_ID/providers/Microsoft.Chaos/targets/Microsoft-Agent?api-version=2023-11-01 och kopiera egenskapen clientId .
    • (Valfritt) AppInsightsKey: Instrumentationsnyckeln för din Application Insights-komponent, som du hittar på sidan Application Insights i portalen under Essentials.
  2. Installera Chaos Studio VM-tillägget. Ersätt $VM_RESOURCE_ID med resurs-ID:t för den virtuella datorn eller ersätt $SUBSCRIPTION_ID, $RESOURCE_GROUPoch $VMSS_NAME med dessa egenskaper för vm-skalningsuppsättningen. Ersätt $AGENT_PROFILE_ID med agentens profil-ID. Ersätt $USER_IDENTITY_CLIENT_ID med klient-ID:t för din hanterade identitet. Ersätt $APP_INSIGHTS_KEY med instrumentationsnyckeln för Application Insights. Om du inte använder Application Insights tar du bort nyckel/värde-paret.

    Fullständig lista över standardkonfigurationen för agenttillägg för virtuella datorer

    Här är den minimikonfiguration för agentens VM-tillägg som användaren kräver:

    {
        "profile": "$AGENT_PROFILE_ID",
        "auth.msi.clientid": "$USER_IDENTITY_CLIENT_ID"
    }
    

    Här är alla värdena för agentens VM-tilläggskonfiguration

     {
        "profile": "$AGENT_PROFILE_ID",
        "auth.msi.clientid": "$USER_IDENTITY_CLIENT_ID",
        "appinsightskey": "$APP_INSIGHTS_KEY",
        "overrides": {
            "region": string, default to be null
            "logLevel": {
                "default" : string , default to be Information
                },
            "checkCertRevocation": boolean, default to be false.
        }
    }
    

    Installera agenten på en virtuell dator

    Windows

    az vm extension set --ids $VM_RESOURCE_ID --name ChaosWindowsAgent --publisher Microsoft.Azure.Chaos --version 1.1 --settings '{"profile": "$AGENT_PROFILE_ID", "auth.msi.clientid":"$USER_IDENTITY_CLIENT_ID", "appinsightskey":"$APP_INSIGHTS_KEY","Overrides":{"CheckCertRevocation":true}}'
    

    Linux

    az vm extension set --ids $VM_RESOURCE_ID --name ChaosLinuxAgent --publisher Microsoft.Azure.Chaos --version 1.0 --settings '{"profile": "$AGENT_PROFILE_ID", "auth.msi.clientid":"$USER_IDENTITY_CLIENT_ID", "appinsightskey":"$APP_INSIGHTS_KEY","Overrides":{"CheckCertRevocation":true}}'
    

    Installera agenten på en skaluppsättning för virtuella datorer

    Windows

    az vmss extension set --subscription $SUBSCRIPTION_ID --resource-group $RESOURCE_GROUP --vmss-name $VMSS_NAME --name ChaosWindowsAgent --publisher Microsoft.Azure.Chaos --version 1.1 --settings '{"profile": "$AGENT_PROFILE_ID", "auth.msi.clientid":"$USER_IDENTITY_CLIENT_ID", "appinsightskey":"$APP_INSIGHTS_KEY","Overrides":{"CheckCertRevocation":true}}'
    

    Linux

    az vmss extension set --subscription $SUBSCRIPTION_ID --resource-group $RESOURCE_GROUP --vmss-name $VMSS_NAME --name ChaosLinuxAgent --publisher Microsoft.Azure.Chaos --version 1.0 --settings '{"profile": "$AGENT_PROFILE_ID", "auth.msi.clientid":"$USER_IDENTITY_CLIENT_ID", "appinsightskey":"$APP_INSIGHTS_KEY","Overrides":{"CheckCertRevocation":true}}'
    
  3. Om du konfigurerar en VM-skalningsuppsättning kontrollerar du att instanserna har uppgraderats till den senaste modellen. Om det behövs uppgraderar du alla instanser i modellen.

    az vmss update-instances -g $RESOURCE_GROUP -n $VMSS_NAME --instance-ids *
    

Skapa ett experiment

När du har distribuerat den virtuella datorn kan du nu skapa experimentet. Ett kaosexperiment definierar de åtgärder som du vill vidta mot målresurser. Åtgärderna organiseras och körs i sekventiella steg. Kaosexperimentet definierar också de åtgärder som du vill vidta mot grenar som körs parallellt.

  1. Formulera JSON för experimentet utifrån följande JSON-exempel. Ändra JSON så att det motsvarar det experiment som du vill köra med hjälp av API:et Skapa experiment och felbiblioteket.

    {
      "identity": {
        "type": "SystemAssigned"
      },
      "location": "centralus",
      "properties": {
        "selectors": [
          {
            "id": "Selector1",
            "targets": [
              {
                "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myRG/providers/Microsoft.Compute/virtualMachines/myWindowsVM/providers/Microsoft.Chaos/targets/Microsoft-Agent",
                "type": "ChaosTarget"
              },
              {
                "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myRG/providers/Microsoft.Compute/virtualMachines/myLinuxVM/providers/Microsoft.Chaos/targets/Microsoft-Agent",
                "type": "ChaosTarget"
              }
            ],
            "type": "List"
          }
        ],
        "steps": [
          {
            "branches": [
              {
                "actions": [
                  {
                    "duration": "PT10M",
                    "name": "urn:csci:microsoft:agent:cpuPressure/1.0",
                    "parameters": [
                      {
                        "key": "pressureLevel",
                        "value": "95"
                      }
                    ],
                    "selectorId": "Selector1",
                    "type": "continuous"
                  }
                ],
                "name": "Branch 1"
              }
            ],
            "name": "Step 1"
          }
        ]
      }
    }
    

    Om du kör mot en skalningsuppsättning för virtuella datorer ändrar du felparametrarna så att de instansnummer som ska användas som mål inkluderas:

    "parameters": [
      {
        "key": "pressureLevel",
        "value": "95"
      },
      {
        "key": "virtualMachineScaleSetInstances",
        "value": "[0,1,2]"
      }
    ]
    

    Du kan identifiera instansnumren i en skalningsuppsättning i Azure-portalen genom att gå till din skalningsuppsättning för virtuella datorer och välja Instanser. Instansnamnet slutar med instansnumret.

  2. Skapa experimentet med hjälp av Azure CLI. Ersätt $SUBSCRIPTION_ID, $RESOURCE_GROUPoch $EXPERIMENT_NAME med egenskaperna för experimentet. Kontrollera att du har sparat och laddat upp experimentets JSON. Uppdatera experiment.json med ditt JSON-filnamn.

    az rest --method put --uri https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.Chaos/experiments/$EXPERIMENT_NAME?api-version=2023-11-01 --body @experiment.json
    

    Varje experiment skapar en motsvarande systemtilldelad hanterad identitet. Observera huvud-ID:t för den här identiteten i svaret för nästa steg.

Ge experimentet åtkomst till din virtuella dator

När du skapar ett kaosexperiment skapar Chaos Studio en systemtilldelad hanterad identitet som kör felinjektioner på dina målresurser. Den här identiteten måste ges lämpliga behörigheter till målresursen för att experimentet ska kunna köras. Rollen Läsare krävs för agentbaserade fel. Andra roller som inte har */Läs-behörighet, till exempel Virtuell datordeltagare, beviljar inte lämplig behörighet för agentbaserade fel.

Ge experimentet åtkomst till din virtuella dator eller VM-skalningsuppsättning med följande kommando. Ersätt $EXPERIMENT_PRINCIPAL_ID med huvud-ID:t från föregående steg. Ersätt $RESOURCE_ID med resurs-ID:t för den virtuella måldatorn eller vm-skalningsuppsättningen. Se till att använda resurs-ID:t för den virtuella datorn, inte resurs-ID:t för kaosagenten som används i experimentdefinitionen. Kör det här kommandot för varje VM eller VM-skalningsuppsättning som ingår i ditt experiment.

az role assignment create --role "Reader" --assignee-principal-type "ServicePrincipal" --assignee-object-id $EXPERIMENT_PRINCIPAL_ID --scope $RESOURCE_ID 

Kör experimentet

Nu är du redo att köra experimentet. För att se effekten rekommenderar vi att du öppnar ett Azure Monitor-måttdiagram med den virtuella datorns CPU-tryck på en separat webbläsarflik.

  1. Starta experimentet med hjälp av Azure CLI. Ersätt $SUBSCRIPTION_ID, $RESOURCE_GROUPoch $EXPERIMENT_NAME med egenskaperna för experimentet.

    az rest --method post --uri https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.Chaos/experiments/$EXPERIMENT_NAME/start?api-version=2023-11-01
    
  2. Svaret innehåller en status-URL som du kan använda för att fråga experimentstatus när experimentet körs.

Nästa steg

Nu när du har kört ett agentbaserat experiment är du redo att: