Dela via


Konfigurera övervakning och aviseringar för uppdateringskörningar för Azure Kubernetes Fleet Manager

Fleet-administratörer kan övervaka statusen för långvariga uppdateringskörningar genom att konfigurera aviseringar i Azure Monitor. Uppdateringskörningsresursändringar matas in i Azure Resource Graph, vilket gör det möjligt för administratörer att konfigurera aviseringar och automatiseringar via Azure Monitor och Log Analytics.

Data om manuella eller automatiska uppgraderingsuppdateringskörningar lagras i Azure Resource Graph, vilket ger administratörer möjlighet att fråga baserat på Fleet-namn, uppdateringskörningsstatus, uppdateringssteg och klusternamn.

Oavsett vilken Azure-prenumeration eller region din flottas medlemskluster finns i finns uppdateringskörningsdata alltid i Azure Resource Graph för Azure-prenumerationen för Fleet Manager-resursen.

För att kunna köra frågor mot dina uppdateringskörningsdata måste du använda frågor som skrivits med KQL (Kusto Query Language).

Förstå uppdateringskörningsdata i Azure Resource Graph

Om du vill lära dig hur du arbetar med Azure Resource Graph- och Fleet Update-körningsdata använder vi Azure Resource Graph Explorer för att fråga efter körningsdata för uppdateringar.

  1. Börja med att öppna Azure Resource Graph Explorer i Azure-portalen.

  2. Välj Tabell och expandera sedan aksresources. Fleet Managers resurser har prefixet microsoft.containerservice/fleets.

    Skärmbild av Azure Resource Graph Explorer med aksresources-tabellen expanderad.

  3. I fönstret Tabell väljer du aksresources för att lägga till den i utforskarens frågeruta.

  4. Välj nu microsoft.containerservices/fleets/updateruns. Din sökruta bör se ut som följande KQL-exempel.

    aksresources
    | where type == "microsoft.containerservice/fleets/updateruns"
    
  5. Kör frågan för att hämta alla uppdateringskörningsdata som finns i Azure Resource Graph för den aktuella Azure-prenumerationen. Uppdateringskörningsdata lagras som ett JSON-objekt i properties resultatets fält. Du kan visa ett exempel på det här objektet senare i den här artikeln.

Filtrera till en Fleet Manager-instans

När du skapar en Kusto-fråga mot Azure Resource Graph kan du använda följande exempelfråga som en guide om hur du endast väljer uppdateringskörningar som är associerade med en viss Fleet Manager-resurs.

Du kan lägga till ett manuellt filter i explorer-frågan för att välja din Fleet Manager-instans på följande sätt.

  1. I explorer-frågan där du lägger till ytterligare en where-sats manuellt och ersätter your-fleet-name-platshållaren med namnet på din Fleet Manager.

    aksresources
    | where type == "microsoft.containerservice/fleets/updateruns"
    | where id contains ('Microsoft.ContainerService/fleets/your-fleet-name')
    
  2. Kör frågan för att visa att resultatet endast innehåller uppdateringskörningar för den angivna Fleet Manager.

Filtrera efter status för uppdateringskörning

Nu när du vet hur du hittar uppdateringskörningar som är associerade med din Fleet Manager kan du lägga till ytterligare filter så att resultaten baseras på tillståndet för uppdateringskörningen.

  1. Uppdatera explorer-frågan genom att expandera microsoft.containerservice/fleets/updateruns-noden, därefter status och status.

  2. Välj state så att egenskapen läggs till i explorer-frågan.

    Skärmbild av att välja ett fält i en uppdateringskörning i Azure Resource Graph Explorer för att lägga till det i frågan.

    Explorer-frågan bör likna följande exempel.

    aksresources
    | where type == "microsoft.containerservice/fleets/updateruns"
    | where id contains ('Microsoft.ContainerService/fleets/your-fleet-name')
    | where properties['status']['status']['state'] == "INSERT_VALUE_HERE"
    
  3. Ersätt INSERT_VALUE_HERE-platshållaren med ett lämpligt värde för status för uppdateringskörning. Om du till exempel bara vill ta emot misslyckade uppdateringskörningar anger du det här värdet till Failed.

  4. Kör frågan så får du bara uppdateringskörningar för din Fleet Manager som har matchande status.

Avancerad filtrering

Azure Resource Graph Explorer är ett enkelt sätt att börja utforska data som du har om uppdateringskörningar.

Följande avancerade Kusto-frågealternativ gör det enklare att använda ytterligare uppdateringskörningsegenskaper när du skapar dina aviseringar.

  • mv-expand kan användas för att packa upp faser, grupper och medlemskluster i en uppdateringskörningspost.
  • json_parse kan användas för att göra det enklare att referera till JSON-objekt utan att använda kapslade matriser.

I följande exempelfråga kan vi avgöra vilket medlemskluster i canary gruppen i prod fasen som misslyckades. Om inget kluster i den här gruppen/fasen misslyckades returneras inga rader.

