Мониторинг Служба Azure Kubernetes (AKS)

При наличии критически важных приложений и бизнес-процессов, использующих ресурсы Azure, необходимо отслеживать эти ресурсы на предмет их доступности, производительности и работы. В этой статье описываются данные мониторинга, созданные AKS и проанализированные с помощью Azure Monitor. Если вы плохо знакомы с функциями Azure Monitor, которые используются для всех совместимых служб Azure, прочитайте статью Мониторинг ресурсов Azure с помощью Azure Monitor.

Важно!

Kubernetes — это сложная распределенная система со многими движущимися частями, поэтому требуется мониторинг на нескольких уровнях. Хотя AKS является управляемой службой Kubernetes, одна и та же строгость мониторинга на нескольких уровнях по-прежнему требуется. В этой статье содержатся общие сведения и рекомендации по мониторингу кластера AKS. Дополнительные сведения см. в следующих статьях.

Данные мониторинга

AKS создает те же типы данных мониторинга, что и другие ресурсы Azure, описанные в разделе "Мониторинг данных из ресурсов Azure". Дополнительные сведения о метриках и журналах, созданных AKS, см . в справочнике по данным мониторинга AKS. Другие службы и функции Azure собирают другие данные и обеспечивают другие параметры анализа, как показано на следующей схеме и таблице.

Diagram of collection of monitoring data from AKS.

Оригинал Description
Метрики платформы Метрики платформы автоматически собираются для кластеров AKS без затрат. Эти метрики можно проанализировать с помощью обозревателя метрик или использовать их для оповещений метрик.
Метрики Prometheus Если включить очистку метрик для кластера, метрики Prometheus собираются управляемой службой Azure Monitor для Prometheus и хранятся в рабочей области Azure Monitor. Анализируйте их с помощью предварительно созданных панелей мониторинга в Управляемой Grafana Azure и с помощью оповещений Prometheus.
Журналы действий Журнал действий собирается автоматически для кластеров AKS без затрат. Эти журналы отслеживают такие сведения, как при создании кластера или изменении конфигурации. Отправьте журнал действий в рабочую область Log Analytics, чтобы проанализировать ее с другими данными журнала.
Журналы ресурсов Журналы плоскости управления для AKS реализуются в виде журналов ресурсов. Создайте параметр диагностики для отправки их в рабочую область Log Analytics, где можно анализировать и оповещать их с помощью запросов журналов в Log Analytics.
Аналитика контейнеров Аналитика контейнеров собирает различные журналы и данные о производительности из кластера, включая потоки stdout/stderr, и сохраняет их в рабочей области Log Analytics и метриках Azure Monitor. Анализ этих данных с помощью представлений и книг, включенных в аналитику контейнеров или с помощью обозревателя метрик Log Analytics и метрик.

Обзорная страница мониторинга на портале Azure

Вкладка "Мониторинг" на странице "Обзор" позволяет быстро приступить к просмотру данных мониторинга в портал Azure для каждого кластера AKS. К ним относятся графы с общими метриками для кластера, разделенного пулом узлов. Щелкните любой из этих графов, чтобы дополнительно проанализировать данные в обозревателе метрик.

На странице обзора также содержатся ссылки на Управляемый Prometheus и аналитику контейнеров для текущего кластера. Если вы еще не включили эти средства, вам будет предложено сделать это. Вы также можете увидеть баннер в верхней части экрана, чтобы вы могли включить другие функции для улучшения мониторинга кластера.

Screenshot of AKS overview page.

Совет

Доступ к функциям мониторинга для всех кластеров AKS в подписке из меню "Мониторинг" в портал Azure или для одного кластера AKS из раздела "Монитор" меню служб Kubernetes.

Интеграции

Следующие службы и функции Azure Monitor можно использовать для дополнительного мониторинга кластеров Kubernetes. Эти функции можно включить во время создания кластера AKS на вкладке "Интеграция" в портал Azure, Azure CLI, Terraform, Политика Azure или подключить кластер к ним позже. Каждая из этих функций может повлечь за собой затраты, поэтому обратитесь к сведениям о ценах для каждого из них, прежде чем включить их.

Служба, компонент или функция Description
Аналитика контейнеров Использует контейнерную версию агента Azure Monitor для сбора журналов stdout/stderr и событий Kubernetes с каждого узла в кластере, поддерживая различные сценарии мониторинга для кластеров AKS. Мониторинг кластера AKS можно включить при создании с помощью Azure CLI, Политика Azure, портал Azure или Terraform. Если при создании кластера не включить аналитику контейнеров, см. статью "Включить аналитику контейнеров" для кластера Служба Azure Kubernetes (AKS), чтобы включить его.

Аналитика контейнеров хранит большую часть своих данных в рабочей области Log Analytics, и обычно используется та же рабочая область Log Analytics, что и журналы ресурсов для кластера. Ознакомьтесь с архитектурой рабочей области Log Analytics, чтобы узнать, сколько рабочих областей следует использовать и где их найти.
Управляемая служба Azure Monitor для Prometheus Prometheus — это облачное решение метрик из Cloud Native Compute Foundation и наиболее распространенное средство, используемое для сбора и анализа данных метрик из кластеров Kubernetes. Управляемая служба Azure Monitor для Prometheus — это полностью управляемое решение для мониторинга, совместимое с Prometheus в Azure. Если вы не включите управляемый Prometheus при создании кластера, ознакомьтесь с метриками Сбора метрик Prometheus из кластера AKS для других параметров, чтобы включить его.

Управляемая служба Azure Monitor для Prometheus хранит свои данные в рабочей области Azure Monitor, которая связана с рабочей областью Grafana, чтобы вы могли анализировать данные с помощью Управляемой Grafana Azure.
Управляемая Grafana Azure Полностью управляемая реализация Grafana, которая является платформой визуализации данных с открытым исходным кодом, обычно используемой для представления данных Prometheus. Для мониторинга Kubernetes и устранения неполадок с полным стеком доступны несколько предопределенных панелей мониторинга Grafana. Если вы не включите управляемый Grafana при создании кластера, см . сведения о связывании рабочей области Grafana с рабочей областью Azure Monitor, чтобы получить доступ к метрикам Prometheus для кластера.

Метрики

Метрики играют важную роль в мониторинге кластера, выявлении проблем и оптимизации производительности в кластерах AKS. Метрики платформы записываются с помощью сервера метрик, установленного в пространстве имен kube-system, которое периодически ломает метрики от всех узлов Kubernetes, обслуживаемых Kubelet. Кроме того, следует включить метрики Управляемого prometheus Azure для сбора метрик контейнеров и метрик объектов Kubernetes, таких как состояние объектов deployments. Сведения о сборе метрик Prometheus из кластера AKS для отправки данных в управляемую службу Azure для Prometheus.

Screenshot of enabling Managed Prometheus for existing cluster.

Журналы

Плоскость управления AKS или журналы ресурсов

Журналы плоскости управления для кластеров AKS реализуются в виде журналов ресурсов в Azure Monitor. Журналы ресурсов не собираются и хранятся, пока не создадите параметр диагностики для их маршрутизации в одно или несколько расположений. Обычно они отправляются в рабочую область Log Analytics, где хранятся большинство данных для аналитики контейнеров.

Дополнительные сведения о создании параметра диагностики см. в статье "Создание параметров диагностики" с помощью портал Azure, CLI или PowerShell. Создавая параметр диагностики, нужно указать, какие категории журналов должны собираться. Категории для AKS перечислены в справочнике по данным мониторинга AKS.

Важно!

При сборе журналов ресурсов для AKS может быть существенное значение, особенно для журналов аудита kube. Рассмотрим следующие рекомендации, чтобы уменьшить объем собранных данных:

  • Отключите ведение журнала аудита kube, если не требуется.
  • Включите коллекцию из kube-audit-admin, которая исключает события получения и вывода списка.
  • Включите журналы, относящиеся к ресурсам, как описано ниже, и настройте AKSAudit таблицу в качестве базовых журналов.

Дополнительные рекомендации и оптимизацию затрат см. в статье "Мониторинг кластеров Kubernetes" с помощью служб Azure и облачных средств для оптимизации затрат и Azure Monitor для дальнейшего сокращения затрат на мониторинг.

Screenshot of AKS diagnostic setting dialog box.

AKS поддерживает режим диагностика Azure или режим, зависящий от ресурса, для журналов ресурсов. Это указывает таблицы в рабочей области Log Analytics, в которой отправляются данные. Режим диагностика Azure отправляет все данные в таблицу AzureDiagnostics, а режим для конкретных ресурсов отправляет данные в AKS Audit, AKS Audit Администратор и плоскость управления AKS, как показано в таблице журналов ресурсов.

Для AKS рекомендуется использовать режим для конкретного ресурса по следующим причинам:

Дополнительные сведения о различиях между режимами сбора, включая изменение существующего параметра, см. в разделе "Выбор режима коллекции".

Примечание.

Возможность выбора режима сбора пока недоступна в портал Azure во всех регионах. Для тех регионов, где он еще недоступен, используйте ИНТЕРФЕЙС командной строки для создания параметра диагностики с помощью следующей команды:

az monitor diagnostic-settings create --name AKS-Diagnostics --resource /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myresourcegroup/providers/Microsoft.ContainerService/managedClusters/my-cluster --logs '[{""category"": ""kube-audit"",""enabled"": true}, {""category"": ""kube-audit-admin"", ""enabled"": true}, {""category"": ""kube-apiserver"", ""enabled"": true}, {""category"": ""kube-controller-manager"", ""enabled"": true}, {""category"": ""kube-scheduler"", ""enabled"": true}, {""category"": ""cluster-autoscaler"", ""enabled"": true}, {""category"": ""cloud-controller-manager"", ""enabled"": true}, {""category"": ""guard"", ""enabled"": true}, {""category"": ""csi-azuredisk-controller"", ""enabled"": true}, {""category"": ""csi-azurefile-controller"", ""enabled"": true}, {""category"": ""csi-snapshot-controller"", ""enabled"": true}]'  --workspace /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/myresourcegroup/providers/microsoft.operationalinsights/workspaces/myworkspace --export-to-resource-specific true

Пример запросов журнала

Важно!

При выборе журналов из меню кластера AKS log Analytics открывается с помощью запроса область задать текущий кластер. Это означает, что запросы к журналам будут содержать данные только из этого ресурса. Если вы хотите выполнить запрос, содержащий данные из других кластеров или данных из других служб Azure, выберите "Журналы" в меню Azure Monitor. Подробные сведения см. в статье Область запросов журнала и временной диапазон в Azure Monitor Log Analytics.

Если параметр диагностики для кластера использует режим azure диагностика, журналы ресурсов для AKS хранятся в таблице AzureDiagnostics. Вы можете отличить один журнал от другого по столбцу Категория. Описание каждой категории см. в справочнике по журналам ресурсов AKS.

Description Запрос журнала
Подсчет журналов для каждой категории
(Режим диагностика Azure)
AzureDiagnostics
| where ResourceType == "MANAGEDCLUSTERS"
| суммирование count() по категориям
Все журналы сервера API
(Режим диагностика Azure)
AzureDiagnostics
| Where Category == "kube-apiserver"
Все журналы аудита kube в диапазоне времени
(Режим диагностика Azure)
let starttime = datetime("2023-02-23");
let endtime = datetime("2023-02-24");
AzureDiagnostics
| where TimeGenerated между(starttime.). endtime)
| Where Category == "kube-audit"
| событие extend = parse_json(log_s)
| расширение HttpMethod = tostring(event.verb)
| extend User = tostring(event.user.username)
| расширение Apiserver = pod_s
| расширение SourceIP = tostring(event.sourceIPs[0])
| project TimeGenerated, Category, HttpMethod, User, Apiserver, SourceIP, OperationName, event
Все журналы аудита
(режим, зависящий от ресурса)
AKSAudit
Все журналы аудита, за исключением событий аудита получения и списка
(режим, зависящий от ресурса)
AKSAudit Администратор
Все журналы сервера API
(режим, зависящий от ресурса)
AKSControlPlane
| Where Category == "kube-apiserver"

