Monitorare le metriche del controller ingress-nginx nel componente aggiuntivo di routing dell'applicazione con Prometheus in Grafana (anteprima)

Il controller ingress-nginx nel componente aggiuntivo di routing dell'applicazione espone molte metriche per le richieste, il processo nginx e il controller che possono essere utili per analizzare le prestazioni e l'utilizzo dell'applicazione.

Il componente aggiuntivo di routing dell'applicazione espone l'endpoint delle metriche Prometheus di /metrics sulla porta 10254.

Importante

Le funzionalità di anteprima del servizio Azure Kubernetes sono disponibili in modalità self-service e opzionale. Le anteprime vengono fornite "così come sono" e "come disponibili" e sono escluse dai contratti di servizio e dalla garanzia limitata. Le anteprime del servizio Azure Kubernetes sono parzialmente coperte dal supporto clienti con la massima diligenza possibile. Di conseguenza, queste funzionalità non sono destinate all'uso in produzione. Per altre informazioni, vedere gli articoli di supporto seguenti:

Prerequisiti

Convalida dell'endpoint delle metriche

Per convalidare la raccolta delle metriche, è possibile configurare una porta forward su uno dei pod controller 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

Inoltrare ora una porta locale alla porta 10254 in uno dei pod 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

Prendere nota della porta locale (43307 in questo caso) e aprire http://localhost:43307/metrics nel browser. Verrà visualizzato il caricamento delle metriche del controller ingress-nginx.

Screenshot delle metriche di Prometheus nel browser.

È ora possibile terminare il processo port-forward per chiudere l'inoltro.

Configurazione del servizio gestito di Monitoraggio di Azure per Prometheus e Grafana con gestione Azure usando Informazioni dettagliate sui contenitori

Il servizio gestito di Monitoraggio di Azure per Prometheus è un servizio compatibile con Prometheus completamente gestito che supporta funzionalità standard del settore, ad esempio PromQL, dashboard Grafana e avvisi di Prometheus. Questo servizio richiede la configurazione dei componenti aggiuntivi delle metriche per l'agente di Monitoraggio di Azure, che invia i dati a Prometheus. Se il cluster non è configurato con il componente aggiuntivo, è possibile seguire questo articolo per configurare il cluster del servizio Azure Kubernetes per inviare dati al servizio gestito di Monitoraggio di Azure per Prometheus e inviare le metriche raccolte a un'istanza di Grafana con gestione Azure.

Abilitare lo scorporo basato sulle annotazioni dei pod

Dopo aver aggiornato il cluster con l'agente di Monitoraggio di Azure, è necessario configurare l'agente per abilitare lo scorporo in base alle annotazioni dei pod, che vengono aggiunte ai pod ingress-nginx. Un modo per impostare questa impostazione si trova in ama-metrics-settings-configmap ConfigMap nello spazio dei nomi kube-system.

Attenzione

In questo modo verrà sostituito l'oggetto ConfigMap ama-metrics-settings-configmap esistente nell'oggetto kube-system. Se si dispone già di una configurazione, è possibile eseguire un backup o unirla a questa configurazione.

È possibile eseguire il backup di un oggetto ConfigMap ama-metrics-settings-config esistente, se esiste, eseguendo kubectl get configmap ama-metrics-settings-configmap -n kube-system -o yaml > ama-metrics-settings-configmap-backup.yaml

La configurazione seguente imposta il parametro podannotationnamespaceregex su .* per scorporare tutti gli spazi dei nomi.

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

In pochi minuti, i pod ama-metrics nello spazio dei nomi kube-system devono riavviarsi e selezionare la nuova configurazione.

Esaminare la visualizzazione delle metriche in Grafana con gestione Azure

Dopo aver configurato il servizio gestito di Monitoraggio di Azure per Prometheus e Grafana con gestione Azure, è necessario accedere all'istanza di Grafana gestita.

Esistono due dashboard ufficiali di ingress-nginx che è possibile scaricare e importare nell'istanza di Grafana:

  • Dashboard del controller ingress-nginx
  • Dashboard delle prestazioni di gestione delle richieste

Dashboard del controller ingress-nginx

Questo dashboard offre visibilità del volume delle richieste, delle connessioni, delle percentuali di esito positivo, dei ricaricamenti della configurazione e delle configurazioni non sincronizzate. È anche possibile usarlo per visualizzare la pressione di I/O di rete, la memoria e l'uso della CPU del controller in ingresso. Infine, mostra anche i tempi di risposta percentile P50, P95 e P99 dei dati in ingresso e la velocità effettiva.

È possibile scaricare questo dashboard da GitHub.

Screenshot di un browser che mostra il dashboard di ingresso mediante NGINX in Grafana.

Dashboard delle prestazioni di gestione delle richieste

Questo dashboard offre visibilità sulle prestazioni di gestione delle richieste delle diverse destinazioni upstream in ingresso, ovvero gli endpoint delle applicazioni a cui il controller di ingresso sta inoltrando il traffico. Mostra il percentile P50, P95 e P99 del numero totale di richieste e i tempi di risposta upstream. È anche possibile visualizzare aggregazioni di errori di richiesta e latenza. Usare questo dashboard per esaminare e migliorare le prestazioni e la scalabilità delle applicazioni.

È possibile scaricare questo dashboard da GitHub.

Schermata di un browser che mostra il dashboard delle prestazioni di gestione delle richieste di ingresso mediante NGINX in Grafana.

Importazione di un dashboard

Per importare un dashboard Grafana, espandere il menu a sinistra e fare clic su Importa da Dashboard.

Screenshot di un browser che mostra l'istanza di Grafana con il dashboard di importazione evidenziato.

Caricare quindi il file del dashboard desiderato e fare clic su Carica.

Screenshot di un browser che mostra la finestra di dialogo del dashboard di importazione dell'istanza di Grafana.

Passaggi successivi