Recopilación Simplificada de Logs con el Plugin http-logger de APISIX
April 11, 2024
Introducción
En el desarrollo de software moderno, el registro de llamadas API es una parte indispensable, ya que registra información detallada para cada llamada API de una aplicación. Una gestión efectiva de los registros permite a los equipos de desarrollo monitorear las actividades de las llamadas API en tiempo real, facilitando la detección y resolución rápida de problemas. Aunque existen soluciones maduras de sistemas de registro en las empresas, los desarrolladores pueden enfrentar desafíos al integrar registros de servicios de prueba en etapas iniciales en los sistemas de registro internos debido a restricciones de permisos y procesos de aprobación, lo que dificulta su eficiencia de desarrollo.
El complemento http-logger
proporcionado por Apache APISIX facilita la integración con servidores HTTP, utilizando el ampliamente adoptado protocolo HTTP para la recepción de registros. Esto permite a los desarrolladores ver fácilmente los registros de llamadas API directamente, mejorando así la eficiencia del desarrollo. A continuación, presentaremos cómo funciona y cómo usarlo.
Principios del complemento http-logger
El complemento http-logger
en APISIX permite enviar datos de registro a servidores HTTP o HTTPS. Su principio central implica procesar solicitudes por APISIX cuando el cliente las inicia, generando registros de acceso y enviando asincrónicamente la información del contexto de la solicitud, formateada según los formatos de registro especificados, a través de solicitudes POST como objetos JSON a servidores HTTP o HTTPS configurados. Esto permite ver la información de los registros API en nuestros propios servicios HTTP o HTTPS, mejorando significativamente la eficiencia del desarrollo. A continuación, se proporciona un diagrama de flujo para ilustrar el flujo de datos.
Creación de un servicio HTTP simple para la recepción de registros
Aunque existen numerosos productos SaaS y soluciones de código abierto en el mercado para la gestión y análisis de registros, como Loggly, Splunk y ELK Stack, el acceso a redes externas puede estar restringido dentro de las redes empresariales, lo que plantea desafíos durante las etapas de desarrollo y prueba. Por lo tanto, se puede desarrollar rápidamente un servicio HTTP simple para recopilar registros. A continuación, se muestra un ejemplo usando Node.js:
// httpserver.js
const http = require('http');
http.createServer((req, res) => {
let data = '';
req.on('data', chunk => {
data += chunk;
});
req.on('end', () => {
console.log('Registro de APISIX:', data);
});
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end(`Hola Mundo\n`);
}).listen(3000, () => {
console.log('Servidor ejecutándose en http://localhost:3000/');
});
El script escucha en el puerto local 3000
e imprime el cuerpo de las solicitudes a este punto final del servicio. Puedes seguir estos pasos para ejecutarlo y probarlo:
-
Ejecuta
node httpserver.js
para iniciar el servicio. -
Usa el comando
curl -i http://127.0.0.1:3000/ -d '{"name": "Jack"}'
para acceder a este punto final. -
Deberías ver una salida similar:
Servidor ejecutándose en http://localhost:3000/
Registro de APISIX: {"name": "Jack"}
Habilitación del complemento Http-logger en APISIX
A continuación, discutiremos cómo habilitar el complemento http-logger
en APISIX y enviar registros al servicio HTTP creado en el paso anterior.
- Usa la API de administración de APISIX para crear una ruta y habilitar el complemento
http-logger
:
curl "http://127.0.0.1:9080/apisix/admin/routes/1" \
-H "X-API-KEY: edd1c9f034335f136f87ad84b625c8f1" -X PUT -d '
{
"uri": "/get",
"upstream": {
"type": "roundrobin",
"nodes": {
"httpbin.org:80": 1
}
},
"plugins": {
"http-logger": {
"uri": "http://127.0.0.1:3000/"
}
}
}'
-
Usa el comando curl para enviar solicitudes a APISIX:
curl -i http://127.0.0.1:9080/get
-
Deberías ver una salida de registro similar en tu terminal.
Se puede observar que hemos recopilado con éxito los registros enviados por APISIX.
Personalización de formatos de registro
El complemento http-logger
permite a los desarrolladores personalizar los formatos de registro para satisfacer diversas necesidades. Si solo interesan campos específicos en los datos de registro, APISIX admite la declaración de formatos y contenidos de registro. Esto se puede lograr configurando los metadatos del complemento proporcionados por APISIX.
1. Configura los metadatos del complemento a través de la API de administración:
curl http://127.0.0.1:9180/apisix/admin/plugin_metadata/http-logger \
-H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
"log_format": {
"host": "$host",
"@timestamp": "$time_iso8601",
"client_ip": "$remote_addr"
}
}'
- Al emitir el comando curl nuevamente, deberías ver una salida de registro similar:
Registro de APISIX: [{"service_id":"a869a037-27df-4278-ab50-4e66d212cfc0","client_ip":"192.168.65.1","host":"127.0.0.1","route_id":"4f499953-9504-4737-9f3d-facaeda4b841","@timestamp":"2024-04-10T00:10:31+00:00"}]
Conclusión
Mediante el uso del complemento http-logger
, los desarrolladores no solo simplifican el proceso de visualización de registros, sino que también mejoran la eficiencia diaria del desarrollo. Este complemento, proporcionado por APISIX, es el más simple y fácil de usar, operando en el protocolo HTTP universalmente aceptado para la transmisión de red. Permite a los desarrolladores integrarse sin problemas con cualquier servicio HTTP y elegir de manera flexible los servicios de recepción de registros.
Además, APISIX admite docenas de complementos de registro para satisfacer diversas necesidades en diferentes escenarios. Ya sea para la recopilación simple de registros HTTP, el análisis de registros y monitoreo complejos, o las demandas de alto rendimiento y estabilidad, APISIX proporciona un soporte integral, creando sistemas más convenientes y eficientes para los usuarios.