Чтобы получить доступ к набору предварительно созданных запросов в рабочей области Log Analytics, ознакомьтесь с интерфейсом запросов Log Analytics и выберите тип ресурсов Kubernetes Services. Список распространенных запросов для аналитики контейнеров см . в разделе "Запросы аналитики контейнеров".

Плоскость данных AKS или журналы Аналитика контейнеров

Контейнер Аналитика собирать различные типы данных телеметрии из контейнеров и кластеров Kubernetes, чтобы помочь вам отслеживать, устранять неполадки и получать аналитические сведения о контейнерных приложениях, работающих в кластерах AKS. Список таблиц с подробными описаниями, используемыми службой аналитики контейнеров, представлен в справочнике по таблицам Azure Monitor. Все эти таблицы доступны для запросов журналов.

Параметры оптимизации затрат позволяют настраивать и управлять данными метрик, собранными с помощью агента аналитики контейнеров. Эта функция поддерживает параметры сбора данных для выбора отдельных таблиц, интервалов сбора данных и пространств имен, чтобы исключить сбор данных с помощью правил сбора данных Azure Monitor (DCR). Эти параметры управляют объемом приема и сокращают затраты на мониторинг аналитических сведений о контейнерах. Собранные данные аналитики контейнеров можно настроить с помощью портал Azure, используя следующие параметры. Выбор любых параметров, отличных от всех (по умолчанию), приводит к тому, что аналитика контейнеров становится недоступной.

Группировка Таблицы Примечания.
Все (по умолчанию) Все стандартные таблицы аналитики контейнеров Требуется для включения визуализаций аналитики контейнеров по умолчанию
Производительность Perf, Аналитика Metrics
Журналы и события ContainerLog или ContainerLogV2, KubeEvents, KubePodInventory Рекомендуется, если вы включили управляемые метрики Prometheus
Рабочие нагрузки, развертывания и hpAs Аналитика Метрики, KubePodInventory, KubeEvents, ContainerInventory, ContainerNodeInventory, KubeNodeInventory, KubeServices
Постоянные тома Аналитика Метрики, KubePVInventory

Screenshot of AKS data plane logs collection configuration page.

Журналы и события группирования записывают журналы из таблиц ContainerLog или ContainerLogV2, KubeEvents, KubePodInventory, но не метрик. Рекомендуемый путь для сбора метрик — включить Управляемые службы Azure Monitor Prometheus для Prometheus из кластера AKS и использовать Azure Managed Grafana для визуализации данных. Дополнительные сведения см. в статье "Управление рабочей областью Azure Monitor".

Схема ContainerLogV2

Контейнер Azure Monitor Аналитика предоставляет схему для журналов контейнеров, известных как ContainerLogV2. Это рекомендуемый вариант. Этот формат включает следующие поля для упрощения распространенных запросов для просмотра данных, связанных с кластерами AKS и Kubernetes с поддержкой Azure Arc:

  • ContainerName
  • PodName
  • PodNamespace

