Mejores prácticas para integrar Prometheus con APISIX
January 13, 2024
En la arquitectura nativa de la nube actual, monitorear las métricas de tu puerta de enlace de API es crucial. Apache APISIX, como una puerta de enlace de API de alto rendimiento, no solo ofrece funcionalidades extensas, sino que también admite una integración perfecta con Prometheus para recopilar y monitorear métricas clave del tráfico de API. Este artículo explora cómo configurar y usar Prometheus en Apache APISIX, destacando consideraciones esenciales y recomendando configuraciones comunes de métricas.
Acerca de Prometheus
Prometheus es un sistema de monitoreo de código abierto que recopila y almacena datos de series temporales, permitiendo el monitoreo y análisis en tiempo real del rendimiento del sistema. Cuando se integra con Apache APISIX, Prometheus se vuelve fundamental para capturar métricas detalladas relacionadas con el tráfico de API.
Habilitar el Plugin de Prometheus en Apache APISIX
-
Para habilitar las métricas de Prometheus en Apache APISIX, comienza configurando el plugin de Prometheus en el archivo
config.yaml
:plugins: - prometheus
-
Configura el plugin de Prometheus en el servicio o API deseado para ser recopilado. Alternativamente, configúralo globalmente. Aquí tienes un ejemplo de cómo configurar el plugin usando un comando cURL:
curl http://127.0.0.1:9180/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d ' { "uri": "/hello", "plugins": { "prometheus":{} }, "upstream": { "type": "roundrobin", "nodes": { "127.0.0.1:80": 1 } } }'
Para configuraciones más complejas, consulta: Documentación del Plugin de Prometheus
Configurar la Estrategia de Recopilación en Prometheus
En Prometheus, configura el archivo prometheus.yml
para agregar APISIX como un nuevo objetivo de monitoreo:
scrape_configs:
- job_name: 'apisix'
static_configs:
- targets: ['<APISIX_IP>:<APISIX_PORT>']
Métricas Comunes en Apache APISIX
Las métricas específicas de cada empresa pueden variar, pero aquí hay algunas métricas clave en Apache APISIX, que proporcionan información valiosa para el monitoreo y análisis del sistema:
-
Métricas de Solicitud y Respuesta HTTP:
apisix_http_request_total
: Registra el total de solicitudes HTTP a través de APISIX, ofreciendo una visión general del tráfico del sistema.apisix_http_request_duration_seconds
: Mide el tiempo de procesamiento de las solicitudes HTTP, ayudando a identificar cuellos de botella en el rendimiento.apisix_http_request_size_bytes
: Captura el tamaño de las solicitudes HTTP para análisis de datos.apisix_http_response_size_bytes
: Monitorea el tamaño de las respuestas HTTP para rastrear el volumen de datos de respuesta.
-
Métricas de Servicios de Upstream:
apisix_upstream_latency
: Refleja la latencia de respuesta de los servicios de upstream.apisix_upstream_health
: Indica el estado de salud de los servicios de upstream.
-
Métricas de Rendimiento del Sistema:
apisix_node_cpu_usage
: Reporta el uso de CPU del nodo de APISIX.apisix_node_memory_usage
: Ofrece información sobre el uso de memoria.
-
Métricas de Tráfico:
apisix_bandwidth
: Detalla el uso de ancho de banda para el tráfico de upstream y downstream.
-
Métricas de Errores y Excepciones:
apisix_http_status_code
: Distribuye los códigos de estado de respuesta HTTP, enfocándose especialmente en errores 4xx y 5xx.
Visualización y Alertas
Aprovecha la integración de Grafana y Prometheus para crear paneles de control que visualicen estas métricas. Además, las reglas de alerta de Prometheus se pueden configurar para establecer alertas basadas en condiciones específicas.
Ejemplo de Panel de Grafana: Crea varios gráficos en Grafana, como series temporales, gráficos de barras o gráficos circulares, para mostrar las métricas de rendimiento de APISIX. Por ejemplo, un panel que muestre el recuento de solicitudes HTTP y los tiempos promedio de respuesta ofrece información en tiempo real sobre el tráfico y el rendimiento.
Ejemplo de Alerta en Prometheus:
Las reglas de alerta en Prometheus se pueden configurar para diversas condiciones. Por ejemplo, si la duración promedio de apisix_http_request_duration_seconds
supera un umbral predefinido, Prometheus puede configurarse para enviar alertas críticas.
Consideraciones de Optimización
Aunque tener métricas extensas de Prometheus mejora las dimensiones de monitoreo y alerta, es crucial reconocer que estas métricas consumen recursos computacionales. Más métricas implican mayores demandas de recursos, lo que podría afectar los sistemas de negocio.
Desde la versión 3.0, Apache APISIX ha optimizado significativamente el plugin de Prometheus, introduciendo un proceso dedicado para estadísticas y recuperación de métricas. Esta mejora mitiga el impacto en el tráfico de negocio causado por las estadísticas extensas de métricas de Prometheus, contribución de API7.ai.
Conclusión
Al integrar Prometheus con Apache APISIX, las empresas obtienen una visión profunda de su infraestructura de API, asegurando operaciones eficientes y seguras. El monitoreo del tráfico de API se convierte gradualmente en una herramienta esencial para prevenir problemas de manera proactiva, optimizar el rendimiento y garantizar la seguridad.