Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Este artigo demonstra como configurar a Observabilidade de Rede de Contêiner para o Serviço Kubernetes do Azure (AKS) utilizando o Managed Prometheus e Grafana, bem como o BYO Prometheus e Grafana, e visualizar as métricas coletadas.
Você pode usar a Observabilidade da Rede de Contêineres para coletar dados sobre o tráfego de rede de seus clusters AKS. Ele permite 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 são suportados para clusters de Cilium e aqueles que não são de Cilium.
A Observabilidade da Rede de Contêineres é um dos recursos dos Serviços Avançados de Rede de Contêineres. Para obter mais informações sobre os Serviços Avançados de Rede de Contêiner para o Serviço Kubernetes do Azure (AKS), consulte O que é o Serviço de Rede de Contêiner Avançado para o Serviço Kubernetes do Azure (AKS)?
Importante
Desde 30 de novembro de 2025, o Azure Kubernetes Service (AKS) já não suporta nem fornece atualizações de segurança para o Azure Linux 2.0. A imagem da máquina virtual do Azure Linux 2.0 está congelada na versão 202512.06.0. A partir de 31 de março de 2026, as imagens dos nós serão removidas e não conseguirá escalar os seus pools de nós. Migre para uma versão Azure Linux suportada atualizando os seus pools de nós para uma versão Kubernetes suportada 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 subscrição 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, consulte Introdução ao Azure Cloud Shell.
Se preferir executar comandos de referência da CLI localmente, instale o CLI do Azure. Se estiver a utilizar o Windows ou macOS, considere executar a CLI do Azure num contentor Docker. Para obter mais informações, consulte 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 os passos apresentados no seu terminal. Para outras opções de entrada, consulte Autenticar no Azure usando a CLI do Azure.
Quando solicitado, instale a extensão da CLI do Azure na primeira utilização. Para obter mais informações sobre extensões, consulte Usar e gerenciar extensões com a CLI do Azure.
Execute az version para descobrir 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. Executar
az --versionpara localizar a versão. Se precisar de instalar ou atualizar, veja Install Azure CLI (Instalar o Azure CLI).
Habilitar Serviços Avançados de Rede de Contêiner
Para continuar, você deve ter um cluster AKS com Advanced Container Networking Services habilitado.
O az aks create comando com o sinalizador Advanced Container Networking Services, --enable-acns, cria um novo cluster AKS com todos os recursos Advanced Container Networking Services. Estas características abrangem:
Observabilidade da rede de contêineres: fornece informações sobre o tráfego da rede. Para saber mais, visite Observabilidade da rede de contêineres.
Segurança de rede de contêiner: Oferece recursos de segurança como filtragem FQDN. Para saber mais, visite Segurança de rede de contêiner.
Note
Os clusters com o plano de dados Cilium suportam a Observabilidade da Rede de Contêineres e a segurança da Rede de Contêineres 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êiner em um cluster existente
O az aks update comando com o sinalizador Advanced Container Networking Services, --enable-acns, atualiza um cluster AKS existente com todos os recursos Advanced Container Networking Services que incluem Observabilidade de Rede de Contêiner e o recurso Segurança de Rede de Contêiner .
Note
Somente clusters com o plano de dados Cilium suportam 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 de cluster
Depois de obter as suas credenciais de cluster usando o comando az aks get-credentials.
az aks get-credentials --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP
Azure gerenciado Prometheus e Grafana
Pule esta seção se estiver usando BYO Prometheus e Grafana
Use o exemplo a seguir para instalar e habilitar o Prometheus e o Grafana para seu cluster AKS.
Criar 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 Grafana. O nome da instância de Grafana deve ser único.
# 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 as IDs de recursos do Azure Managed Grafana e do Azure Monitor em variáveis
Use az grafana show para colocar o ID do recurso Grafana em uma variável. Use az resource show para colocar a ID de recurso do Azure Monitor em uma variável. Substitua myGrafana pelo nome da sua 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)
Vincular 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 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 Azure Managed Grafana
Ignore esta etapa se estiver usando o BYO Grafana
Note
A hubble_flows_processed_total métrica não é coletada por padrão devido à alta cardinalidade de métricas em clusters de grande escala.
Por isso, os painéis do Pods Flows 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 o mais recente ama-metrics-settings-configmap. (https://github.com/Azure/prometheus-collector/blob/main/otelcollector/configmaps/ama-metrics-settings-configmap.yaml)
- Localize a rede observabilidade Hubble = ""
- Altere-o para networkobservabilityHubble = "hubble.*"
- Agora, as métricas de fluxo do Pod devem aparecer.
Para saber mais sobre o que é ingestão mínima, consulte a Documentação de ingestão mínima.
Verifique se os pods do Azure Monitor estão em execução usando o
kubectl get podscomando.kubectl get pods -o wide -n kube-system | grep ama-Sua saída deve ser semelhante à saída de exemplo a seguir:
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) 26hCriámos dashboards de exemplo. Na pasta Dashboards > Azure Managed Prometheus, podem ser encontrados. Eles têm nomes como "Kubernetes / Networking /
<name>". O conjunto de painéis inclui:- Clusters: mostra métricas no nível do nó para os seus clusters.
- DNS (Cluster): mostra métricas de DNS em um cluster ou seleção de nós.
- DNS (Carga de trabalho): mostra métricas de DNS para a carga de trabalho especificada (por exemplo, Pods de um DaemonSet ou Implantação, como CoreDNS).
- Drops (Workload): mostra drops de/para a carga de trabalho especificada (por exemplo, Pods de uma implantação ou DaemonSet).
- Pod Flows (Namespace): mostra fluxos de pacotes L4/L7 de/para o namespace especificado (ou seja, Pods no Namespace).
- Pod Flows (Workload): mostra fluxos de pacotes L4/L7 de/para a carga de trabalho especificada (por exemplo, Pods de uma Deployment ou DaemonSet).
Visualização usando BYO Grafana
Ignore esta etapa se estiver usando o Azure managed Grafana
Adicione o seguinte trabalho de raspagem à 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 Targets of Prometheus, verifique se os network-obs-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 os seus clusters. (ID: 18814)
- DNS (Cluster): mostra métricas de DNS em um cluster ou seleção de nós. (ID: 20925)
- DNS (Carga de trabalho): mostra métricas de 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 (Workload): mostra perdas de/para o workload especificado (por exemplo, Pods de um Deployment ou DaemonSet). (ID: 20927).
- Pod Flows (Namespace): mostra fluxos de pacotes L4/L7 de/para o namespace especificado (ou seja, Pods no Namespace). (ID: 20928)
- Pod Flows (Workload): mostra fluxos de pacotes L4/L7 de/para a carga de trabalho especificada (por exemplo, Pods de uma Deployment ou DaemonSet). (ID: 20929)
Note
- Dependendo das definições das suas instâncias Prometheus/Grafana, alguns painéis de dashboard exigem ajustes específicos para mostrar todos os dados.
- Atualmente, o Cilium não suporta métricas/painéis de DNS.
Limpar recursos
Se você não planeja usar este aplicativo, exclua os outros recursos criados neste artigo usando o az group delete comando.
az group delete --name $RESOURCE_GROUP
Próximos passos
Neste artigo de instruções, você aprendeu como instalar e habilitar a Observabilidade de Rede de Contêineres para seu cluster AKS.
Para obter mais informações sobre os Serviços Avançados de Rede de Contêiner para o Serviço Kubernetes do Azure (AKS), consulte O que é Serviços Avançados de Rede de Contêiner para o Serviço Kubernetes do Azure (AKS)?.
Para obter mais informações sobre Segurança de Rede de Contêiner e seus recursos, consulte O que é Segurança de Rede de Contêiner?.