Отслеживание работоспособности Службы Azure Kubernetes (AKS) с помощью Azure Monitor

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

В руководстве по облачному мониторингу определены основные цели мониторинга, на которые следует обратить внимание при работе с ресурсами Azure. В этом сценарии основное внимание уделяется мониторингу работоспособности и состояния с помощью Azure Monitor.

Область применения сценария

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

  • Наблюдение за кластерами Kubernetes за пределами Azure, за исключением ссылки на имеющееся содержимое для Kubernetes с поддержкой Azure Arc.
  • Мониторинг AKS с помощью средств, отличных от Azure Monitor, за исключением заполнения пробелов в Azure Monitor и аналитике для контейнеров.

Примечание

Платформа Azure Monitor разработана для наблюдения за доступностью и производительностью облачных ресурсов. Операционные данные, хранимые в Azure Monitor, могут быть полезны для исследования инцидентов безопасности, в то время как для мониторинга безопасности разработаны другие службы Azure. Мониторинг безопасности для AKS осуществляется с помощью Microsoft Sentinel и Microsoft Defender для облака. Описание средств мониторинга безопасности в Azure и их связи с Azure Monitor см. в статье Мониторинг виртуальных машин в Azure Monitor: мониторинг безопасности.

Сведения об использовании служб безопасности для мониторинга AKS см. в статье Преимущества и функции Microsoft Defender для Kubernetes и Подключение журналов диагностики Службы Azure Kubernetes (AKS) к Microsoft Sentinel.

Аналитика контейнеров

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

Prometheus и Grafana — это популярные средства с открытым кодом для мониторинга Kubernetes, поддерживаемые CNCF. AKS предоставляет множество метрик в формате Prometheus, благодаря чему это средство широко применяется для мониторинга. Аналитика контейнеров предоставляет такие возможности, как интеграция платформенной функциональности с AKS, сбор критически важных метрик и журналов, оповещение об обнаруженных проблемах и предоставление визуализации с помощью книг. Он также собирает определенные метрики Prometheus, и многие собственные аналитики Azure Monitor создаются на основе метрик Prometheus. Аналитика контейнеров дополняет и делает исчерпывающим мониторинг AKS для E2E, в том числе за счет сбора данных журналов, отсутствующего в средстве Prometheus, если оно используется отдельно. Многие клиенты используют интеграцию Prometheus и Azure Monitor для мониторинга E2E.

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

Аналитика контейнеров

Настройка мониторинга

В следующих разделах описаны шаги, необходимые для настройки полного мониторинга кластера AKS с помощью Azure Monitor.

Создание рабочей области Log Analytics

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

На первых этапах работы с Azure Monitor начните с одной рабочей области и попробуйте создавать дополнительные рабочие области по мере появления дополнительных требований. Во многих средах для всех отслеживаемых ресурсов Azure будет использоваться одна рабочая область. Можно даже предоставить общий доступ к рабочей области, используемой решениями Microsoft Defender для облака и Microsoft Sentinel, хотя многие клиенты предпочитают отделить данные телеметрии о доступности и производительности от данных безопасности.

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

Включение аналитики контейнеров

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

Настройка коллекции из Prometheus

Аналитика контейнеров позволяет отправлять метрики Prometheus в управляемую службу Azure Monitor для Prometheus или в рабочую область Log Analytics без необходимости использовать локальный сервер Prometheus. Вы можете проанализировать эти данные с помощью возможностей Azure Monitor вместе с другими данными, собираемыми компонентом "Аналитика для контейнеров". Дополнительные сведения об этой конфигурации см. в статье Сбор метрик Prometheus с помощью аналитики контейнеров .

Сбор журналов ресурсов

Журналы компонентов уровня управления AKS реализуются в Azure в виде журналов ресурсов. В настоящее время компонент "Аналитика для контейнеров" не использует эти журналы, поэтому для их просмотра и анализа необходимо создать собственные запросы к журналу. Дополнительные сведения о структуре этих журналов и о том, как создавать для них запросы, см. в разделе Запрос журналов из службы аналитики контейнеров.

Для сбора журналов ресурсов требуется создать параметр диагностики. Для отправки различных наборов журналов в разные расположения создайте несколько параметров диагностики. Сведения о создании параметров диагностики для кластера AKS см. в статье Создание параметров диагностики для отправки журналов платформы и метрик в различные места назначения.

