Dela via


Skapa ett kaosexperiment som använder ett agentbaserat fel med Azure CLI

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 dig mot ett program från att bli resurssvulten.

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 tjänstdirigeringsfel körs direkt mot en Azure-resurs utan instrumentation.

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 det övre högra hörnet i ett kodblock. 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. az vm identity assign Använd kommandot elleraz 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 mata in fel mot en virtuell dator om inte den virtuella datorn lades till i Chaos Studio först. Om du vill lägga till en virtuell dator i Chaos Studio skapar du ett mål och funktioner för resursen. Sedan 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 VM eller vm-skalningsuppsättning som anger den användartilldelade hanterade identitet som 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 med klient-ID $USER_IDENTITY_CLIENT_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 Portal under Microsoft Entra-ID under Klientorganisationsinformation. 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 med resurs-ID $RESOURCE_ID :t för den virtuella måldatorn eller vm-skalningsuppsä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 med resurs-ID $RESOURCE_ID :t för den virtuella måldatorn eller vm-skalningsuppsättningen. 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 ett program som körs i vm- eller vm-skalningsuppsättningsinstanser för att köra agentbaserade fel. Under installationen konfigurerar du:

  • Agenten med den hanterade identitet som agenten ska använda för att autentisera till 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 minsta konfiguration av vm-tillägget för agenten som krävs av användaren:

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

    Här är alla värden för konfiguration av vm-tillägg för agent

     {
        "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 VM-skalningsuppsättning

    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 experimentets JSON med början i 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 VM-skalningsuppsättning ändrar du felparametrarna så att instansnumren inkluderas som mål:

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

    Du kan identifiera instansnummer för skalningsuppsättningar i Azure Portal genom att gå till vm-skalningsuppsättningen 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 behörighet till den virtuella datorn

När du skapar ett kaosexperiment skapar Chaos Studio en systemtilldelad hanterad identitet som kör fel mot 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 den virtuella datorn eller vm-skalningsuppsättningen med hjälp av 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 är mål för experimentet.

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: