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
- Un cluster del servizio Azure Kubernetes con il componente aggiuntivo di routing delle applicazioni abilitato.
- Un’istanza di Prometheus, ad esempio il servizio gestito di Monitoraggio di Azure per Prometheus.
- Un’istanza di Grafana, ad esempio Grafana con gestione Azure.
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.
È 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.
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.
Importazione di un dashboard
Per importare un dashboard Grafana, espandere il menu a sinistra e fare clic su Importa da Dashboard.
Caricare quindi il file del dashboard desiderato e fare clic su Carica.
Passaggi successivi
- È possibile configurare il ridimensionamento dei carichi di lavoro usando le metriche di ingresso scorporate con Prometheus usando Kubernetes Event Driven Autoscaler (KEDA). Altre informazioni sull'integrazione di KEDA con il servizio Azure Kubernetes.
- Creare ed eseguire un test di carico con Test di carico di Azure per testare le prestazioni del carico di lavoro e ottimizzare la scalabilità delle applicazioni.
Azure Kubernetes Service