За отправку журналов ресурсов в рабочую область взимается плата, поэтому следует собирать журналы только тех категорий, которые вы собираетесь использовать. Если вам нужно хранить сведения, но не требуется держать их под рукой для анализа, отправляйте журналы в учетную запись хранения Azure, чтобы снизить затраты. Описание категорий, доступных для AKS, см. в журналах ресурсов , а также в разделе Сведения о ценах на журналы Azure Monitor , чтобы узнать о стоимости приема и хранения данных журнала. Начните со сбора данных для минимального числа категорий, а затем измените параметр диагностики, чтобы собрать данные для дополнительных категорий по мере роста потребностей и оценить связанные с ними затраты.

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

Категория Включить? Назначение
cluster-autoscaler Включите, если включено автомасштабирование Рабочая область Log Analytics
guard Включите, если включена служба Azure Active Directory Рабочая область Log Analytics
kube-apiserver Включить Рабочая область Log Analytics
kube-audit Включить хранилище Azure. Позволяет свести к минимуму затраты, сохраняя при этом журналы аудита на случай, если они потребуются аудитору.
kube-audit-admin Включить Рабочая область Log Analytics
kube-controller-manager Включить Рабочая область Log Analytics
kube-scheduler Отключить
AllMetrics Включить Рабочая область Log Analytics

Доступ к возможностям Azure Monitor

Доступ к возможностям Azure Monitor для всех кластеров AKS в подписке можно получить из меню Мониторинг на портале Azure, а для одного кластера AKS — в разделе Мониторинг меню Службы Kubernetes. На снимке экрана ниже показано меню Мониторинг кластера.

Меню

Пункт меню Описание
Аналитика Открытие аналитики для контейнера в текущем кластере. Выберите Контейнеры в меню Мониторинг, чтобы открыть аналитику для контейнеров во всех кластерах.
видны узлы Просмотр оповещений для текущего кластера.
Метрики Открытие обозревателя метрик для текущего кластера.
Параметры диагностики Создание параметров диагностики для кластера с целью сбора журналов ресурсов.
Помощник Рекомендации для текущего кластера от Помощника по Azure.
Журналы Открытие Log Analytics для текущего кластера с целью анализа данных журнала и доступа к предварительно созданным запросам.
Workbooks Открытие коллекции книг для службы Kubernetes.

Мониторинг слоев AKS с помощью аналитики для контейнеров

Из-за широкой вариативности в реализациях Kubernetes требования к мониторингу AKS для каждого клиента будут уникальными. Выбирать подход следует на основе таких факторов, как масштабирование, топология, организационные роли и работа с клиентами из нескольких кластеров. В этом разделе представлена общая стратегия на основе принципа восходящего проектирования: от инфраструктуры к приложениям. На каждом слое предъявляются отдельные требования к мониторингу. Эти слои показаны на приведенной ниже схеме и более подробно обсуждаются в следующих разделах.

Слои AKS

Уровень 1. Компоненты уровня кластера

На уровне кластера находятся следующие компоненты.

Компонент Требования к мониторингу
Узел Ознакомьтесь с состоянием готовности и производительностью использования ЦП, памяти, диска и IP-адреса для каждого узла и упреждающе отслеживайте тенденции их использования перед развертыванием любых рабочих нагрузок.

Для мониторинга компонентов уровня кластера используются имеющиеся представления и отчеты в компоненте "Аналитика для контейнеров". Представление Кластер позволяет быстро просмотреть данные о производительности узлов в кластере, в том числе об использовании ЦП и памяти. Используйте представление Узлы для просмотра данных о работоспособности каждого узла в дополнение к сведениям о работоспособности и производительности модулей Pod, выполняемых на каждом из них. Дополнительные сведения об использовании этого представления и анализе работоспособности и производительности узла см. в статье Отслеживайте производительность кластера Kubernetes с помощью службы аналитики контейнеров. Используйте представление "Использование IP-адресов подсети " в книгах, чтобы получить быстрое представление о выделении и назначении IP-адресов на каждом узле для выбранного диапазона времени.

Представление кластера в компоненте

Для анализа емкости диска и операций ввода-вывода в дополнение к использованию GPU используйте в компоненте "Аналитика для контейнеров" книги Узел. Описание этих книг см. в разделе Книги мониторинга узлов.

Книги узлов в компоненте

В сценариях устранения неполадок может потребоваться доступ к узлам AKS непосредственно для обслуживания или немедленного сбора журналов. В целях безопасности узлы AKS недоступны через Интернет, однако можно использовать команду kubectl debug для подключения к узлам AKS по протоколу SSH. Дополнительные сведения об этом процессе см. в статье Подключение по протоколу SSH к узлам кластера Службы Azure Kubernetes (AKS) для обслуживания или устранения неполадок