aksresources
| where type == "microsoft.containerservice/fleets/updateruns"
| where id contains ('Microsoft.ContainerService/fleets/your-fleet-name')
| extend parsedProperties = parse_json(properties)
| mv-expand stages = parsedProperties.status.stages
| mv-expand groups = stages.groups
| mv-expand members = groups.members
| where properties.status.status.state == "Failed"
| where stages.name == "prod" and groups.name == "canary" and members.status.state == "Failed"
| project stageName = stages.name, groupName = groups.name, memberName = members.name, memberState = members.status.state, memberStartTime = members.status.startTime

Skapa aviseringar

Nu när du förstår tillgängliga Azure Resource Graph-data kan du använda Azure Monitor-aviseringsregler med loggsökning för att definiera när du vill ta emot aviseringar.

  1. Börja med att öppna bladet Azure Monitor i Azure-portalen.

  2. Välj Aviseringar i det vänstra navigeringsfältet följt av + Skapa och sedan Aviseringsregel.

    Skärmbild av alternativet Aviseringsregel markerat på menyn Skapa för Azure Monitor-aviseringar.

  3. På skärmen Skapa en aviseringsregel väljer du + Välj omfång och på bladet Välj en resurs navigerar du till din Fleet Manager-resurs genom att välja den Azure-prenumeration och resursgrupp som den finns i.

    Skärmbild som visar valet av omfånget för att skapa en ny aviseringsregel.

  4. Välj fliken Villkor och välj Anpassad loggsökning i listan Signalnamn. Bladet Loggar läses in till höger på skärmen.

    Skärmbild som visar fliken Villkor öppnad och anpassad loggsökning vald i rullgardinsmenyn för signalnamn.

  5. På bladet Loggar anger du den Resource Graph-fråga som du vill använda för att utlösa en avisering. I vårt exempel aviserar vi om en misslyckad uppdateringskörning och inkluderar starttiden för uppdateringskörningen.

    Anmärkning

    För Azure Monitor-loggsökningsfrågor måste du prefixa aksresources tabellen med arg("").. Den återstående syntaxen ändras inte från de frågor som användes tidigare i den här artikeln.

    arg("").aksresources
    | where type == "microsoft.containerservice/fleets/updateruns"
    | where id contains ('Microsoft.ContainerService/fleets/your-fleet-name')
    | extend parsedProps = parse_json(properties)
    | where parsedProps.status.status.state == "Failed"
    | project id, startTime = parsedProps.status.status.startTime
    
  6. När du är nöjd med resultatet som returneras av frågan väljer du Fortsätt att redigera aviseringen för att stänga Loggar-bladet. Frågan infogas automatiskt i sökfrågerutan . Du kan fortsätta att redigera den här om du vill.

    Skärmbild som visar hur frågetexten infogas automatiskt i sökfrågerutan för skärmen Skapa aviseringsregel.

  7. Rulla nedåt tills du ser aviseringslogik med hjälp av formulärfältet för att definiera de kriterier som du vill utlösa aviseringen. Vi rekommenderar att du använder ett statiskt tröskelvärde, anger värdet till 0 och operatorntill Större än. Justera frekvensen efter önskad tidsperiod.

    Skärmbild som visar hur du ställer in aviseringslogik till Större än 0 med en kontroll var femte minut.

  8. Välj Nästa: Åtgärder > eller fliken Åtgärder för att definiera vilka åtgärder som ska utföras när aviseringslogik matchas. Du kan välja en rad kanaler och integreringsalternativ som beskrivs i detalj i dokumentationen för Azure Monitor-åtgärdsgrupper.

  9. Spara aviseringsregeln genom att välja fliken Information och välja en lämplig Azure-prenumeration och resursgrupp. Ange information om aviseringsregeln genom att välja allvarlighetsgrad, ange ett aviseringsregelnamn, valfri beskrivning och välj sedan den Azure-region som aviseringen ska sparas i. Ange slutligen den identitet som du vill använda för att köra loggfrågan.

    Skärmbild som visar hur du sparar en aviseringsregel i en resursgrupp när aviseringsnivån och namnet anges.

  10. Välj fliken Taggar för att lägga till eventuella taggar du vill ha innan du väljer Granska + skapa för att skapa den nya aviseringsregeln.

Nästa gång aviseringsregeln utlöses aktiveras de valda aviseringsgrupperna och dina valda meddelanden och integreringar anropas.

Exempel på JSON-egenskapsresultat för uppdateringskörning

Följande exempel representerar nyttolasten properties som finns i Azure Resource Graph för varje uppdateringskörning. Du kan använda den här strukturen för att informera om hur du skapar aviseringsfrågor eller instrumentpaneler.