Кроме того, эта схема совместима с планом данных "Базовые журналы ", который предлагает низкую стоимость для стандартных журналов аналитики. План данных журнала "Базовый" позволяет сэкономить на стоимости приема и хранения подробных журналов большого объема в рабочей области Log Analytics для отладки, устранения неполадок и аудита, но не для аналитики и оповещений. Дополнительные сведения см. в разделе "Управление таблицами" в рабочей области Log Analytics. ContainerLogV2 — это рекомендуемый подход и является схемой по умолчанию для клиентов, использующих аналитику контейнеров с помощью проверки подлинности управляемых удостоверений с помощью ARM, Bicep, Terraform, Policy и портал Azure. Дополнительные сведения о включении ContainerLogV2 с помощью правила сбора данных кластера (DCR) или ConfigMap см. в разделе "Включить схему ContainerLogV2".

Визуализация

Визуализация данных — это важная концепция, которая упрощает использование собранных сведений для системных администраторов и операционных инженеров. Вместо просмотра необработанных данных они могут использовать визуальные представления, которые быстро отображают данные и показывают тенденции, которые могут быть скрыты при просмотре необработанных данных. Для визуализации данных можно использовать панели мониторинга Grafana или собственные книги Azure.

Управление Azure для Grafana

Наиболее распространенным способом анализа и представления данных Prometheus является панель мониторинга Grafana. Управляемый Grafana Azure включает предварительно созданные панели мониторинга для мониторинга кластеров Kubernetes, включая несколько, которые представляют аналогичную информацию в виде представлений аналитики контейнеров. Существуют также различные панели мониторинга, созданные сообществом, для визуализации нескольких аспектов кластера Kubernetes из метрик, собранных Prometheus.

Screenshot of Grafana.

Workbooks

Книги Azure Monitor — это функция в Azure Monitor, которая предоставляет гибкий холст для анализа данных и создания расширенных визуальных отчетов. Книги помогают создавать визуальные отчеты, которые помогают в анализе данных. Отчеты в аналитике контейнеров рекомендуется использовать для книг Azure. Azure предоставляет встроенные книги для каждой службы, включая Служба Azure Kubernetes (AKS), доступ к которым можно получить из портал Azure. В меню Azure Monitor в портал Azure выберите контейнеры. В разделе "Мониторинг" выберите Аналитика, выберите конкретный кластер и перейдите на вкладку "Отчеты". Их также можно просмотреть из коллекции книг в Azure Monitor.

Например, книга оптимизации кластера предоставляет несколько анализаторов, которые позволяют быстро просматривать работоспособность и производительность кластера Kubernetes. Он содержит несколько анализаторов, каждый из которых предоставляет различные сведения, связанные с кластером. Для книги не требуется настройка после включения аналитики контейнеров в кластере. Ниже приведены возможности обнаружения сбоев пробы активности и их частоты, выявления аномалий событий и группирования, которые указывают на недавнее увеличение объема событий для более доступного анализа, а также идентификации контейнеров с высокими или низкими ограничениями ЦП и памяти и запросами, а также предлагаемыми ограничениями и значениями запросов для этих контейнеров, работающих в кластерах AKS. Дополнительные сведения об этих книгах см. в отчетах в аналитике контейнеров.

видны узлы

Оповещения Azure Monitor помогают обнаруживать и устранять проблемы, прежде чем пользователи замечают их, заранее уведомляя вас о том, что собранные данные Azure Monitor указывают на проблему с облачной инфраструктурой или приложением. Они позволяют выявлять и устранять проблемы в системе до того, как ваши клиенты заметят их. Оповещения можно настроить для метрик, журналов и журнала действий. Различные типы оповещений имеют преимущества и недостатки.

Существует два типа правил метрик, используемых аналитикой контейнеров на основе метрик Prometheus или метрик платформы.

Оповещения на основе метрик Prometheus

При включении коллекции метрик Prometheus для кластера можно скачать коллекцию рекомендуемых правил генерации оповещений Prometheus. К ним относятся следующие правила:

Уровень видны узлы
Уровень pod KubePodCrashLooping
Задание не завершено вовремя
Контейнер Pod перезапущен за последние 1 час
Готовое состояние модулей pod меньше 80 %
Число модулей pod в состоянии сбоя превышает 0
KubePodNotReadyByController
KubeStatefulSetGenerationMismatch
KubeJobNotCompleted
KubeJobFailed
Среднее использование ЦП на контейнер превышает 95 %
Среднее использование памяти на контейнер превышает 95 %
KubeletPodStartUpLatencyHigh
Уровень кластера Среднее использование PV превышает 80 %
KubeDeploymentReplicasMismatch
KubeStatefulSetReplicasMismatch
KubeHpaReplicasMismatch
KubeHpaMaxedOut
KubeCPUQuotaOvercommit
KubeMemoryQuotaOvercommit
KubeVersionMismatch
KubeClientErrors
CpuThrottlingHigh
KubePersistentVolumeFillingUp
KubePersistentVolumeInodesFillingUp
KubePersistentVolumeErrors
Уровень узла Среднее использование ЦП узла превышает 80 %
Рабочий набор памяти для узла превышает 80 %
Число убитых контейнеров OOM превышает 0
KubeNodeUnreachable
KubeNodeNotReady
KubeNodeReadinessFlapping
KubeContainerWaiting
KubeDaemonSetNotScheduled
KubeDaemonSetMisScheduled
KubeletPlegDurationHigh
KubeletServerCertificateExpiration
KubeletClientCertificateRenewalErrors
KubeletServerCertificateRenewalErrors
KubeQuotaAlmostFull
KubeQuotaFullyUsed
KubeQuotaExceeded

Оповещения на основе метрик платформы

В следующей таблице перечислены рекомендуемые правила генерации оповещений метрик для кластеров AKS. Эти оповещения основаны на метриках платформы для кластера.

Условие Description
Процент > использования ЦП 95 Возникает, когда среднее использование ЦП на всех узлах превышает пороговое значение.
Рабочий набор памяти в процентах > от 100 Возникает, когда средний рабочий набор по всем узлам превышает пороговое значение.

Оповещения на основе журналов

Оповещения журнала позволяют оповещатьо плоскости данных и журналах плоскости управления. Выполните запросы с предопределенными интервалами и создайте оповещение на основе результатов. Вы можете проверка для количества определенных записей или выполнения вычислений на основе числовых столбцов.

Узнайте, как создавать оповещения журнала из контейнеров Аналитика и как запрашивать журналы из контейнеров Аналитика. Оповещения журнала могут измерять две различные вещи, которые можно использовать для мониторинга в разных сценариях:

  • Число результатов: подсчитывает количество строк, возвращаемых запросом, и может использоваться для работы с такими событиями, как журналы событий Windows, системный журнал и исключения приложений.
  • Вычисление значения: делает вычисление на основе числового столбца и может использоваться для включения любого количества ресурсов. Примером является процент ЦП.

В зависимости от требуемого сценария оповещений необходимо создать запросы журналов, сравнивая dateTime с текущим временем с помощью now оператора и возвращаясь через час. Сведения о создании оповещений на основе журналов см. в статье "Создание оповещений журнала" из аналитики контейнеров.

Наблюдаемость сети

Наблюдаемость сети является важной частью поддержания работоспособного и производительного кластера Kubernetes. Собирая и анализируя данные о сетевом трафике, вы можете получить аналитические сведения о том, как работает кластер и определить потенциальные проблемы, прежде чем они вызывают сбои или снижение производительности.

Если надстройка "Наблюдаемость сети" включена, она собирает и преобразует полезные метрики в формат Prometheus, который можно визуализировать в Grafana. При включении собранные метрики автоматически получаются в управляемой службе Azure Monitor для Prometheus. Панель мониторинга Grafana доступна в репозитории общедоступной панели мониторинга Grafana для визуализации метрик наблюдаемости сети, собранных Prometheus. Дополнительные сведения см. в разделе "Настройка наблюдения за сетями" для получения подробных инструкций.

Следующие шаги