Eventos
17 de mar., 21 - 21 de mar., 10
Junte-se à série de encontros para criar soluções de IA escaláveis com base em casos de uso do mundo real com outros desenvolvedores e especialistas.
Registrar agoraNão há mais suporte para esse navegador.
Atualize o Microsoft Edge para aproveitar os recursos, o suporte técnico e as atualizações de segurança mais recentes.
Este artigo descreve como habilitar o monitoramento completo dos seus clusters do Kubernetes utilizando 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 utilizando a CLI do Azure,o modelo do Azure Resource Manager, Terraform ou Azure Policy. 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 coleção de logs apenas aos dados necessários:
Este artigo fornece orientações de integração para os seguintes tipos de clusters. As diferenças no processo para cada tipo estão destacadas nas seções relevantes.
Permissões
Pré-requisitos do Prometheus gerenciado
Pré-requisitos dos clusters do Kubernetes habilitados para Arc
Observação
A extensão Managed Prometheus Arc-Enabled Kubernetes (prévia) não oferece suporte às seguintes configurações:
A tabela a seguir descreve os workspaces necessários para suportar o Prometheus gerenciado e os Insights de contêiner. Você pode criar cada workspace como parte do processo de integração ou usar um workspace já existente. Confira Criar uma arquitetura de workspace do Log Analytics para obter diretrizes sobre quantos workspaces criar e onde posicioná-los.
Recurso | Workspace | Observações |
---|---|---|
Prometheus Gerenciado | Workspace do Azure Monitor | A permissão Contributor é suficiente para habilitar o complemento para enviar dados para o workspace do Azure Monitor. Você precisará de permissão no nível de Owner para vincular seu Workspace do Azure Monitor para exibir métricas no Espaço Gerenciado do Azure para Grafana. Isso é necessário porque o usuário que executa a etapa de integração precisa ser capaz de fornecer a função Monitoring Reader à Identidade do Sistema de Espaço Gerenciado do Azure para Grafana no Workspace do Azure Monitor para consultar as métricas. |
Insights do contêiner | Espaço de Trabalho do Log Analytics | Você pode anexar um cluster do AKS a um workspace do Log Analytics em uma assinatura diferente do Azure no mesmo locatário do Microsoft Entra, mas precisa 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. Caso esteja conectando um cluster do AKS existente a um workspace do Log Analytics em outra assinatura, o provedor de recursos Microsoft.ContainerService deverá ser registrado na assinatura do workspace do Log Analytics. Para saber mais, confira Registrar provedores de recursos. Para obter uma lista dos pares de mapeamento com suporte a serem usados para o workspace padrão, consulte Mapeamento de regiões para insights de contêiner. |
Grafana gerenciado | Workspace do Espaço Gerenciado do Azure para Grafana | Vincule seu workspace do Grafana ao seu workspace do Azure Monitor para disponibilizar as métricas do Prometheus coletadas do seu cluster nos painéis do Grafana. |
Use um dos métodos a seguir para habilitar a extração de métricas do Prometheus no seu cluster e ativar o Grafana gerenciado para visualizar as métricas. Confira Vincular um workspace do Grafana para opções de conectar seu workspace do Azure Monitor e o workspace do Espaço Gerenciado do Azure para Grafana.
Observação
Se você tiver um único Recurso do Azure Monitor vinculado a privado, a habilitação do Prometheus não funcionará se o cluster do AKS e o Workspace do Azure Monitor estiverem em regiões diferentes. A configuração necessária para o complemento do 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 do AKS e uma nova DCRA (associação) na mesma região de cluster do AKS. Associe o novo DCE ao cluster do AKS e nomeie a nova associação (DCRA) como configurationAccessEndpoint. Para obter instruções completas sobre como configurar os DCEs associados ao workspace do Azure Monitor para usar um Link Privado para ingestão de dados, confira Habilitar o link privado para monitoramento do Kubernetes no Azure Monitor.
Se você não especificar um workspace do Azure Monitor já existente nos comandos a seguir, será usado o workspace padrão para o grupo de recursos. Se ainda não houver um workspace padrão na região do seu cluster, um novo será criado com um nome seguindo o formato DefaultAzureMonitorWorkspace-<mapped_region>
dentro de um grupo de recursos chamado DefaultRG-<cluster_region>
.
az extension remove --name aks-preview
.az extension add --name k8s-extension
.Use a opção -enable-azure-monitor-metrics
, az aks create
ou az aks update
(dependendo se você estiver criando um novo cluster ou atualizando um cluster existente) para instalar o complemento de métricas que extrai 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 parâmetros opcionais a seguir:
--ksm-metric-annotations-allow-list
--AzureMonitorMetrics.KubeStateMetrics.MetricAnnotationsAllowList
*
pode ser fornecido para cada recurso para permitir anotações, mas isso tem sérias 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 rótulos, mas isso tem severas implicações de desempenho. Por exemplo, pods=[app],namespaces=[k8s-label-1,k8s-label-n,...],...
.--enable-windows-recording-rules
permite que você habilite os grupos de regras de gravação necessários para o funcionamento adequado dos painéis do Windows.Use um dos métodos a seguir para habilitar o Insights de contêiner. Depois de concluir, confira Configurar a coleta de dados do agente para obter Insights de contêiner para ajustar a configuração e assegurar que não esteja coletando mais dados do que o necessário.
Use um dos comandos a seguir para habilitar o monitoramento dos clusters habilitados para Arc e AKS. Se você não especificar um workspace do Log Analytics já existente nos comandos a seguir, será usado o workspace padrão para o grupo de recursos. Se um workspace padrão ainda não existir na região do cluster, um será criado com um nome no formato DefaultWorkspace-<GUID>-<Region>
.
Observação
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 forem explicitamente definidos como 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>
Confira a seção de solicitações e limites de recursos do gráfico Helm para 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 Arc 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 definição de 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 Arc com nós ARO, OpenShift ou Windows
Não há suporte para autenticação de identidade gerenciada para clusters Kubernetes habilitados para Arc com nós ARO (Red Hat OpenShift no Azure), 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 do Log Analytics permanecem intactos.
az k8s-extension delete --name azuremonitor-containers --cluster-type connectedClusters --cluster-name <cluster-name> --resource-group <resource-group>
Ao criar um novo cluster do AKS no portal do Azure, você pode habilitar o Prometheus, o Contêiner Insights e o Grafana na guia Monitoramento. Verifique o Habilitar logs de contêiner, habilitarde métricas do Prometheus e habilitar caixas de seleção do Grafana.
Observação
Não há limite de CPU/memória no windows-exporter-daemonset.yaml, portanto, ele pode provisionar em excesso os nós do Windows
Para obter mais detalhes, confira Reserva de recursos
Ao implantar cargas de trabalho, defina limites de recursos de memória e CPU nos 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. O agendamento de pods sem limites pode provisionar excessivamente 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 do Prometheus Gerenciado (prometheus_collector), a coleção de métricas do Windows foi habilitada para os clusters do AKS. A integração para o complemento de Métricas do Azure Monitor permite que os pods do Windows Daemonset comecem a serem executados em seus pools de nós. Tanto o Windows Server 2019 quanto 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 exportador de janelas em nós do 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, confira Exportador do Prometheus para métricas do Windows.
Implante o arquivo YAML windows-exporter-daemonset. Observe que, se houver algum taint aplicado ao nó, você precisará aplicar as tolerâncias apropriadas.
kubectl apply -f windows-exporter-daemonset.yaml
Aplicar ama-metrics-settings-configmap ao seu cluster. Defina os valores boolianos windowsexporter
e windowskubeproxy
para true
. Para obter mais informações, consulte Configurações do complemento de Métricas 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.Utilize a ferramenta de linha de comando kubectl para verificar se o agente foi 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 do Linux no cluster. A saída deve ser assemelhar ao exemplo a seguir:
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 assemelhar ao exemplo a seguir:
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 no Prometheus
kubectl get rs --namespace=kube-system
A saída deve ser assemelhar ao exemplo a seguir:
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 do Linux no cluster. A saída deve ser assemelhar ao exemplo a seguir:
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 assemelhar ao exemplo a seguir:
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
Verifique a implantação da solução Insights de contêiner
kubectl get deployment ama-logs-rs --namespace=kube-system
A saída deve ser assemelhar ao exemplo a seguir:
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
Exibir configuração com a CLI
Use o comando aks show
para descobrir se a solução está habilitada, a ID do recurso do workspace do Log Analytics e informações resumidas sobre o cluster.
az aks show --resource-group <resourceGroupofAKSCluster> --name <nameofAksCluster>
O comando retornará informações referentes à solução formatadas em JSON. A seção addonProfiles
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 do Azure são criados em sua assinatura:
Nome do Recurso | Tipo de recurso | Grupo de recursos | Região/Localização | Descrição |
---|---|---|---|---|
MSCI-<aksclusterregion>-<clustername> |
Regra de Coleta de Dados | Igual ao cluster | Igual ao workspace do Log Analytics | Esta regra de coleta de dados destina-se à coleta de logs pelo agente do Azure Monitor, que utiliza o workspace do Log Analytics como destino e está associada ao recurso de cluster do AKS. |
MSPROM-<aksclusterregion>-<clustername> |
Regra de Coleta de Dados | Igual ao cluster | Igual ao workspace do Azure Monitor. | Essa regra de coleta de dados destina-se à coleta de métricas do Prometheus por complemento de métricas, que o workspace do Azure Monitor escolheu como destino e também está associada ao recurso de cluster do AKS |
MSPROM-<aksclusterregion>-<clustername> |
Ponto de extremidade da Coleta de Dados | Igual ao cluster | Igual ao workspace do Azure Monitor. | Esse ponto de extremidade da coleta de dados é usado pela regra de coleta de dados acima para ingerir métricas do Prometheus do complemento de métricas |
Quando você cria um novo workspace do Azure Monitor, os recursos adicionais a seguir são criados como parte dele
Nome do Recurso | Tipo de recurso | Grupo de recursos | Região/Localização | Descrição |
---|---|---|---|---|
<azuremonitor-workspace-name> |
Regra de Coleta de Dados | MA_<azuremonitor-workspace-name>_<azuremonitor-workspace-region>_managed | Igual ao workspace do Azure Monitor | DCR criada quando você usa o servidor Prometheus OSS para Gravação Remota no Workspace do Azure Monitor. |
<azuremonitor-workspace-name> |
Ponto de extremidade da coleta de dados | MA_<azuremonitor-workspace-name>_<azuremonitor-workspace-region>_managed | Igual ao workspace do Azure Monitor | DCE criado quando você usa o servidor Prometheus OSS para Gravação Remota no Workspace do Azure Monitor. |
As principais diferenças no monitoramento de um cluster do Windows Server em comparação com um cluster do Linux incluem:
Observação
O suporte aos insights do Contêiner para o sistema operacional Windows Server 2022 está em versão prévia.
O agente do Linux em contêineres (pod replicaset) faz chamadas à API para todos os nós do Windows na porta segura do Kubelet (10250) no 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 entrada e saída de modo que a coleta de métricas relacionadas desempenho do contêiner e do nó do Windows funcione.
Se tiver um cluster do Kubernetes com nós do Windows, revise e configure o grupo de segurança de rede e as políticas de rede para verificar se a porta segura do Kubelet (:10250) está aberta tanto para entrada quanto para saída na rede virtual do cluster.
Eventos
17 de mar., 21 - 21 de mar., 10
Junte-se à série de encontros para criar soluções de IA escaláveis com base em casos de uso do mundo real com outros desenvolvedores e especialistas.
Registrar agoraTreinamento
Roteiro 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