Compartilhar via


Monitorar as métricas do controlador ingress-nginx no complemento de roteamento de aplicativos com o Prometheus no Grafana (versão prévia)

O controlador ingress-nginx no complemento de roteamento de aplicativos expõe muitas métricas para solicitações, o processo nginx e o controlador que podem ser úteis para analisar o desempenho e o uso do aplicativo.

O complemento de roteamento de aplicativos expõe o ponto de extremidade de métricas do Prometheus na /metrics na porta 10254.

Importante

As versões prévias do recurso AKS estão disponíveis em uma base de autoatendimento e aceitação. As visualizações são fornecidas "como estão" e "conforme disponíveis" e estão excluídas dos acordos de nível de serviço e da garantia limitada. As versões prévias do AKS são parcialmente cobertas pelo suporte ao cliente em uma base de melhor esforço. Dessa forma, esses recursos não são destinados ao uso em produção. Para obter mais informações, consulte os seguintes artigos:

Pré-requisitos

Validando o ponto de extremidade de métricas

Para validar se as métricas estão sendo coletadas, você pode configurar um encaminhamento de porta para um dos pods do controlador ingress-nginx.

kubectl get pods -n app-routing-system
NAME                            READY   STATUS    RESTARTS   AGE
external-dns-667d54c44b-jmsxm   1/1     Running   0          4d6h
nginx-657bb8cdcf-qllmx          1/1     Running   0          4d6h
nginx-657bb8cdcf-wgcr7          1/1     Running   0          4d6h

Agora, encaminhe uma porta local para a porta 10254 em um dos pods nginx.

kubectl port-forward nginx-657bb8cdcf-qllmx -n app-routing-system :10254
Forwarding from 127.0.0.1:43307 -> 10254
Forwarding from [::1]:43307 -> 10254

Observe a porta local (43307 nesse caso) e abra http://localhost:43307/metrics no navegador. Você deve ver as métricas do controlador ingress-nginx carregando.

Captura de tela das métricas do Prometheus no navegador.

Agora você pode encerrar o processo port-forward para fechar o encaminhamento.

Configurando o serviço gerenciado do Azure Monitor para o Prometheus e o Espaço Gerenciado do Azure para Grafana usando o Insights do Contêiner

O Serviço gerenciado do Azure Monitor para Prometheus é um serviço totalmente gerenciado compatível com Prometheus que dá suporte a recursos padrão do setor, como PromQL, painéis do Grafana e alertas do Prometheus. Isso requer a configuração do complemento de métricas para o agente do Azure Monitor, que envia dados para o Prometheus. Se o cluster não estiver configurado com o complemento, você poderá seguir este artigo para configurar o cluster do Serviço de Kubernetes do Azure (AKS) para enviar dados para o serviço gerenciado do Azure Monitor para Prometheus e enviar as métricas coletadas para uma instância do Espaço Gerenciado do Azure para Grafana.

Habilitar a extração baseada em anotação de pod

Depois que o cluster for atualizado com o agente do Azure Monitor, você precisará configurar o agente para habilitar a extração com base em anotações pod, que são adicionadas aos pods ingress-nginx. Uma maneira de definir essa configuração é no ConfigMap ama-metrics-settings-configmap no namespace kube-system.

Cuidado

Isso substituirá o ConfigMap existente ama-metrics-settings-configmap no kube-system. Se você já tiver uma configuração, talvez queira fazer um backup ou mesclar com essa configuração.

Você pode fazer backup de um ConfigMap existente ama-metrics-settings-config se ele existir executando kubectl get configmap ama-metrics-settings-configmap -n kube-system -o yaml > ama-metrics-settings-configmap-backup.yaml

A configuração a seguir define o parâmetro podannotationnamespaceregex como .* para extrair todos os namespaces.

kubectl apply -f - <<EOF
kind: ConfigMap
apiVersion: v1
metadata:
  name: ama-metrics-settings-configmap
  namespace: kube-system
