evento
17/03, 21 - 21/03, 10
Junte-se à série meetup para criar soluções de IA escaláveis com base em casos de uso do mundo real com outros desenvolvedores e especialistas.
Registe-se agoraEste browser já não é suportado.
Atualize para o Microsoft Edge para tirar partido das mais recentes funcionalidades, atualizações de segurança e de suporte técnico.
Este artigo descreve como habilitar o monitoramento completo de seus clusters Kubernetes usando os seguintes recursos do Azure Monitor:
Usando o portal do Azure, você pode habilitar todos os recursos ao mesmo tempo. Você também pode habilitá-los individualmente usando a CLI do Azure, o modelo do Azure Resource Manager, o Terraform ou a Política do Azure. Cada um desses métodos é descrito neste artigo.
Importante
Os clusters do Kubernetes geram muitos dados de log, o que pode resultar em custos significativos se você não for seletivo sobre os logs coletados. Antes de habilitar o monitoramento para seu cluster, consulte os seguintes artigos para garantir que seu ambiente seja otimizado para custo e que você limite sua coleta de logs apenas aos dados necessários:
Este artigo fornece orientações de integração para os seguintes tipos de clusters. Quaisquer diferenças no processo para cada tipo são anotadas nas seções relevantes.
Permissões
Pré-requisitos do Managed Prometheus
Pré-requisitos de clusters Kubernetes habilitados para Arc
Nota
A extensão Managed Prometheus Arc-Enabled Kubernetes (preview) não suporta as seguintes configurações:
A tabela a seguir descreve os espaços de trabalho necessários para dar suporte a insights do Managed Prometheus e do Container. Você pode criar cada espaço de trabalho como parte do processo de integração ou usar um espaço de trabalho existente. Consulte Criar uma arquitetura de espaço de trabalho do Log Analytics para obter orientação sobre quantos espaços de trabalho criar e onde eles devem ser colocados.
Caraterística | Área de trabalho | Notas |
---|---|---|
Prometheus Gerido | Espaço de trabalho do Azure Monitor | Contributor permissão é suficiente para habilitar o complemento para enviar dados para o espaço de trabalho do Azure Monitor. Você precisará de Owner permissão de nível para vincular seu Espaço de Trabalho do Azure Monitor para exibir métricas no Azure Managed Grafana. Isso é necessário porque o usuário que executa a etapa de integração precisa ser capaz de atribuir a função Identidade Monitoring Reader do Sistema Grafana Gerenciado do Azure no Espaço de Trabalho do Azure Monitor para consultar as métricas. |
Informações de contentores | Área de trabalho do Log Analytics | Você pode anexar um cluster AKS a um espaço de trabalho do Log Analytics em uma assinatura diferente do Azure no mesmo locatário do Microsoft Entra, mas deve usar a CLI do Azure ou um modelo do Azure Resource Manager. No momento, não é possível executar essa configuração com o portal do Azure. Se você estiver conectando um cluster AKS existente a um espaço de trabalho do Log Analytics em outra assinatura, o provedor de recursos Microsoft.ContainerService deverá estar registrado na assinatura com o espaço de trabalho do Log Analytics. Para obter mais informações, consulte Registar fornecedor de recursos. Para obter uma lista dos pares de mapeamento suportados a serem usados para o espaço de trabalho padrão, consulte Mapeamentos de região suportados pelo Container insights. |
Managed Grafana | Espaço de trabalho do Azure Managed Grafana | Vincule seu espaço de trabalho do Grafana ao espaço de trabalho do Azure Monitor para disponibilizar as métricas do Prometheus coletadas do cluster para os painéis do Grafana. |
Use um dos seguintes métodos para habilitar a raspagem de métricas do Prometheus do cluster e habilitar o Managed Grafana para visualizar as métricas. Consulte Vincular um espaço de trabalho do Grafana para obter opções para conectar seu espaço de trabalho do Azure Monitor e o espaço de trabalho do Azure Managed Grafana.
Nota
Se você tiver um único Recurso do Azure Monitor vinculado a privados, a habilitação do Prometheus não funcionará se o cluster AKS e o Espaço de Trabalho do Azure Monitor estiverem em regiões diferentes. A configuração necessária para o complemento Prometheus não está disponível entre regiões devido à restrição de link privado. Para resolver isso, crie um novo DCE no local do cluster AKS e um novo DCRA (associação) na mesma região do cluster AKS. Associe o novo DCE ao cluster AKS e nomeie a nova associação (DCRA) como configurationAccessEndpoint. Para obter instruções completas sobre como configurar os DCEs associados ao seu espaço de trabalho do Azure Monitor para usar um Link Privado para ingestão de dados, consulte Habilitar link privado para monitoramento do Kubernetes no Azure Monitor.
Se você não especificar um espaço de trabalho existente do Azure Monitor nos comandos a seguir, o espaço de trabalho padrão para o grupo de recursos será usado. Se ainda não existir um espaço de trabalho padrão na região do cluster, um com um nome no formato DefaultAzureMonitorWorkspace-<mapped_region>
será criado em um grupo de recursos com o nome DefaultRG-<cluster_region>
.
az extension remove --name aks-preview
.az extension add --name k8s-extension
.Use a -enable-azure-monitor-metrics
opção az aks create
ou az aks update
(dependendo se você está criando um novo cluster ou atualizando um cluster existente) para instalar o complemento de métricas que raspa as métricas do Prometheus.
Comandos de exemplo
### 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]"
### Use default Azure Monitor workspace
az k8s-extension create --name azuremonitor-metrics --cluster-name <cluster-name> --resource-group <resource-group> --cluster-type connectedClusters --extension-type Microsoft.AzureMonitor.Containers.Metrics
## Use existing Azure Monitor workspace
az k8s-extension create --name azuremonitor-metrics --cluster-name <cluster-name> --resource-group <resource-group> --cluster-type connectedClusters --extension-type Microsoft.AzureMonitor.Containers.Metrics --configuration-settings azure-monitor-workspace-resource-id=<workspace-name-resource-id>
### Use an existing Azure Monitor workspace and link with an existing Grafana workspace
az k8s-extension create --name azuremonitor-metrics --cluster-name <cluster-name> --resource-group <resource-group> --cluster-type connectedClusters --extension-type Microsoft.AzureMonitor.Containers.Metrics --configuration-settings azure-monitor-workspace-resource-id=<workspace-name-resource-id> grafana-resource-id=<grafana-workspace-name-resource-id>
### Use optional parameters
az k8s-extension create --name azuremonitor-metrics --cluster-name <cluster-name> --resource-group <resource-group> --cluster-type connectedClusters --extension-type Microsoft.AzureMonitor.Containers.Metrics --configuration-settings azure-monitor-workspace-resource-id=<workspace-name-resource-id> grafana-resource-id=<grafana-workspace-name-resource-id> AzureMonitorMetrics.KubeStateMetrics.MetricAnnotationsAllowList="pods=[k8s-annotation-1,k8s-annotation-n]" AzureMonitorMetrics.KubeStateMetrics.MetricLabelsAllowlist "namespaces=[k8s-label-1,k8s-label-n]"
Qualquer um dos comandos pode usar os seguintes parâmetros opcionais:
--ksm-metric-annotations-allow-list
--AzureMonitorMetrics.KubeStateMetrics.MetricAnnotationsAllowList
*
recurso pode ser fornecido para permitir quaisquer anotações, mas isso tem graves implicações de desempenho. Por exemplo, pods=[kubernetes.io/team,...],namespaces=[kubernetes.io/team],...
.--ksm-metric-labels-allow-list
--AzureMonitorMetrics.KubeStateMetrics.MetricLabelsAllowlist
*
pode ser fornecido para cada recurso para permitir quaisquer rótulos, mas isso tem graves implicações de desempenho. Por exemplo, pods=[app],namespaces=[k8s-label-1,k8s-label-n,...],...
.--enable-windows-recording-rules
Permite ativar os grupos de regras de gravação necessários para o funcionamento adequado dos painéis do Windows.Use um dos seguintes métodos para habilitar o Container insights em seu cluster. Quando terminar, consulte Configurar a recolha de dados do agente para informações de contentores para personalizar a configuração e para garantir que não recolhe mais dados do que o necessário.
Use um dos seguintes comandos para habilitar o monitoramento de seus clusters habilitados para AKS e Arc. Se você não especificar um espaço de trabalho existente do Log Analytics, o espaço de trabalho padrão para o grupo de recursos será usado. Se ainda não existir um espaço de trabalho padrão na região do cluster, será criado um com um nome no formato DefaultWorkspace-<GUID>-<Region>
.
Nota
Você pode habilitar o esquema ContainerLogV2 para um cluster usando a Regra de Coleta de Dados (DCR) ou o ConfigMap do cluster. Se ambas as configurações estiverem habilitadas, o ConfigMap terá precedência. Os logs Stdout e stderr só serão ingeridos na tabela ContainerLog quando o DCR e o ConfigMap estiverem explicitamente desativados.
### 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 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
Exemplo
az aks enable-addons --addon monitoring --name "my-cluster" --resource-group "my-resource-group" --workspace-resource-id "/subscriptions/my-subscription/resourceGroups/my-resource-group/providers/Microsoft.OperationalInsights/workspaces/my-workspace"
### Use default Log Analytics workspace
az k8s-extension create --name azuremonitor-containers --cluster-name <cluster-name> --resource-group <resource-group> --cluster-type connectedClusters --extension-type Microsoft.AzureMonitor.Containers
### Use existing Log Analytics workspace
az k8s-extension create --name azuremonitor-containers --cluster-name <cluster-name> --resource-group <resource-group> --cluster-type connectedClusters --extension-type Microsoft.AzureMonitor.Containers --configuration-settings logAnalyticsWorkspaceResourceID=<workspace-resource-id>
### Use managed identity authentication (default as k8s-extension version 1.43.0)
az k8s-extension create --name azuremonitor-containers --cluster-name <cluster-name> --resource-group <resource-group> --cluster-type connectedClusters --extension-type Microsoft.AzureMonitor.Containers --configuration-settings amalogs.useAADAuth=true
### Use advanced configuration settings
az k8s-extension create --name azuremonitor-containers --cluster-name <cluster-name> --resource-group <resource-group> --cluster-type connectedClusters --extension-type Microsoft.AzureMonitor.Containers --configuration-settings amalogs.resources.daemonset.limits.cpu=150m amalogs.resources.daemonset.limits.memory=600Mi amalogs.resources.deployment.limits.cpu=1 amalogs.resources.deployment.limits.memory=750Mi
### With custom mount path for container stdout & stderr logs
### Custom mount path not required for Azure Stack Edge version > 2318. Custom mount path must be /home/data/docker for Azure Stack Edge cluster with version <= 2318
az k8s-extension create --name azuremonitor-containers --cluster-name <cluster-name> --resource-group <resource-group> --cluster-type connectedClusters --extension-type Microsoft.AzureMonitor.Containers --configuration-settings amalogs.logsettings.custommountpath=<customMountPath>
Consulte a seção solicitações de recursos e limites do gráfico Helm para obter as definições de configuração disponíveis.
Exemplo
az k8s-extension create --name azuremonitor-containers --cluster-name "my-cluster" --resource-group "my-resource-group" --cluster-type connectedClusters --extension-type Microsoft.AzureMonitor.Containers --configuration-settings logAnalyticsWorkspaceResourceID="/subscriptions/my-subscription/resourceGroups/my-resource-group/providers/Microsoft.OperationalInsights/workspaces/my-workspace"
Cluster habilitado para arco com proxy de encaminhamento
Se o cluster estiver configurado com um proxy de encaminhamento, as configurações de proxy serão aplicadas automaticamente à extensão. No caso de um cluster com AMPLS + proxy, a configuração de proxy deve ser ignorada. Integre a extensão com a configuração .amalogs.ignoreExtensionProxySettings=true
az k8s-extension create --name azuremonitor-containers --cluster-name <cluster-name> --resource-group <resource-group> --cluster-type connectedClusters --extension-type Microsoft.AzureMonitor.Containers --configuration-settings amalogs.ignoreExtensionProxySettings=true
Cluster habilitado para arco com nós ARO ou OpenShift ou Windows
A autenticação de identidade gerenciada não é suportada para clusters Kubernetes habilitados para Arc com ARO (Azure Red Hat OpenShift) ou nós OpenShift ou Windows. Use a autenticação herdada especificando amalogs.useAADAuth=false
como no exemplo a seguir.
az k8s-extension create --name azuremonitor-containers --cluster-name <cluster-name> --resource-group <resource-group> --cluster-type connectedClusters --extension-type Microsoft.AzureMonitor.Containers --configuration-settings amalogs.useAADAuth=false
Excluir instância de extensão
O comando a seguir exclui apenas a instância de extensão, mas não exclui o espaço de trabalho do Log Analytics. Os dados no recurso Log Analytics são deixados intactos.
az k8s-extension delete --name azuremonitor-containers --cluster-type connectedClusters --cluster-name <cluster-name> --resource-group <resource-group>
Ao criar um novo cluster AKS no portal do Azure, você pode habilitar Prometheus, Container insights e Grafana na guia Monitoramento. Certifique-se de marcar as caixas de seleção Habilitar logs de contêiner, Habilitar métricas Prometheus e Habilitar Grafana.
Nota
Não há limite de CPU/memória no windows-exporter-daemonset.yaml, portanto, ele pode provisionar demais os nós do Windows
Para obter mais detalhes, consulte Reserva de recursos
À medida que você implanta cargas de trabalho, defina a memória de recursos e os limites de CPU em contêineres. Isso também subtrai do NodeAllocatable e ajuda o agendador de todo o cluster a determinar quais pods colocar em quais nós. Agendar pods sem limites pode provisionar demais os nós do Windows e, em casos extremos, pode fazer com que os nós se tornem não íntegros.
A partir da versão 6.4.0-main-02-22-2023-3ee44b9e do contêiner de complemento Managed Prometheus (prometheus_collector), a coleta de métricas do Windows foi habilitada para os clusters AKS. A integração ao complemento Azure Monitor Metrics permite que os pods DaemonSet do Windows comecem a ser executados em seus pools de nós. O Windows Server 2019 e o Windows Server 2022 são suportados. Siga estas etapas para permitir que os pods coletem métricas de seus pools de nós do Windows.
Instale manualmente o windows-exporter em nós AKS para acessar as métricas do Windows implantando o arquivo YAML windows-exporter-daemonset . Habilite os seguintes coletores:
[defaults]
container
memory
process
cpu_info
Para obter mais coletores, consulte Prometheus exporter for Windows metrics.
Implante o arquivo YAML windows-exporter-daemonset . Observe que, se houver alguma mancha aplicada no nó, você precisará aplicar as tolerâncias apropriadas.
kubectl apply -f windows-exporter-daemonset.yaml
Aplique o ama-metrics-settings-configmap ao cluster. Defina o windowsexporter
e windowskubeproxy
Booleans como true
. Para obter mais informações, consulte Metrics add-on settings configmap.
Habilite as regras de gravação necessárias para os painéis prontos para uso:
--enable-windows-recording-rules
.enableWindowsRecordingRules
como true
no arquivo de parâmetros.Use a ferramenta de linha de comando kubectl para verificar se o agente está implantado corretamente.
Verifique se o DaemonSet foi implantado corretamente nos pools de nós do Linux
kubectl get ds ama-metrics-node --namespace=kube-system
O número de pods deve ser igual ao número de nós Linux no cluster. A saída deve ser semelhante ao seguinte exemplo:
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
Verifique se os nós do Windows foram implantados corretamente
kubectl get ds ama-metrics-win-node --namespace=kube-system
O número de pods deve ser igual ao número de nós do Windows no cluster. A saída deve ser semelhante ao seguinte exemplo:
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
Verifique se os dois ReplicaSets foram implantados para o Prometheus
kubectl get rs --namespace=kube-system
A saída deve ser semelhante ao seguinte exemplo:
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
Verifique se os DaemonSets foram implantados corretamente nos pools de nós do Linux
kubectl get ds ama-logs --namespace=kube-system
O número de pods deve ser igual ao número de nós Linux no cluster. A saída deve ser semelhante ao seguinte exemplo:
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
Verifique se os nós do Windows foram implantados corretamente
kubectl get ds ama-logs-windows --namespace=kube-system
O número de pods deve ser igual ao número de nós do Windows no cluster. A saída deve ser semelhante ao seguinte exemplo:
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
Verificar a implantação da solução Container insights
kubectl get deployment ama-logs-rs --namespace=kube-system
A saída deve ser semelhante ao seguinte exemplo:
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
Ver configuração com CLI
Use o aks show
comando para descobrir se a solução está habilitada, o ID do recurso do espaço de trabalho do Log Analytics e informações resumidas sobre o cluster.
az aks show --resource-group <resourceGroupofAKSCluster> --name <nameofAksCluster>
O comando retornará informações formatadas em JSON sobre a solução. A addonProfiles
seção deve incluir informações sobre o omsagent
como no exemplo a seguir:
"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
},
}
Quando você habilita o monitoramento, os seguintes recursos são criados em sua assinatura:
Nome do Recurso | Tipo de Recurso | Grupo de Recursos | Região/Localização | Description |
---|---|---|---|---|
MSCI-<aksclusterregion>-<clustername> |
Regra de Recolha de Dados | O mesmo que cluster | O mesmo que o espaço de trabalho do Log Analytics | Esta regra de recolha de dados destina-se à recolha de registos pelo agente do Azure Monitor, que utiliza a área de trabalho do Log Analytics como destino e está associada ao recurso de cluster AKS. |
MSPROM-<aksclusterregion>-<clustername> |
Regra de Recolha de Dados | O mesmo que cluster | O mesmo que o espaço de trabalho do Azure Monitor | Esta regra de recolha de dados destina-se à recolha de métricas prometheus por addon de métricas, que tem a área de trabalho de monitorização do Azure escolhida como destino e também está associada ao recurso de cluster AKS |
MSPROM-<aksclusterregion>-<clustername> |
Ponto de extremidade de coleta de dados | O mesmo que cluster | O mesmo que o espaço de trabalho do Azure Monitor | Este ponto de extremidade de coleta de dados é usado pela regra de coleta de dados acima para ingerir métricas Prometheus do complemento de métricas |
Quando você cria um novo espaço de trabalho do Azure Monitor, os seguintes recursos adicionais são criados como parte dele
Nome do Recurso | Tipo de Recurso | Grupo de Recursos | Região/Localização | Description |
---|---|---|---|---|
<azuremonitor-workspace-name> |
Regra de Recolha de Dados | MA_<azuremonitor-workspace-name>_<azuremonitor-workspace-region>_managed | O mesmo que o Azure Monitor Workspace | DCR criado quando você usa o servidor OSS Prometheus para Gravação Remota no Espaço de Trabalho do Azure Monitor. |
<azuremonitor-workspace-name> |
Ponto Final de Recolha de Dados | MA_<azuremonitor-workspace-name>_<azuremonitor-workspace-region>_managed | O mesmo que o Azure Monitor Workspace | DCE criado quando você usa o servidor OSS Prometheus para Gravação Remota no Espaço de Trabalho do Azure Monitor. |
As principais diferenças no monitoramento de um cluster do Windows Server em comparação com um cluster Linux incluem:
Nota
O suporte de informações de contêiner para o sistema operacional Windows Server 2022 está em visualização.
O agente Linux em contêiner (pod replicaset) faz chamadas de API para todos os nós do Windows na porta segura do Kubelet (10250) dentro do cluster para coletar métricas relacionadas ao desempenho do nó e do contêiner. A porta segura do Kubelet (:10250) deve ser aberta na rede virtual do cluster para que a coleta de métricas relacionadas ao desempenho do nó do Windows e do contêiner funcione.
Se você tiver um cluster Kubernetes com nós do Windows, revise e configure o grupo de segurança de rede e as políticas de rede para garantir que a porta segura do Kubelet (:10250) esteja aberta para entrada e saída na rede virtual do cluster.
evento
17/03, 21 - 21/03, 10
Junte-se à série meetup para criar soluções de IA escaláveis com base em casos de uso do mundo real com outros desenvolvedores e especialistas.
Registe-se agoraFormação
Percurso de aprendizagem
Use advance techniques in canvas apps to perform custom updates and optimization - Training
Use advance techniques in canvas apps to perform custom updates and optimization
Documentação
Solucionar problemas de informações do contêiner - Azure Monitor
Este artigo descreve como você pode solucionar e resolver problemas com o Container insights.
Recursos do Azure Monitor para monitoramento do Kubernetes - Azure Monitor
Descreve as informações de contêiner e o Managed Prometheus no Azure Monitor, que trabalham juntos para monitorar seus clusters Kubernetes.
Configurar a coleta de dados do Container insights - Azure Monitor
Detalhes sobre como configurar a coleta de dados no Azure Monitor Container insights depois de habilitá-la em seu cluster Kubernetes.