Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Как описано в мониторинге Kubernetes в Azure Monitor, несколько функций Azure Monitor работают вместе, чтобы обеспечить полный мониторинг кластеров Службы Azure Kubernetes (AKS). В этой статье описывается, как включить следующие функции для кластеров AKS:
- Метрики Prometheus
- Управляемая платформа Grafana
- Ведение журнала контейнеров
- Журналы контрольной плоскости
Предварительные условия
- Для подключения требуется по крайней мере доступ участника к кластеру.
- После включения мониторинга требуются читатель мониторинга или участник мониторинга для просмотра данных.
Создание рабочих областей
В следующей таблице описаны рабочие области, необходимые для поддержки функций Azure Monitor, включенных в этой статье. Если у вас ещё нет рабочей области для каждого из требуемых типов, вы можете создать их в рамках процесса подключения. См. Руководство по проектированию архитектуры рабочей области Log Analytics, чтобы узнать, сколько рабочих областей следует создать и где их разместить.
| Функция | Рабочая область | Примечания. |
|---|---|---|
| Управляемый Prometheus | Рабочая область Azure Monitor | Если при подключении не указана существующая рабочая область Azure Monitor, будет использоваться рабочая область по умолчанию для группы ресурсов. Если рабочая область по умолчанию еще не существует в регионе кластера, одна с именем в формате DefaultAzureMonitorWorkspace-<mapped_region> будет создана в группе ресурсов с именем DefaultRG-<cluster_region>.Contributor достаточно разрешений, чтобы включить надстройку для отправки данных в рабочую область Azure Monitor. Вам потребуется разрешение уровня Owner для подключения рабочей области Azure Monitor к Azure Managed Grafana для просмотра метрик. Для этого необходимо, чтобы пользователь, выполняющий шаг подключения, имел возможность назначить управляемой системе идентификацию Grafana роль Monitoring Reader в рабочей области Azure Monitor для выполнения запросов метрик. |
| Ведение журнала контейнеров Журналы контрольной плоскости |
Рабочая область Log Analytics | Кластер можно подключить к рабочей области Log Analytics в другой подписке Azure в том же клиенте Microsoft Entra, но необходимо использовать Azure CLI или шаблон Azure Resource Manager. В настоящее время эту конфигурацию невозможно выполнить с помощью портал Azure. Если вы подключаете существующий кластер к рабочей области Log Analytics в другой подписке, поставщик ресурсов Microsoft.ContainerService должен быть зарегистрирован в подписке в рабочей области Log Analytics. Дополнительные сведения см. в разделе Регистрация поставщика ресурсов. Если вы не указываете существующую рабочую область Log Analytics, будет использоваться рабочая область по умолчанию для группы ресурсов. Если рабочая область по умолчанию еще не существует в регионе кластера, она будет создана с именем в формате DefaultWorkspace-<GUID>-<Region>.Список поддерживаемых пар сопоставлений, используемых для рабочей области по умолчанию, см. в разделе Сопоставление регионов, поддерживаемое Container Insights. Сведения о настройке рабочей области с периметром безопасности сети см. в статье "Настройка Azure Monitor с периметром сетевой безопасности". |
| Управляемая платформа Grafana | Рабочая область Azure Managed Grafana | Свяжите рабочую область Grafana с рабочей областью Azure Monitor, чтобы сделать метрики Prometheus, собранные из кластера, доступными для панелей мониторинга Grafana. |
Включение метрик Prometheus и ведения журнала контейнеров
При включении Prometheus и ведения журнала контейнера в кластере устанавливается контейнерная версия агента Azure Monitor. Эти функции можно настроить одновременно в новом или существующем кластере или включить каждую функцию отдельно.
Включите управляемую Grafana для кластера параллельно с включением сбора метрик Prometheus. См. Привязка рабочей области Grafana для получения вариантов подключения рабочей области Azure Monitor и рабочей области Azure Managed Grafana.
Предварительные условия
- Кластер должен использовать аутентификацию с использованием управляемой учётной записи.
- Следующие поставщики ресурсов должны быть зарегистрированы в подписке кластера и рабочей области Azure Monitor:
- Microsoft.ContainerService
- Microsoft.Insights
- Microsoft.AlertsManagement
- Microsoft.Monitor
- Следующие поставщики ресурсов должны быть зарегистрированы в подписке рабочей области Grafana:
- Microsoft.Dashboard
Предварительные условия
- Проверка подлинности управляемого удостоверения по умолчанию используется в CLI версии 2.49.0 или более поздней.
- Расширение aks-preview должно быть удалено из кластеров AKS с помощью команды
az extension remove --name aks-preview.
Метрики Prometheus
-enable-azure-monitor-metrics Используйте параметр az aks create или az aks update в зависимости от того, создаете ли вы новый кластер или обновляете существующий кластер, чтобы установить надстройку метрик, которая удаляет метрики Prometheus. Это будет использовать конфигурацию, описанную в конфигурации метрик 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]"
Пример
az aks create/update --enable-azure-monitor-metrics --name "my-cluster" --resource-group "my-resource-group" --azure-monitor-workspace-resource-id "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/my-resource-group/providers/microsoft.monitor/accounts/my-workspace"
Необязательные параметры
Каждая из приведенных выше команд разрешает следующие необязательные параметры. Имя параметра отличается для каждого, но их использование совпадает.
| Параметр | Имя и описание |
|---|---|
| Ключи аннотаций | --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
Журналы контейнеров
--addon monitoring Используйте параметр 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
### Use legacy authentication
az aks enable-addons --addon monitoring --name <cluster-name> --resource-group <cluster-resource-group-name> --workspace-resource-id <workspace-resource-id> --enable-msi-auth-for-monitoring false
Пример
az aks enable-addons --addon monitoring --name "my-cluster" --resource-group "my-resource-group" --workspace-resource-id "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/my-resource-group/providers/Microsoft.OperationalInsights/workspaces/my-workspace"
Файл конфигурации журнала
Чтобы настроить параметры сбора журналов для кластера, можно указать конфигурацию в виде 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 для списка допустимых потоков и соответствующих таблиц. По умолчанию: ContainerLogV2, KubeEvents, KubePodInventory |
Потоковые значения
При указании таблиц для сбора с помощью CLI или ARM необходимо указать имя потока, соответствующее определенной таблице в рабочей области Log Analytics. В следующей таблице перечислены имена потока для каждой таблицы.
Примечание.
Если вы знакомы со структурой правила сбора данных, имена потоков в этой таблице указываются в разделе потоков данных DCR.
| Stream | Таблица аналитики контейнеров |
|---|---|
| Microsoft-ContainerInventory | ContainerInventory |
| Microsoft-ContainerLog | ContainerLog |
| Microsoft-ContainerLogV2 | ContainerLogV2 |
| Microsoft-ContainerLogV2-HighScale | ContainerLogV2 (режим высокой шкалы)1 |
| Microsoft-ContainerNodeInventory | Инвентарь контейнерного узла |
| Microsoft-InsightsMetrics | InsightsMetrics |
| Microsoft-KubeEvents | KubeEvents |
| Microsoft-KubeMonAgentEvents | KubeMonAgentEvents |
| Microsoft-KubeNodeInventory | KubeNodeInventory |
| Microsoft-KubePodInventory | KubePodInventory |
| Microsoft-KubePVInventory | KubePVInventory |
| Microsoft-KubeServices | KubeServices |
| Microsoft-Perf | Перф |
| Microsoft-RetinaNetworkFlowLogs | RetinaNetworkFlowLogs |
1 Не используйте Microsoft-ContainerLogV2 и Microsoft-ContainerLogV2-HighScale вместе. Это приведет к тому, что данные будут повторяться.
Применимые таблицы и метрики
Параметры для частоты сбора и фильтрации по пространству имен не применяются ко всем данным журнала. В следующих таблицах перечислены таблицы в рабочей области 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 должен быть изменён с
Microsoft-ContainerLogV2наMicrosoft-ContainerLogV2-HighScale.
Включение журналов плоскости управления
Журналы плоскости управления реализуются в виде журналов ресурсов в Azure Monitor. Чтобы собрать эти журналы, создайте параметр диагностики для кластера. Отправьте их в ту же рабочую область Log Analytics, что и журналы контейнеров.
Используйте команду az monitor diagnostic-settings create , чтобы создать параметр диагностики с помощью Azure CLI. См. документацию по этой команде для описания его параметров.
В следующем примере создается параметр диагностики, который отправляет все категории Kubernetes в рабочую область Log Analytics. Это включает в себя режим, зависящий от ресурса , для отправки журналов в определенные таблицы, перечисленные в поддерживаемых журналах ресурсов для Microsoft.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 контейнера дополнения Managed Prometheus. Подключение к надстройке метрик Azure Monitor позволяет модулям pod Windows DaemonSet запускаться в пулах узлов. Поддерживаются Windows Server 2019 и Windows Server 2022. Выполните следующие действия, чтобы разрешить подам собирать метрики с Windows узловых пулов.
Примечание.
В windows-exporter-daemonset.yaml нет ограничения на ЦП/память, поэтому оно может перераспределить узлы Windows. Дополнительные сведения см. в разделе "Резервирование ресурсов"
При развертывании рабочих нагрузок задайте ограничения памяти ресурсов и ЦП для контейнеров. Это также вычитает из параметра NodeAllocatable и помогает планировщику кластера определить, какие поды следует размещать на каких узлах. Планирование подов без ограничений может перегрузить узлы Windows, и в крайних случаях узлы могут стать нестабильными.
Установка экспортера Windows
Вручную установите "windows-exporter" на узлах AKS для доступа к метрикам Windows, развернув файл YAML "windows-exporter-daemonset". Включите следующие сборщики. Для получения дополнительных сведений о сборщиках см. "Экспортер 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 и этот файл параметров для создания групп правил. Это добавляет необходимые правила записи и не является операцией 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 .