Partilhar via


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

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.
  • A versão mínima da CLI do Azure necessária para as etapas neste artigo é 2.56.0. Executar az --version para 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)

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)

    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.