Уровень 2. Управляемые компоненты AKS

На управляемом уровне AKS находятся следующие компоненты.

Компонент Наблюдение
Сервер API Осуществляет мониторинг состояния сервера API с выявлением любого увеличения нагрузки по запросам и узких мест, если служба перестает работать.
Kubelet Мониторинг Kubelet помогает устранять неполадки, связанные с управлением модулями Pod, невозможностью их запуска, а также неготовностью узлов или уничтожением модулей.

Azure Monitor и аналитика контейнеров еще не обеспечивают полный мониторинг сервера API. Для просмотра показателя счетчика Выполняемые запросы можно использовать обозреватель метрик, но для получения полного представления о производительности сервера API следует воспользоваться метриками в Prometheus. Здесь можно получить такие значения, как задержка запросов и время обработки рабочих очередей. На сайте Grafana Labs доступна панель мониторинга Grafana, на которой предоставлены критически важные метрики сервера API. Используйте эту панель мониторинга на имеющемся сервере Grafana или настройте новый сервер Grafana в Azure, следуя указаниям в статье Мониторинг служб Azure в Grafana.

Сервер API Grafana

Для просмотра и состояния работоспособности и производительности каждого компонента kubelet используйте книгу Kubelet. Дополнительные сведения об этой книге см. в разделе Книги мониторинга ресурсов. В сценариях устранения неполадок можно воспользоваться журналами kubelet, выполнив для доступа к ним процесс, описанный в статье Получение журналов kubelet из узлов кластера Службы Azure Kubernetes (AKS).

Книга kubelet в компоненте

Журналы ресурсов

Для анализа журналов уровня управления, созданных компонентами AKS, используйте запросы журналов для журналов ресурсов.

Уровень 3. Объекты и рабочие нагрузки Kubernetes

На уровне объектов и рабочих нагрузок Kubernetes находятся следующие компоненты.

Компонент Требования к мониторингу
Развернутые приложения Отслеживайте фактическое состояние развертывания в сравнении с требуемым, а также состояние модулей Pod, которые на них выполняются, и использование ресурсов этих модулей.
Модули pod Отслеживайте состояние и использование ресурсов модулей Pod, работающих в кластере AKS, в том числе их ЦП и памяти.
Контейнеры Отслеживайте использование ресурсов контейнеров, работающих в кластере AKS, в том числе их ЦП и памяти.

Для мониторинга контейнеров и модулей Pod используются имеющиеся представления и отчеты в компоненте "Аналитика для контейнеров". Для просмотра данных о работоспособности и производительности модулей Pod, выполняемых на узлах и кластерах, а также детализации работоспособности и производительности их контейнеров используйте представления Узлы и Контроллеры. Данные о работоспособности и производительности контейнеров можно просматривать непосредственно из представления Контейнеры. Дополнительные сведения об использовании этого представления и анализе работоспособности и производительности контейнера см. в статье Отслеживайте производительность кластера Kubernetes с помощью службы аналитики контейнеров.

Представление контейнеров в компоненте

Для просмотра метрик, собранных для развертываний, используйте книгу Развертывание в компоненте "Аналитика для контейнеров". Дополнительные сведения см. в статье Сбор метрик развертывания и HPA с помощью Аналитики контейнеров.

Примечание

Представление "Развертывания" в компоненте "Аналитика для контейнеров" сейчас находится на этапе общедоступной предварительной версии.

Книга

Динамические данные

В сценариях устранения неполадок компонент "Аналитика для контейнеров" предоставляет доступ к динамическим данным журналов контейнеров AKS (stdout/stderr), событиям и метрикам Pod. Дополнительные сведения об использовании этой функции см. в статье Просмотр журналов Kubernetes, событий и метрик Pod в режиме реального времени.

Динамические данные в компоненте

Уровень 4. Приложения

На уровне приложений находятся рабочие нагрузки приложений, выполняемые в кластере AKS.

Компонент Требования к мониторингу
Приложения Мониторинг развертываний приложений микрослужб для обнаружения сбоев приложений и проблем из-за задержки. В частности, предоставляет такие сведения, как частота запросов, время отклика и исключения.