data:
  schema-version:
    #string.used by agent to parse config. supported versions are {v1}. Configs with other schema versions will be rejected by the agent.
    v1
  config-version:
    #string.used by customer to keep track of this config file's version in their source control/repository (max allowed 10 chars, other chars will be truncated)
    ver1
  prometheus-collector-settings: |-
    cluster_alias = ""
  default-scrape-settings-enabled: |-
    kubelet = true
    coredns = false
    cadvisor = true
    kubeproxy = false
    apiserver = false
    kubestate = true
    nodeexporter = true
    windowsexporter = false
    windowskubeproxy = false
    kappiebasic = true
    prometheuscollectorhealth = false
  # Regex for which namespaces to scrape through pod annotation based scraping.
  # This is none by default. Use '.*' to scrape all namespaces of annotated pods.
  pod-annotation-based-scraping: |-
    podannotationnamespaceregex = ".*"
  default-targets-metrics-keep-list: |-
    kubelet = ""
    coredns = ""
    cadvisor = ""
    kubeproxy = ""
    apiserver = ""
    kubestate = ""
    nodeexporter = ""
    windowsexporter = ""
    windowskubeproxy = ""
    podannotations = ""
    kappiebasic = ""
    minimalingestionprofile = true
  default-targets-scrape-interval-settings: |-
    kubelet = "30s"
    coredns = "30s"
    cadvisor = "30s"
    kubeproxy = "30s"
    apiserver = "30s"
    kubestate = "30s"
    nodeexporter = "30s"
    windowsexporter = "30s"
    windowskubeproxy = "30s"
    kappiebasic = "30s"
    prometheuscollectorhealth = "30s"
    podannotations = "30s"
  debug-mode: |-
    enabled = false
EOF

Em alguns minutos, os pods ama-metrics no namespace kube-system devem reiniciar e retomar a nova configuração.

Examinar a visualização de métricas no Espaço Gerenciado do Azure para Grafana

Agora que você tem o serviço gerenciado do Azure Monitor para Prometheus e o Espaço Gerenciado do Azure para Grafana configurados, você deve acessar sua instância do Espaço Gerenciado para Grafana.

Há dois painéis oficiais de entrada-nginx que você pode baixar e importar para sua instância do Grafana:

  • Painel do controlador ingress-nginx
  • Painel de desempenho de tratamento de solicitação

Painel do controlador ingress-nginx

Esse painel fornece visibilidade do volume de solicitação, conexões, taxas de êxito, recarregamentos de configuração e configurações fora de sincronia. Você também pode usá-lo para exibir a pressão de E/S de rede, a memória e o uso da CPU do controlador de entrada. Por fim, ele também mostra os tempos de resposta de percentil P50, P95 e P99 de suas entradas e sua taxa de transferência.

Você pode baixar esse painel do GitHub.

Captura de tela de um navegador mostrando o painel ingress-nginx no Grafana.

Painel de desempenho de tratamento de solicitação

Esse painel fornece visibilidade sobre o desempenho de tratamento de solicitação dos diferentes destinos de entrada upstream, que são os pontos de extremidade dos aplicativos para os quais o controlador de entrada está encaminhando o tráfego. Ele mostra o percentil P50, P95 e P99 do total de tempos de resposta de solicitação e upstream. Você também pode exibir agregações de erros de solicitação e latência. Use esse painel para examinar e melhorar o desempenho e a escalabilidade de seus aplicativos.

Você pode baixar esse painel do GitHub.

Captura de tela de um navegador mostrando o painel de desempenho de tratamento de solicitação ingress-nginx no Grafana.

Importando um painel

Para importar um painel do Grafana, expanda o menu à esquerda e clique em Importar em Painéis.

Captura de tela de um navegador mostrando a instância do Grafana com Importar painel realçado.

Em seguida, carregue o arquivo de painel desejado e clique em Carregar.

Captura de tela de um navegador mostrando a caixa de diálogo importar painel da instância do Grafana.

Próximas etapas