Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo mostra como configurar a Observabilidade da Rede de Contêineres para o Serviço de Kubernetes do Azure (AKS) usando Prometheus e Grafana gerenciados e o BYO Prometheus e Grafana, e como visualizar as métricas extraídas
Você pode usar a Observabilidade de Rede de Contêiner para recolher dados sobre o tráfego de rede dos seus clusters do AKS. Ele habilita uma plataforma centralizada para monitorar a integridade do aplicativo e da rede. Atualmente, as métricas são armazenadas no Prometheus e o Grafana pode ser usado para visualizá-las. A Observabilidade da Rede de Contêineres também oferece a capacidade de habilitar o Hubble. Esses recursos têm suporte para clusters Cilium e não Cilium.
A Observabilidade de Rede de Contêiner é um dos recursos dos Serviços Avançados de Rede de Contêiner. Para obter mais informações sobre os Serviços Avançados de Rede de Contêiner para o AKS (Serviço de Kubernetes do Azure), consulte O que são serviços avançados de rede de contêiner para o AKS (Serviço de Kubernetes do Azure)?
Importante
A partir de 30 de novembro de 2025, o AKS (Serviço de Kubernetes do Azure) não dá mais suporte ou fornece atualizações de segurança para o Azure Linux 2.0. A imagem do nó do Azure no Linux 2.0 está congelada na versão 202512.06.0. A partir de 31 de março de 2026, as imagens de nó serão removidas e não será possível escalar os grupos de nós. Migre para uma versão do Azure Linux com suporte atualizando os pools de nós para uma versão do Kubernetes com suporte ou migrando para o osSku AzureLinux3. Para obter mais informações, consulte [Desativação] Pools de nós do Azure Linux 2.0 no AKS.
Prerequisites
- Uma conta do Azure com uma assinatura ativa. Se você não tiver uma, crie uma conta gratuita antes de começar.
Use o ambiente Bash no Azure Cloud Shell. Para obter mais informações, confira Introdução ao Azure Cloud Shell.
Se você preferir executar comandos de referência da CLI localmente, instale a CLI do Azure. Para execuções no Windows ou no macOS, considere executar a CLI do Azure em um contêiner do Docker. Para obter mais informações, confira Como executar a CLI do Azure em um contêiner do Docker.
Se você estiver usando uma instalação local, entre na CLI do Azure usando o comando az login . Para concluir o processo de autenticação, siga as etapas exibidas no terminal. Para obter outras opções de entrada, consulte Autenticar no Azure usando a CLI do Azure.
Quando solicitado, instale a extensão da CLI do Azure no primeiro uso. Para obter mais informações sobre extensões, confira Usar e gerenciar extensões com a CLI do Azure.
Execute o comando az version para localizar a versão e as bibliotecas dependentes que estão instaladas. Para atualizar para a versão mais recente, execute az upgrade.
- A versão mínima da CLI do Azure necessária para as etapas neste artigo é 2.56.0. Execute
az --versionpara encontrar a versão. Se você precisa instalar ou atualizar, consulte Instalar a CLI do Azure.
Habilitar os Serviços Avançados de Rede de Contêineres
Para continuar, você deve ter um cluster do AKS com os Serviços Avançados de Rede de Contêineres habilitados.
O comando az aks create com o flag dos Serviços Avançados de Rede de Contêiner, --enable-acns, cria um novo cluster AKS com todos os recursos dos Serviços Avançados de Rede de Contêiner. Esses recursos incluem:
Observabilidade de Rede de Contêiner: Fornece insights sobre o tráfego de rede. Para saber mais, visite Observabilidade de Rede de Contêiner.
Segurança de Rede de Contêiner: Oferece recursos de segurança como filtragem de FQDN. Para saber mais, visite Segurança de Rede de Contêiner.
Note
Clusters com o plano de dados Cilium dão suporte à Observabilidade de Rede de Contêiner e a segurança de rede de contêiner a partir da versão 1.29 do Kubernetes.
# Set an environment variable for the AKS cluster name. Make sure to replace the placeholder with your own value.
export CLUSTER_NAME="<aks-cluster-name>"
# Create an AKS cluster
az aks create \
--name $CLUSTER_NAME \
--resource-group $RESOURCE_GROUP \
--generate-ssh-keys \
--location eastus \
--max-pods 250 \
--network-plugin azure \
--network-plugin-mode overlay \
--network-dataplane cilium \
--node-count 2 \
--pod-cidr 192.168.0.0/16 \
--kubernetes-version 1.29 \
--enable-acns
Habilitar Serviços Avançados de Rede de Contêineres em um cluster existente
O comando az aks update com o sinalizador de Serviços Avançados de Redes de Contêiner --enable-acns atualiza um cluster AKS existente com todos os recursos dos Serviços Avançados de Redes de Contêiner, incluindo Observabilidade de Redes de Contêiner e o recurso de Segurança de Redes de Contêiner.
Note
Somente clusters com o plano de dados Cilium dão suporte para os recursos de Segurança de Rede de Contêiner dos Serviços Avançados de Rede de Contêiner.
az aks update \
--resource-group $RESOURCE_GROUP \
--name $CLUSTER_NAME \
--enable-acns
Obter credenciais do cluster
Depois de obter suas credenciais de cluster usando o comando az aks get-credentials.
az aks get-credentials --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP
Prometheus e Grafana gerenciados pelo Azure
Ignore esta Seção se estiver usando BYO Prometheus e Grafana
Use o exemplo a seguir para instalar e ativar o Prometheus e o Grafana em seu cluster do AKS.
Criar um recurso do Azure Monitor
#Set an environment variable for the Grafana name. Make sure to replace the placeholder with your own value.
export AZURE_MONITOR_NAME="<azure-monitor-name>"
# Create Azure monitor resource
az resource create \
--resource-group $RESOURCE_GROUP \
--namespace microsoft.monitor \
--resource-type accounts \
--name $AZURE_MONITOR_NAME \
--location eastus \
--properties '{}'
Criar instância do Azure Managed Grafana
Use az grafana create para criar uma instância do Grafana. O nome da instância do Grafana deve ser exclusivo.
# Set an environment variable for the Grafana name. Make sure to replace the placeholder with your own value.
export GRAFANA_NAME="<grafana-name>"
# Create Grafana instance
az grafana create \
--name $GRAFANA_NAME \
--resource-group $RESOURCE_GROUP
Coloque os IDs de recurso do Azure Managed Grafana e do Azure Monitor em variáveis
Use az grafana show para colocar a ID do recurso Grafana em uma variável. Use az resource show para colocar a ID do recurso Azure Monitor em uma variável. Substitua myGrafana pelo nome da instância do Grafana.
grafanaId=$(az grafana show \
--name $GRAFANA_NAME \
--resource-group $RESOURCE_GROUP \
--query id \
--output tsv)
azuremonitorId=$(az resource show \
--resource-group $RESOURCE_GROUP \
--name $AZURE_MONITOR_NAME \
--resource-type "Microsoft.Monitor/accounts" \
--query id \
--output tsv)
Associe o Azure Monitor e o Azure Managed Grafana ao cluster AKS
Use az aks update para vincular os recursos do Azure Monitor e do Grafana ao seu cluster do AKS.
az aks update \
--name $CLUSTER_NAME \
--resource-group $RESOURCE_GROUP \
--enable-azure-monitor-metrics \
--azure-monitor-workspace-resource-id $azuremonitorId \
--grafana-resource-id $grafanaId
Visualization
Visualização usando o Grafana Gerenciado do Azure
Ignore esta etapa se estiver usando o BYO Grafana
Note
A métrica de hubble_flows_processed_total não é extraída por padrão devido à alta cardinalidade métrica em clusters de grande escala.
Por causa disso, os painéis de fluxos de pods têm painéis com dados ausentes. Para habilitar essa métrica e preencher os dados ausentes, você precisa modificar o ama-metrics-settings-configmap. Especificamente, atualize a seção default-targets-metrics-keep-list. Siga as etapas abaixo para atualizar o configmap:
- Obtenha a versão mais recente de ama-metrics-settings-configmap. (https://github.com/Azure/prometheus-collector/blob/main/otelcollector/configmaps/ama-metrics-settings-configmap.yaml)
- Localizar o networkobservabilityHubble = ""
- Altere-o para networkobservabilityHubble = "hubble.*"
- Agora, as métricas do fluxo de pod devem ser preenchidas.
Para saber mais sobre o mínimo de ingestão, consulte a Documentação mínima de ingestão.
Verifique se os pods do Azure Monitor estão em execução usando o comando
kubectl get pods.kubectl get pods -o wide -n kube-system | grep ama-Seu resultado deve ser semelhante ao seguinte exemplo de saída:
ama-metrics-5bc6c6d948-zkgc9 2/2 Running 0 (21h ago) 26h ama-metrics-ksm-556d86b5dc-2ndkv 1/1 Running 0 (26h ago) 26h ama-metrics-node-lbwcj 2/2 Running 0 (21h ago) 26h ama-metrics-node-rzkzn 2/2 Running 0 (21h ago) 26h ama-metrics-win-node-gqnkw 2/2 Running 0 (26h ago) 26h ama-metrics-win-node-tkrm8 2/2 Running 0 (26h ago) 26hCriamos painéis de exemplo. Eles podem ser encontrados no diretório Dashboards Azure Managed Prometheus>. Eles têm nomes como "Kubernetes/Rede/
<name>". O conjunto de painéis inclui:- Clusters: mostra métricas no nível do nó para seus clusters.
- DNS (Cluster): mostra métricas DNS em um cluster ou seleção de nós.
- DNS (carga de trabalho): mostra métricas DNS para a carga de trabalho especificada (por exemplo, Pods de um DaemonSet ou Implantação, como CoreDNS).
- Drops (carga de trabalho): mostra perdas para/de uma carga de trabalho específica (por exemplo, Pods de uma Implantação ou DaemonSet).
- Fluxos de Pod (Namespace): mostra fluxos de pacote L4/L7 de/para o namespace especificado (ou seja, Pods no Namespace).
- Fluxos de Pod (carga de trabalho): mostra fluxos de pacotes L4/L7 de/para a carga de trabalho especificada (por exemplo, Pods de uma implantação ou DaemonSet).
Visualização usando o BYO Grafana
Ignore esta etapa se estiver usando o Grafana gerenciado pelo Azure
Adicione o seguinte scrape job à configuração existente do Prometheus e reinicie o servidor Prometheus.
- job_name: networkobservability-hubble kubernetes_sd_configs: - role: pod relabel_configs: - target_label: cluster replacement: myAKSCluster action: replace - source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_pod_label_k8s_app] regex: kube-system;(retina|cilium) action: keep - source_labels: [__address__] action: replace regex: ([^:]+)(?::\d+)? replacement: $1:9965 target_label: __address__ - source_labels: [__meta_kubernetes_pod_node_name] target_label: instance action: replace metric_relabel_configs: - source_labels: [__name__] regex: '|hubble_dns_queries_total|hubble_dns_responses_total|hubble_drop_total|hubble_tcp_flags_total' # if desired, add |hubble_flows_processed_total action: keepEm Destinos do Prometheus, verifique se os cilium-pods estão presentes.
Entre no Grafana e importe os seguintes painéis de exemplo usando as seguintes IDs:
- Clusters: mostra métricas no nível do nó para seus clusters. (ID: 18814)
- DNS (Cluster): mostra métricas DNS em um cluster ou seleção de nós. (ID: 20925)
- DNS (carga de trabalho): mostra métricas DNS para a carga de trabalho especificada (por exemplo, Pods de um DaemonSet ou Implantação, como CoreDNS). (ID: [20926] https://grafana.com/grafana/dashboards/20926-kubernetes-networking-dns-workload/)
- Drops (carga de trabalho): mostra perdas para/de uma carga de trabalho específica (por exemplo, Pods de uma Implantação ou DaemonSet).(ID: 20927).
- Fluxos de Pod (Namespace): mostra fluxos de pacote L4/L7 de/para o namespace especificado (ou seja, Pods no Namespace). (ID: 20928)
- Fluxos de Pod (carga de trabalho): mostra fluxos de pacotes L4/L7 de/para a carga de trabalho especificada (por exemplo, Pods de uma implantação ou DaemonSet). (ID: 20929)
Note
- Dependendo das configurações das instâncias do Prometheus/Grafana, alguns painéis de painel exigem ajustes específicos para exibir todos os dados.
- Atualmente, o Cilium não dá suporte a métricas/dashboards de DNS.
Limpar os recursos
Se você não planeja usar esse aplicativo, exclua os outros recursos criados neste artigo usando o comando az group delete.
az group delete --name $RESOURCE_GROUP
Próximas etapas
Nesse artigo de instruções, você aprendeu como instalar e habilitar a Observabilidade de Rede de Contêiner para o seu cluster do AKS.
Para obter mais informações sobre os Serviços Avançados de Rede de Contêineres para o AKS (Serviço de Kubernetes do Azure), consulte O que são serviços avançados de rede de contêineres para o AKS (Serviço de Kubernetes do Azure)?.
Para mais informações sobre a Segurança de Rede de Contêiner e suas funcionalidades, confira O que é Segurança de Rede de Contêiner?.