Application Insights обеспечивает полный мониторинг приложений, работающих в AKS и других средах. Если у вас есть приложение Java, вы можете обеспечить мониторинг без инструментирования кода, следуя указаниям в статье Мониторинг приложений, размещенных в Kubernetes, без инструментирования — Application Insights в Azure Monitor. Для полного мониторинга следует настроить мониторинг на основе кода в зависимости от приложения.

См. статью Что такое Azure Application Insights.

Уровень 5. Внешние компоненты

К внешним компонентам AKS относятся следующие.

Компонент Требования к мониторингу
Сетка службы, входящий и исходящий трафик Метрики на основе компонента.
База данных и рабочие очереди Метрики на основе компонента.

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

Анализ данных метрик с помощью обозревателя метрик

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

Подробные сведения об использовании этой функции см. в статье Начало работы с обозревателем метрик Azure. Список собираемых для AKS метрик платформы приведен в разделе Метрики справочника по мониторингу данных AKS. Если для кластера включен компонент "Аналитика для контейнеров", доступны дополнительные значения метрик.

Обозреватель метрик

Анализ данных журнала с помощью Log Analytics

Используйте Log Analytics, если нужно проанализировать журналы ресурсов или глубже изучить данные, используемые для создания представлений в компоненте "Аналитика для контейнеров". Log Analytics позволяет выполнять пользовательский анализ данных журнала.

Дополнительные сведения об использовании запросов журналов для анализа данных, собираемых компонентом "Аналитика для контейнеров", см. в статье Запрос журналов из службы аналитики контейнеров. В статье Использование запросов в Azure Monitor Log Analytics рассказывается, как использовать эти запросы, а в руководстве по Log Analytics представлены подробные инструкции по использованию Log Analytics для выполнения запросов и работы с результатами.

Список таблиц, собранных для AKS, которые можно проанализировать в обозревателе метрик, см. в разделе о журналах в справочнике по мониторингу данных AKS.

Запросы Log Analytics для Kubernetes

Помимо данных компонента "Аналитика для контейнеров", для анализа журналов ресурсов из AKS можно также использовать запросы журналов. Список доступных категорий журналов см. в разделе Журналы ресурсов справочника по мониторингу данных AKS. Перед сбором данных необходимо создать параметр диагностики для сбора каждой категории, как описано в разделе Настройка мониторинга.

видны узлы

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

Важно!

Затраты на большинство правил генерации оповещений зависят от типа правила, количества измерений, которые оно включает, и частоты его выполнения. Прежде чем создавать правила генерации оповещений, ознакомьтесь с разделом Правила генерации оповещений на странице Цены на Azure Monitor.

Выбор типа оповещений

Наиболее распространенные типы правил генерации оповещений в Azure Monitor — оповещения о метриках и оповещения о запросах журнала. Тип правила генерации оповещений, создаваемого для конкретного сценария, зависит от расположения данных, о которых вы будете получать оповещения. Возможны случаи, когда данные для определенного сценария оповещения доступны как в метриках, так и в журналах, и необходимо определить, какой тип правила следует использовать.

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

Например, если вы хотите получать оповещения, когда рабочая нагрузка приложения потребляет слишком много ресурсов ЦП, можно создать оповещение метрики, используя метрику ЦП. Если необходимо получать оповещение при обнаружении определенного сообщения в журнале уровня управления, потребуется оповещение журнала.

Правила генерации оповещений метрик

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

Компонент "Аналитика для контейнеров" включает в себя функцию общедоступной предварительной версии, которая создает рекомендуемый набор правил генерации оповещений о метриках для кластера AKS. Эта функция создает новые значения метрики (также для предварительной версии), используемые правилами генерации оповещений, которые также можно использовать в обозревателе метрик. Дополнительные сведения об этой функции и о создании оповещений о метриках для AKS см. в статье Предупреждения о рекомендуемых метриках (предварительная версия) от службы анализа контейнеров.

Правила генерации оповещений

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

Оповещения виртуальных машин

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

Оповещения Prometheus

В ситуациях, когда в Azure Monitor отсутствуют данные, необходимые для выполнения условия для оповещения, либо оповещения выводятся не достаточно оперативно, следует настроить оповещения в Prometheus. Один из таких примеров — оповещение для сервера API. Azure Monitor не собирает критически важные сведения для сервера API, в том числе о доступности или узком месте. Вы можете создать оповещение о запросе журнала, используя данные из категории журналов ресурса kube-apiserver, но для получения предупреждений может потребоваться до нескольких минут, а это может не соответствовать вашим требованиям.

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