Mantén tus APIs saludables con APISIX y Prometheus

Bobur Umurzokov

Bobur Umurzokov

July 20, 2023

Technology

Las comprobaciones de estado de la API forman parte de un enfoque proactivo para monitorear la salud general de tus APIs. Estas aseguran que estés informado sobre el estado general de tus APIs y puedas identificar cualquier problema en las primeras etapas. En este artículo, exploraremos cómo APISIX y Prometheus trabajan juntos para recopilar y analizar métricas de datos de comprobación de estado, facilitando el monitoreo, diagnóstico y resolución de problemas relacionados con las APIs.

¿Por qué es importante para las empresas?

El hecho de establecer Indicadores de Nivel de Servicio (SLIs) y Objetivos de Nivel de Servicio (SLOs) se ha convertido en un componente crucial de las mejores prácticas de ingeniería de confiabilidad de sitios (SRE). Estos ayudan al equipo a establecer objetivos claros sobre qué tan bien debe funcionar un servicio (como un sitio web o una aplicación). Estos objetivos pueden ser para servicios internos (como una API utilizada por las propias aplicaciones de la empresa) o para productos públicos (utilizados por los clientes). Proporcionan a los equipos un enfoque cuantificable para gestionar el rendimiento de un sistema. Por ejemplo, los SLIs comunes incluyen tasa de errores, latencia, rendimiento y disponibilidad, o un SLO podría ser "el 99.9% de las solicitudes de API deben completarse en menos de 300ms".

APISIX, la puerta de enlace de API, se sitúa al frente de tu infraestructura de API y puede ser fundamental para medir SLIs y SLOs. No tienes que averiguar qué medir y cómo medirlo, ya que puede resultar problemático, especialmente en las arquitecturas complejas y distribuidas de hoy en día. APISIX rastrea automáticamente todas las métricas necesarias, como latencia, solicitudes fallidas o rendimiento, para los servicios ascendentes consumidos por tus APIs. APISIX puede realizar comprobaciones de estado en los servicios de backend, asegurando que estén disponibles para procesar solicitudes y alertando a los equipos responsables sobre posibles problemas antes de que escalen, minimizando el tiempo de inactividad y mejorando la confiabilidad del sistema.

¿Cómo funciona una comprobación de estado en una puerta de enlace de API?

Generalmente, activar las comprobaciones de estado para las APIs es un proceso sencillo. Cada servicio solo requiere un punto final de API de comprobación de estado designado (/health). A partir de ahí, se inspeccionan las métricas más relevantes para ese servicio, como el uso de memoria, la conectividad de la base de datos, la duración de la respuesta y más. Puedes utilizar plataformas de observabilidad como Prometheus y Grafana para mostrar los resultados y un sistema de alertas para señalar inmediatamente cualquier problema.

Uno de los beneficios de APISIX es que facilita aún más el proceso de configuración de herramientas de observabilidad para múltiples servicios. APISIX envía periódicamente solicitudes a los servicios de backend que gestiona (también conocidos como nodos ascendentes). Si se devuelve un estado saludable (normalmente un código de estado HTTP 200 OK), el servicio se considera saludable. La puerta de enlace también puede evaluar el tiempo de respuesta, tratando una respuesta lenta como un indicio de posibles problemas. Si el servicio no responde dentro de un plazo específico o devuelve un estado de error, se marca como no saludable. Dejará de enrutar el tráfico a ese servicio para evitar errores o ralentizaciones en la aplicación y enrutará el tráfico a un nodo saludable en su lugar. Aprende cómo habilitar la comprobación de estado aquí.

Recopilación de datos de comprobación de estado con el plugin Prometheus de APISIX

APISIX se integra con Prometheus a través de un plugin llamado prometheus, ofreciendo una forma eficiente de extraer métricas de API, incluidas aquellas relacionadas con el estado de salud de los nodos ascendentes (múltiples instancias de un servicio de backend de API). Así es como funciona:

  1. Cuando se activa el plugin Prometheus de APISIX (consulta cómo activarlo aquí), expone una URL de métricas, típicamente /apisix/prometheus/metrics. También puedes personalizar el URI de exportación, agregar etiquetas adicionales, la frecuencia de estas recopilaciones y otros parámetros configurándolos en el archivo conf/config.yaml.
