Configurar a Monitorização da Rede de Contêineres para o Serviço Kubernetes do Azure (AKS) - Prometheus e Grafana geridos pelo Azure

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

A partir de 30 de novembro de 2025, o Azure Kubernetes Service (AKS) deixou de suportar nem fornecer 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 poderá ajustar o tamanho dos 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 mais informações, consulte a edição do Retirement GitHub e o anúncio de reforma do Azure Updates. Para se manter informado sobre anúncios e atualizações, siga as notas de lançamento do 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.

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)

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:

  1. Obtenha o mais recente ama-metrics-settings-configmap. (https://github.com/Azure/prometheus-collector/blob/main/otelcollector/configmaps/ama-metrics-settings-configmap.yaml)
  2. Localize a rede observabilidade Hubble = ""
  3. Altere-o para networkobservabilityHubble = "hubble.*"
  4. 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.


  1. Verifique se os pods do Azure Monitor estão em execução usando o kubectl get pods comando.

    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)   26h
    
  2. Criá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

  1. 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: keep
    
  2. Em Targets of Prometheus, verifique se os network-obs-pods estão presentes.

  3. 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)

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.