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
- Um cluster do Serviço Kubernetes do Azure (AKS) com o complemento de roteamento de aplicativo habilitado.
- Uma instância do Prometheus, como o serviço gerenciado do Azure Monitor para Prometheus.
- Uma instância do Grafana, como o Azure Managed Grafana.
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.
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.
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.
Importando um painel
Para importar um painel do Grafana, expanda o menu à esquerda e clique em Importar em Painéis.
Em seguida, carregue o arquivo de painel desejado e clique em Carregar.
Próximos passos
- Você pode configurar o dimensionamento de suas cargas de trabalho usando métricas de entrada raspadas com o Prometheus usando o Kubernetes Event Driven Autoscaler (KEDA). Saiba mais sobre a integração do KEDA com o AKS.
- Crie e execute um teste de carga com o Teste de Carga do Azure para testar o desempenho da carga de trabalho e otimizar a escalabilidade de seus aplicativos.
Azure Kubernetes Service