plugin_attr:
  prometheus:
    export_uri: /metrics
  1. Prometheus recopila esta URL en intervalos específicos, recogiendo datos de series temporales asociados con varios parámetros de rendimiento como recuento de solicitudes, latencia de solicitudes, latencia ascendente y códigos de estado.
  2. Con la funcionalidad de métricas personalizadas de Prometheus que lanzamos en la versión APISIX 3.3.0, ahora puedes exponer datos de métricas más granulares para tus APIs. Este mecanismo permite que APISIX verifique periódicamente si los nodos ascendentes están saludables o no y ajuste el enrutamiento en consecuencia. Puede ayudar a prevenir fallos y mejorar la confiabilidad del sistema, lo cual es crítico para cualquier infraestructura basada en API. Los resultados de estas comprobaciones de estado se incorporan en las métricas que expone el plugin Prometheus, proporcionando una vista integral y en tiempo real del rendimiento de tus APIs. Por ejemplo, si envías una solicitud simple al punto final /metrics de la puerta de enlace de APISIX, puedes observar los datos de monitoreo recopilados y el estado de los resultados de la comprobación de estado de los nodos ascendentes.
curl <http://127.0.0.1:9091/metrics>

...
# HELP apisix_upstream_status Estado ascendente de la comprobación de estado
# TYPE apisix_upstream_status gauge
apisix_upstream_status{name="/apisix/upstreams/1",ip="172.27.0.5",port="443"} 0
apisix_upstream_status{name="/apisix/upstreams/1",ip="172.27.0.5",port="80"} 1
apisix_upstream_status{name="/apisix/upstreams/1",ip="172.27.0.7",port="443"} 0
apisix_upstream_status{name="/apisix/upstreams/1",ip="172.27.0.7",port="80"} 1

Un valor de 1 representa saludable y 0 significa que el nodo ascendente no está saludable.

  1. También puedes ver el estado de las comprobaciones de estado de los nodos ascendentes en el panel de control de Prometheus:

Plugin Prometheus de APISIX en el panel de control

  1. El plugin Prometheus de APISIX está configurado para conectarse automáticamente con Grafana y visualizar estas métricas.

Igualmente importante, también es posible habilitar Prometheus para recopilar métricas para TCP/UDP. Porque la observabilidad en la capa de transporte proporciona información sobre cómo se transmiten los datos entre los servicios en tu infraestructura y puede ser crucial para diagnosticar problemas y optimizar el rendimiento.

Personalización del plugin Prometheus

En el contexto de APISIX, el plugin Prometheus expone varias métricas por defecto. Estas métricas son configurables, y el plugin puede extenderse para agregar métricas adicionales según requisitos específicos. El equipo de API7.ai está siempre disponible para responder cualquier pregunta que puedas tener sobre la comprobación y monitoreo de la salud de las API, y nuestros ingenieros están apoyando activamente a los nuevos usuarios de APISIX para que se integren y les ayuden a modificar las configuraciones predeterminadas de APISIX según sus necesidades.

Caso de uso real: Gigante de comida rápida mejora el monitoreo de la salud del servidor con la integración de APISIX y Prometheus

Supongamos que hay una cadena global líder de comida rápida con miles de sucursales en todo el mundo (en adelante, "Compañía X") estaba interesada en lograr una configuración de servidor activo-activo. Su objetivo era asegurar que todos los servidores o centros de datos pudieran compartir la carga de trabajo en tiempo real sin causar interrupciones en el servicio.

El equipo de tecnología de la compañía había automatizado el proceso de cambio entre servidores o centros de datos. Sin embargo, había ocasiones en las que el tráfico comercial variaba entre los servidores activos, y la carga se distribuía de manera desigual. Algunos servidores estaban sobrecargados y otros recibían menos tráfico, lo que llevaba a ineficiencias operativas. Durante las horas pico, esto provocaba caídas de servidores e interrupciones del servicio, afectando las operaciones digitales de la compañía.

APISIX permitió a la compañía monitorear continuamente la salud de sus servidores/centros de datos ascendentes y cambiar automáticamente el tráfico en función del estado de salud del servidor. Si un servidor se considera no saludable, el sistema puede cambiar automáticamente a otro servidor saludable para mantener el servicio ininterrumpido. En escenarios específicos donde el tráfico era inusualmente pequeño o demasiado grande para que un servidor lo manejara, el mecanismo de alertas de Prometheus activaba alarmas. Esta integración facilitó que el equipo de operaciones de la Compañía X monitoreara los estados de salud de los servidores, las cargas de tráfico y otras métricas críticas de manera proactiva.

Conclusión

En resumen, integrar APISIX y Prometheus para obtener métricas de datos de comprobación de estado puede mejorar significativamente tu ecosistema de métricas, dándote una comprensión más profunda del estado de salud de tus APIs. Esto puede llevar a mejores resultados comerciales, como una mayor eficiencia operativa, mayor satisfacción del cliente y mayores ingresos. Por lo tanto, si estás buscando mejorar tu ecosistema de métricas, considera aprovechar la fortaleza de APISIX y Prometheus.

Recursos relacionados

Contenido recomendado

Tags: