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
- Um cluster do AKS (Serviço de Kubernetes do Azure) 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 Espaço Gerenciado do Azure para Grafana.
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.
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.
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.
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óximas etapas
- Você pode configurar o dimensionamento de suas cargas de trabalho usando métricas de entrada extraídas com o Prometheus usando o KEDA (Dimensionador Automático Controlado por Eventos do Kubernetes). Saiba mais sobre como integrar o KEDA ao 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