Supervisión de las métricas del controlador de ingress-nginx en el complemento de enrutamiento de aplicaciones con Prometheus en Grafana (versión preliminar)
El controlador ingress-nginx en el complemento de enrutamiento de aplicaciones expone muchas métricas para las solicitudes, el proceso nginx y el controlador que pueden ser útiles para analizar el rendimiento y el uso de la aplicación.
El complemento de enrutamiento de aplicaciones expone el punto de conexión de métricas de Prometheus en /metrics
en el puerto 10254.
Importante
Las características en versión preliminar de AKS están disponibles como opción de participación y autoservicio. Las versiones preliminares se proporcionan "tal cual" y "como están disponibles", y están excluidas de los Acuerdos de nivel de servicio y garantía limitada. Las versiones preliminares de AKS reciben cobertura parcial del soporte al cliente en la medida de lo posible. Por lo tanto, estas características no están diseñadas para su uso en producción. Para más información, consulte los siguientes artículos de soporte:
Requisitos previos
- Un clúster de Azure Kubernetes Service (AKS) con el complemento de enrutamiento de aplicaciones habilitado.
- Una instancia de Prometheus, como el servicio administrado para Prometheus de Azure Monitor.
- Una instancia de Grafana, como Azure Managed Grafana.
Validación del punto de conexión de métricas
Para validar que se recopilan las métricas, puede configurar un puerto hacia delante en uno de los pods del 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
Ahora, reenvíe un puerto local al puerto 10254 en uno de los pods de 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
Anote el puerto local (43307
en este caso) y abra http://localhost:43307/metrics en el explorador. Debería ver la carga de métricas del controlador ingress-nginx.
Ahora puede finalizar el proceso port-forward
para cerrar el reenvío.
Configuración del servicio administrado para Prometheus de Azure Monitor y Azure Managed Grafana mediante Container Insights
El servicio administrado de Azure Monitor para Prometheus es un servicio totalmente administrado compatible con Prometheus que admite características estándar del sector, como PromQL, paneles de Grafana y alertas de Prometheus. Este servicio requiere configurar el complemento métricas para el agente Azure Monitor, que envía datos a Prometheus. Si el clúster no está configurado con el complemento, puede seguir este artículo para configurar el clúster de Azure Kubernetes Service (AKS) para enviar datos al servicio administrado de Azure Monitor para Prometheus y enviar las métricas recopiladas a una instancia de Azure Managed Grafana.
Habilitación de la extracción basada en anotaciones de pod
Una vez actualizado el clúster con el agente de Azure Monitor, debe configurar el agente para habilitar la extracción en función de las anotaciones de pod, que se agregan a los pods de ingress-nginx. Una manera de establecer esta configuración es en ama-metrics-settings-configmap
ConfigMap en el espacio de nombres kube-system
.
Precaución
Esto reemplazará a configMap el ama-metrics-settings-configmap
ConfigMap existente en kube-system
. Si ya tiene una configuración, puede que desee realizar una copia de seguridad o combinarla con esta configuración.
Puede realizar una copia de seguridad de un ConfigMap ama-metrics-settings-config
existente si existe mediante la ejecución de kubectl get configmap ama-metrics-settings-configmap -n kube-system -o yaml > ama-metrics-settings-configmap-backup.yaml
.
La siguiente configuración establece el parámetro podannotationnamespaceregex
en .*
para extraer todos los espacios de nombres.
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
En unos minutos, los pods ama-metrics
del espacio de nombres kube-system
deben reiniciarse y recoger la nueva configuración.
Revisión de la visualización de métricas en Azure Managed Grafana
Ahora que tiene configurado el servicio administrado para Prometheus de Azure Monitor y Azure Managed Grafana, debe acceder a la instancia de Grafana administrada.
Hay dos paneles oficiales de ingress-nginx que puede descargar e importar en la instancia de Grafana:
- Panel del controlador ingress-nginx
- Panel de rendimiento de control de solicitudes
Panel del controlador ingress-nginx
Este panel proporciona visibilidad del volumen de solicitudes, las conexiones, las tasas de éxito, las recargas de configuración y las configuraciones no sincronizadas. También puede usarlo para ver la presión de E/S de red, la memoria y el uso de CPU del controlador de entrada. Por último, también muestra los tiempos de respuesta de percentil P50, P95 y P99 de la entrada y su rendimiento.
Puede descargar este panel desde GitHub.
Panel de rendimiento del control de solicitudes
Este panel proporciona visibilidad sobre el rendimiento del control de solicitudes de los distintos destinos ascendentes de entrada, que son los puntos de conexión de las aplicaciones a los que el controlador de entrada reenvía el tráfico. Muestra el percentil P50, P95 y P99 del total de solicitudes y tiempos de respuesta ascendentes. También puede ver agregados de errores de solicitud y latencia. Use este panel para revisar y mejorar el rendimiento y la escalabilidad de las aplicaciones.
Puede descargar este panel desde GitHub.
Importación de un panel
Para importar un panel de Grafana, expanda el menú izquierdo y haga clic en Importar en Paneles.
A continuación, cargue el archivo de panel deseado y haga clic en Cargar.
Pasos siguientes
- Puede configurar el escalado de las cargas de trabajo mediante métricas de entrada que se extraen con Prometheus mediante el escalador automático controlado por eventos de Kubernetes (KEDA). Obtenga más información sobre la integración de KEDA con AKS.
- Cree y ejecute una prueba de carga con Azure Load Testing para probar el rendimiento de la carga de trabajo y optimizar la escalabilidad de las aplicaciones.
Azure Kubernetes Service