Partilhar via


Monitore as métricas do controlador ingress-nginx no complemento de roteamento de aplicativos com o Prometheus no Grafana (visualização)

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

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

Importante

Os recursos de visualização do AKS estão disponíveis em uma base de autosserviço e opt-in. As visualizações prévias são fornecidas "como estão" e "conforme disponíveis" e são excluídas dos contratos de nível de serviço e da garantia limitada. As visualizações do AKS são parcialmente cobertas pelo suporte ao cliente com base no melhor esforço. Como tal, estas funcionalidades não se destinam a utilização em produção. Para obter mais informações, consulte os seguintes artigos de suporte:

Pré-requisitos

Validando o ponto de extremidade de métricas

Para validar as métricas que estão sendo coletadas, você pode configurar uma 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 neste caso) e abra http://localhost:43307/metrics no seu 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 port-forward processo para fechar o encaminhamento.

Configurando o serviço gerenciado do Azure Monitor para Prometheus e Azure Managed Grafana usando o Container Insights

O serviço gerenciado do Azure Monitor para Prometheus é um serviço totalmente gerenciado compatível com Prometheus que oferece suporte a recursos padrão do setor, como PromQL, painéis Grafana e alertas Prometheus. Este serviço 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, siga este artigo para configurar o cluster do Serviço 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 Azure Managed Grafana.

Ativar a raspagem 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 raspagem com base nas anotações do Pod, que são adicionadas aos pods ingress-nginx. Uma maneira de definir essa configuração é no ama-metrics-settings-configmap ConfigMap no kube-system namespace.

Atenção

Isso substituirá seu ConfigMap existente ama-metrics-settings-configmap no kube-system. Se você já tiver uma configuração, convém fazer um backup ou mesclá-lo 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 podannotationnamespaceregex parâmetro para .* raspar 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 poucos minutos, os ama-metrics kube-system pods no namespace devem reiniciar e pegar a nova configuração.

Revisar a visualização de métricas no Azure Managed Grafana

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

Há dois painéis oficiais de ingress-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ções

Painel do controlador Ingress-nginx

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

Você pode baixar este painel do GitHub.

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

Painel de desempenho de tratamento de solicitações

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

Você pode baixar este painel do GitHub.

Captura de tela de um navegador mostrando o painel de desempenho de manipulação de solicitações 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 o painel Import 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 do painel de importação de instância do Grafana.

Próximos passos