Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Администраторы парка могут отслеживать состояние длительных обновлений, настраивая оповещения в Azure Monitor. Изменения ресурсов запуска обновления парка передаются в Azure Resource Graph, что позволяет администраторам настраивать оповещения и автоматизацию с помощью Azure Monitor и Log Analytics.
Данные о выполнении обновлений вручную или автоматически хранятся в Azure Resource Graph, что дает администраторам возможность запрашивать данные на основе имени парка, статуса выполнения обновления, этапов обновления и имени кластера.
Независимо от того, в какой подписке Azure или регионе находятся кластеры участников парка, данные запуска обновления всегда находятся в Графе ресурсов Azure подписки Azure для ресурса Fleet Manager.
Чтобы запросить данные запуска обновления, необходимо использовать запросы, написанные с помощью языка запросов Kusto (KQL).
Понимание данных о выполнении обновлений в Azure Resource Graph
Чтобы узнать, как работать с Azure Resource Graph и данными о выполнении обновлений флота, давайте использовать обозреватель Azure Resource Graph для запроса этих данных.
Начните с открытия обозревателя Azure Resource Graph на портале Azure.
Выберите таблицу и разверните aksresources. Ресурсы диспетчера флота имеют префикс
microsoft.containerservice/fleets.В области таблиц выберите aksresources , чтобы добавить его в поле запроса обозревателя.
Теперь выберите microsoft.containerservices/fleets/updateruns. Поле запроса в обозревателе должно соответствовать следующему примеру KQL.
aksresources | where type == "microsoft.containerservice/fleets/updateruns"Выполните запрос, чтобы получить все данные выполнения обновления, содержащиеся в Azure Resource Graph для текущей подписки Azure. Данные запуска обновления хранятся в виде объекта JSON в
propertiesполе результата. Пример этого объекта можно просмотреть далее в этой статье.
Фильтрация по экземпляру Диспетчера флота
При создании запроса Kusto к Azure Resource Graph можно использовать следующий пример запроса в качестве руководства по выбору только запусков обновлений, связанных с определенным ресурсом Fleet Manager.
Вы можете добавить фильтр вручную в запрос обозревателя, чтобы выбрать экземпляр Fleet Manager следующим образом.
В запросе проводника вручную добавьте дополнительное условие WHERE, заменив заполнитель
your-fleet-nameименем вашего диспетчера флота.aksresources | where type == "microsoft.containerservice/fleets/updateruns" | where id contains ('Microsoft.ContainerService/fleets/your-fleet-name')Запустите запрос, чтобы просмотреть результирующий набор, который включает только сеансы обновления для указанного менеджера парка.
Фильтрация по состоянию выполнения обновления
Теперь, когда вы знаете, как найти процессы обновления, связанные с менеджером автопарка, можно добавить дополнительные фильтры, чтобы результаты были основаны на состоянии обновления.
Обновите запрос обозревателя, развернув сначала узел
microsoft.containerservice/fleets/updateruns, затемstatusиstatus.Выберите
state, чтобы свойство было добавлено в запрос обозревателя.Запрос в проводнике должен быть похож на следующий пример.
aksresources | where type == "microsoft.containerservice/fleets/updateruns" | where id contains ('Microsoft.ContainerService/fleets/your-fleet-name') | where properties['status']['status']['state'] == "INSERT_VALUE_HERE"Замените
INSERT_VALUE_HEREзаполнитель соответствующим значением состояния выполнения обновления. Например, чтобы получить только неудачные запуски обновлений, задайте значениеFailed.Запустите запрос, и вы получите только запуски обновления для диспетчера флота с соответствующим состоянием.
Расширенная фильтрация
Обозреватель Azure Resource Graph предлагает простой способ начать изучение данных о запусках обновлений.
Следующие расширенные параметры запросов Kusto упрощают использование дополнительных свойств выполнения обновления при создании оповещений.
- mv-expand можно использовать для распаковки этапов, групп и кластеров участников в записи процесса обновления.
- json_parse можно использовать для упрощения ссылки на объекты JSON без использования вложенных массивов.
В следующем примере запроса можно определить, какой кластер-член в группе canary на этапе prod завершился сбоем. Если ни один кластер в этой группе или этапе не вышел из строя, то строки не возвращаются.
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
Создание оповещений
Теперь, когда вы понимаете доступные данные Azure Resource Graph, можно использовать правила генерации оповещений Azure Monitor с поиском по журналам, чтобы определить, когда вы хотите получать оповещения.
Начните с открытия колонки Azure Monitor на портале Azure.
Выберите оповещения в области навигации слева, а затем + Создать, а затем правило генерации оповещений.
На экране "Создание правила генерации оповещений " выберите +Выбрать область и в колонке "Выбор ресурса " перейдите к ресурсу Fleet Manager, выбрав подписку Azure и группу ресурсов, в которой она находится.
Перейдите на вкладку Условие и в раскрывающемся списке имени сигнала выберите Пользовательский поиск по журналам. Панель "Журналы" загружается на правой стороне экрана.
В панели Журналы введите запрос Resource Graph, который вы хотите использовать для создания оповещения. В нашем примере мы оповещаем о любом неудачном запуске обновления и включаем время его начала.
Замечание
Для запросов поиска по журналам Azure Monitor необходимо добавить префикс к таблице
aksresourcesс помощьюarg("").. Оставшийся синтаксис не отличается от синтаксиса запросов, использованных ранее в этой статье.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После того как вас устроят результаты, возвращаемые запросом, выберите "Продолжить редактирование оповещения", чтобы закрыть панель "Журналы". Запрос автоматически вставляется в поле запроса поиска . При желании вы можете продолжить его редактирование.
Прокрутите вниз, пока не увидите логику оповещения, используя поле формы для определения условий, которые необходимо активировать оповещение. Рекомендуется использовать статическое пороговое значение, задав значение 0, а оператор — "Больше". Настройте частоту в соответствии с предпочитаемым периодом времени.
Нажмите Далее: Действия> или выберите вкладку Действия, чтобы определить действия, выполняемые при совпадении логики оповещения. Вы можете выбрать ряд каналов и параметров интеграции, которые подробно описаны в документации по группам действий Azure Monitor.
Чтобы сохранить правило генерации оповещений, перейдите на вкладку "Сведения " и выберите соответствующую группу ресурсов и подписки Azure. Задайте сведения для правила генерации оповещений, выбрав серьезность, указав имя правила генерации оповещений, необязательное описание, а затем выберите регион Azure , чтобы сохранить оповещение. Наконец, задайте идентификатор, который вы хотите использовать для выполнения запроса журнала.
Перейдите на вкладку "Теги" , чтобы добавить все нужные теги, прежде чем выбрать "Просмотр и создание ", чтобы создать новое правило генерации оповещений.
При следующем активации правила генерации оповещений выбранные группы оповещений будут активированы, а выбранные уведомления и интеграции будут вызваны.
Результат выполнения образца обновления с свойствами JSON
Следующий пример представляет данные полезной properties нагрузки, которые хранятся в Azure Resource Graph для каждого запуска обновления. Эту структуру можно использовать для того, чтобы направлять процесс создания запросов для оповещений или при построении панелей мониторинга.
{
"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"
}
]
}
]
}
}