{
    "status": {
        "status": {
            "state": "Pending",
            "startTime": "2025-03-05T13:17:18.277945575Z"
        },
        "nodeImageSelection": {
            "selectedNodeImageVersions": [
                {
                    "version": "AKSAzureLinux-V2gen2-202502.26.0"
                },
                {
                    "version": "AKSWindows-2022-containerd-20348.3207.250214"
                }
            ]
        },
        "stages": [
            {
                "status": {
                    "state": "Pending",
                    "startTime": "2025-03-05T13:17:19.51815878Z"
                },
                "name": "prod",
                "groups": [
                    {
                        "status": {
                            "completedTime": "2025-03-05T13:48:59.049364234Z",
                            "state": "Completed",
                            "startTime": "2025-03-05T13:17:19.51815818Z"
                        },
                        "name": "canary",
                        "members": [
                            {
                                "clusterResourceId": "/subscriptions/a22dfd3c-4a99-4d5a-9e2f-70ba55d59fbe/resourceGroups/rg-contoso-demo-01/providers/Microsoft.ContainerService/managedClusters/consoto-web-01",
                                "status": {
                                    "completedTime": "2025-03-05T13:31:09.441388843Z",
                                    "state": "Completed",
                                    "startTime": "2025-03-05T13:17:19.51815698Z"
                                },
                                "name": "member-consoto-web-01",
                                "operationId": "b046b73e-8827-45a7-8696-d1da0815941b",
                                "message": "Skipped upgrade of following agent pool(s): current node image version \"AKSWindows-2022-containerd-20348.3207.250214\" of agent pool \"win\" is already at or ahead of target upgrade version \"AKSWindows-2022-containerd-20348.3207.250214\"."
                            },
                            {
                                "clusterResourceId": "/subscriptions/3a22dfd3c-4a99-4d5a-9e2f-70ba55d59fbe/resourceGroups/rg-contoso-demo-01/providers/Microsoft.ContainerService/managedClusters/consoto-web-02",
                                "status": {
                                    "completedTime": "2025-03-05T13:48:59.049364234Z",
                                    "state": "Completed",
                                    "startTime": "2025-03-05T13:31:09.495402941Z"
                                },
                                "name": "member-consoto-web-02",
                                "operationId": "759816e9-d924-4ff4-a992-97aac2a2dddb"
                            }
                        ]
                    },
                    {
                        "status": {
                            "state": "Pending",
                            "startTime": "2025-03-05T13:17:19.51826128Z"
                        },
                        "name": "apac",
                        "members": [
                            {
                                "clusterResourceId": "/subscriptions/fe691fe1-d1ce-43b9-869a-73c4a14cdafc/resourceGroups/rg-contoso-demo-02/providers/Microsoft.ContainerService/managedClusters/consoto-app-01",
                                "status": {
                                    "state": "Pending",
                                    "startTime": "2025-03-05T13:17:19.51826048Z",
                                    "error": {
                                        "message": "target upgrade node image version \"AKSAzureLinux-V2gen2-202502.26.0\" for agent pool pool is not available in region \"australiaeast\" \n",
                                        "code": "NodeImageVersionNotAvailable"
                                    }
                                },
                                "name": "member-consoto-app-01",
                                "message": "set member: member-consoto-app-01 to Pending due to failed validation err: target upgrade node image version \"AKSAzureLinux-V2gen2-202502.26.0\" for agent pool pool is not available in region \"australiaeast\" \n"
                            }
                        ]
                    },
                    {
                        "status": {
                            "state": "Pending",
                            "startTime": "2025-03-05T13:17:19.518346681Z"
                        },
                        "name": "europe",
                        "members": [
                            {
                                "clusterResourceId": "/subscriptions/fe691fe1-d1ce-43b9-869a-73c4a14cdafc/resourceGroups/rg-contoso-demo-03/providers/Microsoft.ContainerService/managedClusters/contoso-db-01",
                                "status": {
                                    "state": "Pending",
                                    "startTime": "2025-03-05T13:17:19.518345781Z",
                                    "error": {
                                        "message": "target upgrade node image version \"AKSAzureLinux-V2gen2-202502.26.0\" for agent pool pool is not available in region \"northeurope\" \n",
                                        "code": "NodeImageVersionNotAvailable"
                                    }
                                },
                                "name": "member-contoso-db-01",
                                "message": "set member: member-contoso-db-01 to Pending due to failed validation err: target upgrade node image version \"AKSAzureLinux-V2gen2-202502.26.0\" for agent pool pool is not available in region \"northeurope\" \n"
                            }
                        ]
                    }
                ]
            }
        ]
    },
    "provisioningState": "Succeeded",
    "managedClusterUpdate": {
        "nodeImageSelection": {
            "customNodeImageVersions": [
                {
                    "version": "AKSAzureLinux-V2-202502.26.0"
                },
                {
                    "version": "AKSWindows-23H2-gen2-25398.1425.250214"
                }
            ],
            "type": "Custom"
        },
        "upgrade": {
            "type": "NodeImageOnly"
        }
    },
    "updateStrategyId": "/subscriptions/00a3c596-fcb8-43ec-bf56-a2d19b4d3663/resourceGroups/flt-contoso-demo/providers/Microsoft.ContainerService/fleets/contoso-fleet-01/updateStrategies/safedeployment",
    "strategy": {
        "stages": [
            {
                "name": "prod",
                "afterStageWaitInSeconds": 0,
                "groups": [
                    {
                        "name": "canary"
                    },
                    {
                        "name": "apac"
                    },
                    {
                        "name": "europe"
                    }
                ]
            }
        ]
    }
}