Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Как описано в мониторинге Kubernetes в Azure Monitor, несколько функций Azure Monitor совместно работают, чтобы обеспечить полноценный мониторинг кластеров Azure Kubernetes Service (AKS). В этой статье описывается, как включить следующие функции для кластеров AKS:
- Метрики Prometheus
- Управляемая платформа Grafana
- Ведение журнала контейнеров
- Журналы контрольной плоскости
Предварительные условия
- Для подключения требуется по крайней мере доступ участника к кластеру.
- Чтобы связать рабочую область Azure Monitor с существующей управляемой рабочей областью Grafana как часть онбординга, вам требуется либо доступ Owner, либо по крайней мере роли Contributor и User Access Administrator.
- Для просмотра данных после включения мониторинга требуются роли читателя мониторинга или участника мониторинга .
Это важно
Если ваши кластеры подключаются к рабочей области Azure Monitor или рабочей области Log Analytics с помощью приватного подключения Azure, см. раздел Включение приватного подключения для мониторинга виртуальных машин и кластеров Kubernetes в Azure Monitor.
Создание рабочих областей
В следующей таблице описаны рабочие области, необходимые для поддержки функций Azure Monitor, включенных в этой статье. Если у вас ещё нет рабочей области для каждого из требуемых типов, вы можете создать их в рамках процесса подключения. См. Создание архитектуры рабочей области Log Analytics для получения рекомендаций о том, сколько рабочих областей создавать и где их размещать.
| Функция | Рабочая область | Примечания. |
|---|---|---|
| Управляемый Prometheus | рабочая область Azure Monitor | Если при подключении не указать существующую рабочую область Azure Monitor, используется рабочая область по умолчанию для группы ресурсов. Если рабочая область по умолчанию еще не существует в регионе кластера, одна с именем в формате DefaultAzureMonitorWorkspace-<mapped_region> создается в группе ресурсов с именем DefaultRG-<cluster_region>.Этого разрешения Contributor достаточно для включения надстройки, чтобы отправлять данные в рабочую область Azure Monitor. Для того чтобы связать рабочую область Azure Monitor и просматривать метрики в Управление Azure для Grafana, требуется разрешение уровня Owner. Это необходимо, так как пользователь, выполняющий шаг подключения, должен иметь возможность предоставить роль Управление Azure для Grafana System Identity Monitoring Reader в рабочей области Azure Monitor для запроса метрик. |
| Ведение журнала контейнеров Журналы контрольной плоскости Аналитика контейнеров |
рабочая область Log Analytics | Кластер можно подключить к рабочей области Log Analytics в другой подписке Azure в том же клиенте Microsoft Entra, но необходимо использовать Azure CLI или шаблон Azure Resource Manager. В настоящее время эту конфигурацию нельзя выполнить с помощью портала Azure. Если вы подключаете существующий кластер к рабочей области Log Analytics в другой подписке, Майкрософт. ContainerService поставщик ресурсов должен быть зарегистрирован в подписке в рабочей области Log Analytics. Дополнительные сведения см. в разделе Регистрация поставщика ресурсов. Если вы не указываете существующую рабочую область Log Analytics, используется рабочая область по умолчанию для группы ресурсов. Если рабочая область по умолчанию еще не существует в регионе кластера, она создается с именем в формате DefaultWorkspace-<GUID>-<Region>.Список поддерживаемых пар сопоставлений, используемых для рабочей области по умолчанию, см. в разделе Сопоставление регионов, поддерживаемое Container Insights. Чтобы получить руководство по настройке рабочей области с использованием периметра безопасности сети, см. Настройка Azure Monitor с периметром безопасности сети. |
| Управляемая платформа Grafana | Пространство Управление Azure для Grafana | Link your Grafana workspace to your Azure Monitor workspace, чтобы сделать метрики Prometheus, собранные из кластера, доступными для панелей мониторинга Grafana. |
Метрики Prometheus и аналитика контейнеров
Примечание.
Использование Application Insights для мониторинга приложений, работающих в вашем кластере AKS, с использованием протокола OpenTelemetry (OTLP) для инструментирования и сбора данных теперь находится в общедоступной предварительной версии. См. раздел "Мониторинг приложений AKS" с помощью ограниченной предварительной версии протокола OpenTelemetry (OTLP).
При включении аналитики Prometheus и аналитики контейнеров в кластере устанавливается версия агента Azure Monitor в контейнере. Эти функции можно настроить одновременно в новом или существующем кластере или включить каждую функцию отдельно.
Включите управляемую Grafana для кластера параллельно с включением сбора метрик Prometheus. Сведения о подключении рабочей области Azure Monitor и рабочей области Управление Azure для Grafana см. в статье Link a Grafana workspace.
Предварительные условия
- Кластер должен использовать аутентификацию с использованием управляемой учётной записи.
- Следующие поставщики ресурсов должны быть зарегистрированы в подписке кластера и рабочей области Azure Monitor:
- Майкрософт. ContainerService
- Майкрософт. Идеи
- Майкрософт. AlertsManagement
- Майкрософт. Монитор
- Следующие поставщики ресурсов должны быть зарегистрированы в подписке рабочей области Grafana:
- Майкрософт.Dashboard
- Проверка подлинности управляемого удостоверения по умолчанию используется в CLI версии 2.49.0 или более поздней.
- Расширение
aks-previewнеобходимо удалить из кластеров AKS с помощью командыaz extension remove --name aks-preview.
Включение метрик Prometheus в кластере AKS
Включите метрики Prometheus в кластере AKS, используя опцию --enable-azure-monitor-metrics с командой az aks create для нового кластера или командой az aks update для существующего кластера. Этот параметр использует конфигурацию, описанную в конфигурации метрик по умолчанию Prometheus в Azure Monitor. Чтобы изменить эту конфигурацию, см. раздел Настройка сбора метрик Prometheus в управляемой службе Azure Monitor для Prometheus.
Команды для примера:
### Use default Azure Monitor workspace
az aks create/update --enable-azure-monitor-metrics --name <cluster-name> --resource-group <cluster-resource-group>
### Use existing Azure Monitor workspace
az aks create/update --enable-azure-monitor-metrics --name <cluster-name> --resource-group <cluster-resource-group> --azure-monitor-workspace-resource-id <workspace-name-resource-id>
### Use an existing Azure Monitor workspace and link with an existing Grafana workspace
az aks create/update --enable-azure-monitor-metrics --name <cluster-name> --resource-group <cluster-resource-group> --azure-monitor-workspace-resource-id <azure-monitor-workspace-name-resource-id> --grafana-resource-id <grafana-workspace-name-resource-id>
### Use optional parameters
az aks create/update --enable-azure-monitor-metrics --name <cluster-name> --resource-group <cluster-resource-group> --ksm-metric-labels-allow-list "namespaces=[k8s-label-1,k8s-label-n]" --ksm-metric-annotations-allow-list "pods=[k8s-annotation-1,k8s-annotation-n]"
Необязательные параметры
В примерах команд разрешены следующие необязательные параметры. Имя параметра отличается для каждого, но их использование совпадает.
| Параметр | Имя и описание |
|---|---|
| Ключи аннотаций | --ksm-metric-annotations-allow-listСписок разделенных запятыми ключей аннотаций Kubernetes, используемых в метрике ресурса kube_resource_annotations. Например, kube_pod_annotations — это метрика заметок для ресурса pod. По умолчанию эта метрика содержит только метки имени и пространства имен. Чтобы включить дополнительные заметки, укажите список имён ресурсов в их множественном числе и ключи заметок Kubernetes, разрешённые для них. Для каждого ресурса можно предоставить только один *, чтобы допускать любые аннотации, но это серьезно влияет на производительность. Например, pods=[kubernetes.io/team,...],namespaces=[kubernetes.io/team],.... |
| Ключи меток | --ksm-metric-labels-allow-listРазделенный запятыми список дополнительных ключей меток Kubernetes, используемых в метрике kube_resource_labels ресурса. Например, kube_pod_labels — это метрика меток для ресурса pod. По умолчанию эта метрика содержит только метки имени и пространства имен. Для включения дополнительных меток предоставьте список имен ресурсов во множественном числе и ключи меток Kubernetes, которые вы хотите разрешить для них. Для каждого ресурса можно предоставить отдельный *, чтобы разрешить любые метки, но это может вызвать серьёзные проблемы с производительностью. Например, pods=[app],namespaces=[k8s-label-1,k8s-label-n,...],.... |
| Правила записи | --enable-windows-recording-rulesПозволяет включить группы правил записи, необходимые для правильного функционирования панелей мониторинга Windows. |
Примечание.
Набор параметров с использованием --ksm-metric-annotations-allow-list и --ksm-metric-labels-allow-list может быть переопределен или альтернативно задан с помощью ama-metrics-settings-configmap.
Включите аналитику контейнеров и ведение журнала в кластере AKS
Включите аналитику контейнеров и ведение журнала контейнеров в кластере AKS с помощью команды az aks create для нового кластера или команды az aks enable-addon для обновления существующего кластера.
Команды для примера:
### Use default Log Analytics workspace
az aks enable-addons --addon monitoring --name <cluster-name> --resource-group <cluster-resource-group-name>
### Use existing Log Analytics workspace
az aks enable-addons --addon monitoring --name <cluster-name> --resource-group <cluster-resource-group-name> --workspace-resource-id <workspace-resource-id>
### Use custom log configuration file
az aks enable-addons --addon monitoring --name <cluster-name> --resource-group <cluster-resource-group-name> --workspace-resource-id <workspace-resource-id> --data-collection-settings dataCollectionSettings.json
Файл конфигурации журнала
Чтобы настроить параметры сбора журналов для кластера, можно указать конфигурацию в виде JSON-файла, используя следующий формат. Если файл конфигурации не указан, используются параметры по умолчанию, определенные в таблице.
{
"interval": "1m",
"namespaceFilteringMode": "Include",
"namespaces": ["kube-system"],
"enableContainerLogV2": true,
"streams": ["Microsoft-Perf", "Microsoft-ContainerLogV2"]
}
В следующей таблице описаны все параметры в файле конфигурации журнала:
| Имя | Описание |
|---|---|
interval |
Определяет частоту сбора данных агентом. Допустимые значения равны 1 млн - 30 млн в интервалах 1 млн , если значение выходит за пределы допустимого диапазона, то по умолчанию значение по умолчанию составляет 1 млн. Значение по умолчанию: 1 м. |
namespaceFilteringMode |
Включить: собирает только данные из значений в поле пространств имен. Исключить: Собирает данные из всех пространств имен, за исключением значений в поле пространств имен. Off: игнорирует выбранные пространства имен и собирает данные во всех пространствах имен. Значение по умолчанию: выключение |
namespaces |
Массив пространств имен Kubernetes, разделенных запятыми, для сбора данных об инвентаризации и производительности на основе namespaceFilteringMode. Например, пространства имен = ["kube-system", "default"] с параметром Include собирают только эти два пространства имен. С параметром Исключить агент собирает данные из всех других пространств имен, за исключением kube-system и default. С параметром Off агент собирает данные из всех пространств имен, включая kube-system и по умолчанию. Недопустимые и неопознанные пространства имен игнорируются. Нет. |
enableContainerLogV2 |
Логический флаг для активации схемы ContainerLogV2. Если задано значение true, отправляются журналы stdout/stderr в таблицу ContainerLogV2. В противном случае журналы контейнеров отправляются в таблицу ContainerLog , если иное не указано в ConfigMap. При указании отдельных потоков необходимо включить соответствующую таблицу для ContainerLog или ContainerLogV2. Значение по умолчанию: True |
streams |
Массив потоков таблиц для сбора. Ознакомьтесь со значениями Stream для списка допустимых потоков и соответствующих таблиц. По умолчанию: Майкрософт-ContainerInsights-Group-Default |
Потоковые значения
При указании таблиц для сбора с помощью CLI или BICEP/ARM необходимо указать имена потоков, соответствующие определенным таблицам в рабочей области Log Analytics. В следующей таблице перечислены имена потоков и соответствующая таблица.
Примечание.
Если вы знакомы со структурой правила сбора данных, имена потоков в этой таблице указываются в разделе потоков данных DCR.
| Stream | Таблица аналитики контейнеров |
|---|---|
| Майкрософт-ContainerInventory | ContainerInventory |
| Майкрософт-ContainerLog | ContainerLog |
| Майкрософт-ContainerLogV2 | ContainerLogV2 |
| Майкрософт-ContainerLogV2-HighScale | ContainerLogV2 (режим высокой шкалы)1 |
| Майкрософт-ContainerNodeInventory | Инвентарь контейнерного узла |
| Майкрософт-InsightsMetrics | InsightsMetrics |
| Майкрософт-KubeEvents | KubeEvents |
| Майкрософт-KubeMonAgentEvents | KubeMonAgentEvents |
| Майкрософт-KubeNodeInventory | KubeNodeInventory |
| Майкрософт-KubePodInventory | KubePodInventory |
| Майкрософт-KubePVInventory | KubePVInventory |
| Майкрософт-KubeServices | KubeServices |
| Майкрософт-Perf | Перф |
| Майкрософт-ContainerInsights-Group-Default | Группировать поток, включающий все перечисленные выше потоки. 2 |
1 Не используйте одновременно Майкрософт-ContainerLogV2 и Майкрософт-ContainerLogV2-HighScale. Это приведет к тому, что данные будут повторяться. 2 Используйте поток группы в качестве сокращения, чтобы указать всех отдельных потоков. Если вы хотите собрать определенный набор потоков, укажите каждый поток отдельно вместо использования группового потока.
Применимые таблицы и метрики
Параметры для частоты сбора и фильтрации по пространству имен не применяются ко всем данным журнала. В следующих таблицах перечислены таблицы в рабочей области Log Analytics вместе с параметрами, которые применяются к каждому.
| Имя таблицы | Интервал? | Пространство имен? | Замечания |
|---|---|---|---|
| ContainerInventory | Да | Да | |
| Инвентарь контейнерного узла | Да | нет | Параметр сбора данных для пространств имен не применяется, так как узел Kubernetes не является ресурсом с областью действия пространства имен |
| KubeNodeInventory | Да | нет | Параметр сбора данных для пространств имен неприменим, так как узлы Kubernetes не являются ресурсами с областью видимости пространства имен. |
| KubePodInventory | Да | Да | |
| KubePVInventory | Да | Да | |
| KubeServices | Да | Да | |
| KubeEvents | нет | Да | Параметр сбора данных для интервала не применим для событий Kubernetes |
| Перф | Да | Да | Настройка сбора данных для пространств имен неприменима к метрикам, связанным с узлом Kubernetes, так как узел Kubernetes не является объектом с областью имен. |
| InsightsMetrics | Да | Да | Параметры сбора данных применимы только для метрик, собирающих следующие пространства имен: container.azm.ms/kubestate, container.azm.ms/pvи container.azm.ms/gpu. |
Примечание.
Фильтрация пространства имен не применяется к записям агента ama-logs. В результате, даже если пространство имен kube-system указано в числе исключенных пространств имен, записи, связанные с контейнером агента ama-logs, по-прежнему принимаются.
| Пространство имен метрик | Интервал? | Пространство имен? | Замечания |
|---|---|---|---|
| Взаимосвязи.контейнер/узлы | Да | нет | Узел не является ресурсом, имеющим область действия в рамках пространства имён |
| Insights.Контейнер/Подсистемы | Да | Да | |
| Insights.контейнер/контейнеры | Да | Да | |
| Insights.container/persistentvolumes | Да | Да |
Специальные сценарии
Используйте следующие ресурсы для требований к конфигурации для определенных сценариев:
- Если вы используете частную ссылку, см. статью Включение частной ссылки для мониторинга Kubernetes в Azure Monitor.
- Чтобы включить ведение журнала контейнеров с использованием периметра безопасности сети, см. статью Настройка Azure Monitor с периметром безопасности сети для конфигурирования рабочей области Log Analytics.
- Чтобы включить режим высокой масштабируемости, выполните процесс подключения в разделе Включение режима высокой масштабируемости для надстройки мониторинга. Необходимо также обновить ConfigMap, как описано в Update ConfigMap, а поток DCR должен быть изменен с
Майкрософт-ContainerLogV2наМайкрософт-ContainerLogV2-HighScale.
Включение журналов контрольной плоскости в кластере AKS
Журналы плоскости управления реализуются как журналы ресурсов в Azure Monitor. Чтобы собрать эти журналы, создайте параметр диагностики для кластера. Отправьте их в ту же рабочую область Log Analytics, что и журналы контейнеров.
Используйте команду az monitor diagnostic-settings create для создания параметра диагностики с помощью Azure CLI. См. документацию по этой команде для описания его параметров.
В следующем примере создается параметр диагностики, который отправляет все категории Kubernetes в рабочую область Log Analytics. К ним относится режим, специфичный для ресурса, для отправки журналов в определенные таблицы, перечисленные в поддерживаемых журналах ресурсов для Майкрософт.ContainerService/fleets.
az monitor diagnostic-settings create \
--name 'Collect control plane logs' \
--resource /subscriptions/<subscription ID>/resourceGroups/<resource group name>/providers/Microsoft.ContainerService/managedClusters/<cluster-name> \
--workspace /subscriptions/<subscription ID>/resourcegroups/<resource group name>/providers/microsoft.operationalinsights/workspaces/<log analytics workspace name> \
--logs '[{"category": "karpenter-events","enabled": true},{"category": "kube-audit","enabled": true},
{"category": "kube-apiserver","enabled": true},{"category": "kube-audit-admin","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},{"category": "fleet-member-agent","enabled": true},{"category": "fleet-member-net-controller-manager","enabled": true},{"category": "fleet-mcs-controller-manager","enabled": true}]'
--metrics '[{"category": "AllMetrics","enabled": true}]' \
--export-to-resource-specific true
Включение метрик Windows (предварительная версия)
Сбор метрик Windows включен для кластеров AKS, начиная с версии 6.4.0-main-02-22-2023-3ee44b9e контейнера надстройки управляемого Prometheus. Подключение надстройки Azure Monitor Metrics позволяет Windows DaemonSet модулям pod запускаться в ваших пулах узлов. Поддерживаются Windows Server 2019 и Windows Server 2022. Выполните следующие действия, чтобы разрешить подам собирать метрики для своих пулов узлов Windows.
Примечание.
В windows-exporter-daemonset.yaml нет ограничений по ЦП/памяти, поэтому он может перегрузить узлы Windows. Дополнительные сведения см. в разделе "Резервирование ресурсов"
При развертывании рабочих нагрузок задайте ограничения памяти ресурсов и ЦП для контейнеров. Это также вычитает из параметра NodeAllocatable и помогает планировщику кластера определить, какие поды следует размещать на каких узлах. Планирование подов без ограничений может чрезмерно использовать ресурсы узлов Windows и в крайних случаях может привести к неработоспособности узлов.
Установка экспортера Windows
Вручную установите windows-exporter на узлы AKS, чтобы получить доступ к метрикам Windows, развернув файл windows-exporter-daemonset YAML. Включите следующие сборщики. Дополнительные сведения о сборщиках см. в разделе Экспортер Prometheus для метрик Windows.
[defaults]containermemoryprocesscpu_info
Разверните файл windows-exporter-daemonset YAML. Если в узле применены какие-либо пятна, необходимо применить соответствующие терпимости.
kubectl apply -f windows-exporter-daemonset.yaml
Включение метрик Windows
Установите логические значения windowsexporter и windowskubeproxy в true в параметрах конфигурации метрик ConfigMap и примените его к кластеру. См . раздел "Настройка коллекции метрик Prometheus" из кластера Kubernetes с помощью ConfigMap.
Включение правил записи
Включите правила записи, необходимые для встроенных панелей мониторинга:
- При подключении с помощью командной строки добавьте опцию
--enable-windows-recording-rules. - При подключении с помощью шаблона ARM, Bicep или Политика Azure задайте
enableWindowsRecordingRulesнаtrueв файле параметров. - Если кластер уже подключен, используйте шаблон ARM this ARM и файл параметров this для создания групп правил. Это добавляет необходимые правила записи и не является операцией ARM в кластере и не влияет на текущее состояние мониторинга кластера.
Проверка развертывания
Используйте инструмент командной строки kubectl, чтобы убедиться, что агент развернут правильно.
Управляемый Prometheus
Убедитесь, что daemonSet был развернут правильно в пулах узлов Linux
kubectl get ds ama-metrics-node --namespace=kube-system
Количество podов должно быть равно количеству узлов Linux в кластере. Выходные данные должны выглядеть примерно так:
User@aksuser:~$ kubectl get ds ama-metrics-node --namespace=kube-system
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
ama-metrics-node 1 1 1 1 1 <none> 10h
Убедитесь, что Windows узлы развернуты правильно
kubectl get ds ama-metrics-win-node --namespace=kube-system
Число модулей pod должно быть равно числу узлов Windows в кластере. Выходные данные должны выглядеть примерно так:
User@aksuser:~$ kubectl get ds ama-metrics-node --namespace=kube-system
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
ama-metrics-win-node 3 3 3 3 3 <none> 10h
Убедитесь, что два ReplicaSets были развернуты для Prometheus
kubectl get rs --namespace=kube-system
Выходные данные должны выглядеть примерно так:
User@aksuser:~$kubectl get rs --namespace=kube-system
NAME DESIRED CURRENT READY AGE
ama-metrics-5c974985b8 1 1 1 11h
ama-metrics-ksm-5fcf8dffcd 1 1 1 11h
Аналитика контейнеров и ведение журнала
Убедитесь, что daemonSets были развернуты правильно в пулах узлов Linux
kubectl get ds ama-logs --namespace=kube-system
Количество podов должно быть равно количеству узлов Linux в кластере. Выходные данные должны выглядеть примерно так:
User@aksuser:~$ kubectl get ds ama-logs --namespace=kube-system
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
ama-logs 2 2 2 2 2 <none> 1d
Проверьте, что узлы Windows были развернуты правильно
kubectl get ds ama-logs-windows --namespace=kube-system
Число модулей pod должно быть равно числу узлов Windows в кластере. Выходные данные должны выглядеть примерно так:
User@aksuser:~$ kubectl get ds ama-logs-windows --namespace=kube-system
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
ama-logs-windows 2 2 2 2 2 <none> 1d
Проверка развертывания решения для ведения журнала контейнеров
kubectl get deployment ama-logs-rs --namespace=kube-system
Выходные данные должны выглядеть примерно так:
User@aksuser:~$ kubectl get deployment ama-logs-rs --namespace=kube-system
NAME READY UP-TO-DATE AVAILABLE AGE
ama-logs-rs 1/1 1 1 24d
Просмотр конфигурации с помощью CLI
Используйте команду aks show, чтобы узнать, включена ли решение, идентификатор ресурса рабочей области Log Analytics и сводная информация о кластере.
az aks show --resource-group <resourceGroupofAKSCluster> --name <nameofAksCluster>
Команда возвращает данные в формате JSON о решении. Этот addonProfiles раздел должен содержать сведения о omsagent как в следующем примере.
"addonProfiles": {
"omsagent": {
"config": {
"logAnalyticsWorkspaceResourceID": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/my-resource-group/providers/microsoft.operationalinsights/workspaces/my-workspace",
"useAADAuth": "true"
},
"enabled": true,
"identity": null
},
}
Связанный контент
- Если у вас возникают проблемы с начальной настройкой, ознакомьтесь с руководством по устранению неполадок.
- Узнайте, как анализировать данные мониторинга Kubernetes в Аналитике контейнеров на портале Azure.