Compartir a través de


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

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.

Captura de pantalla de las métricas de Prometheus en el explorador.

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.

Captura de pantalla de un explorador que muestra el panel ingress-nginx en Grafana.

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.

Captura de pantalla de un explorador que muestra el panel de rendimiento del control de solicitudes de ingress-nginx en Grafana.

Importación de un panel

Para importar un panel de Grafana, expanda el menú izquierdo y haga clic en Importar en Paneles.

Captura de pantalla de un explorador que muestra la instancia de Grafana con el panel de importación resaltado.

A continuación, cargue el archivo de panel deseado y haga clic en Cargar.

Captura de pantalla de un explorador que muestra la instancia de Grafana con el diálogo del panel de importación.

Pasos siguientes