Apache APISIX se integra con Google Cloud Logging para mejorar el procesamiento de logs
API7.ai
December 22, 2021
El registro es una infraestructura importante para los sistemas distribuidos. Puede ayudar a los desarrolladores a observar el estado de operación del servicio, mejorar la eficiencia de la resolución de problemas y diagnóstico del servicio, y realizar análisis multidimensionales para mejorar la estabilidad general y la eficiencia operativa del sistema.
Google Cloud Logging es un servicio de gestión de registros en tiempo real proporcionado por Google Cloud, que ofrece almacenamiento a nivel de EB, búsqueda, análisis y servicios de alertas. El navegador de registros de Google Cloud Logging permite buscar, ordenar y analizar registros de manera fácil y eficiente, y también proporciona consultas guardadas y funciones gráficas enriquecidas para que los resultados del filtrado de registros sean recuperables y más intuitivos.
Apache APISIX ha admitido previamente la integración de HTTP Logger, TCP Logger, Kafka Logger, UDP Logger, RocketMQ Logger, SkyWalking Logger, Aliyun Cloud Logging(SLS) y muchas otras soluciones de servicios de registro en la nube y de código abierto.
Recientemente, Apache APISIX también ha añadido soporte para Google Cloud Logging, ofreciendo a los usuarios una nueva solución de registro cuando utilizan Apache APISIX como puerta de enlace: usar google-cloud-logging para reenviar los registros de solicitudes de Apache APISIX al servicio de Google Cloud Logging para su análisis y almacenamiento.
Cuando el plugin está habilitado, Apache APISIX tomará la información del contexto de la solicitud en la fase de registro y la serializará en LogEntry de Google Cloud Logging, luego enviará los datos de registro serializados a la cola por lotes, y cuando la cola por lotes alcance un umbral de tiempo o entradas establecido por el usuario, los datos de registro se reenviarán al servicio de Google Cloud Logging a través de la API de Google Cloud.
Este artículo explicará cómo configurar y utilizar el servicio de Google Cloud Logging en Apache APISIX.
Configurar Google Cloud
- Abra su navegador y visite la página de inicio de Google Cloud.
- Ingrese su nombre de usuario y contraseña para iniciar sesión en la consola de Google Cloud.
- Haga clic en el menú izquierdo de la consola de Google Cloud y seleccione "IAM & Admin > Crear un proyecto" para comenzar a crear un proyecto.
- Ingrese un nombre de proyecto, seleccione un nombre de organización y haga clic en "CREAR" para crear el proyecto.
- Cuando el proyecto se haya creado con éxito, la esquina superior derecha de la consola indicará que la creación fue exitosa.
- Haga clic en la ventana para seleccionar el proyecto, o seleccione la ruta de operación del proyecto en la barra de navegación superior de la página de inicio de la consola. Después de seleccionar el proyecto, será redirigido a la página de inicio de la consola, donde ya podrá ver los datos sobre el proyecto actual en la barra de navegación superior y la información del proyecto en el centro de información.
- Después de crear el proyecto, necesita crear una cuenta de servicio para el proyecto. Vuelva a la página de inicio de la consola de Google Cloud y haga clic en "IAM & Admin > Cuenta de servicio" en el menú izquierdo para comenzar a crear una cuenta de servicio.
- Haga clic en "CREAR CUENTA DE SERVICIO" para crear la cuenta de servicio.
- Ingrese el nombre de la cuenta de servicio y el ID (el ID generalmente sigue la generación de la cuenta), y luego haga clic en "CREAR Y CONTINUAR".
- Haga clic en "Rol" y escriba "Logging Admin" en el cuadro de búsqueda para buscar este rol y seleccione "Logging Admin" como el rol.
- Haga clic en "HECHO" para completar la creación de la cuenta de servicio y saltar a la página de inicio de la cuenta de servicio. En este punto, puede ver la cuenta que acaba de crear y sus detalles en la lista.
- Haga clic en "Administrar claves" en la última columna de la cuenta de servicio para ingresar a la interfaz de gestión de claves secretas.
- Haga clic en "AGREGAR CLAVE > Crear nueva clave" para comenzar a crear una nueva clave secreta.
- Seleccione el tipo de clave secreta como "JSON" en la página emergente, y luego haga clic en "CREAR" para crear una nueva clave secreta.
- La información de la clave privada se descargará automáticamente al directorio de descargas predeterminado del sistema a través de su navegador. Cuando habilite el plugin google-cloud-logging, necesitará usar la información en esta clave privada, así que guarde el archivo de la clave privada.
Configurar Apache APISIX
Habilitar el plugin google-cloud-logging
Opción 1: Configuración de carga de archivo de clave
- Cargue el archivo de clave privada al servidor del nodo de Apache APISIX.
- Configure la ruta del archivo en
google-cloud-logging.auth_file
, como se muestra a continuación:
curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
"uri":"/logging.do",
"upstream":{
"type":"roundrobin",
"nodes":{
"127.0.0.1:1980":1
}
},
"plugins":{
"google-cloud-logging":{
// Archivo de clave privada de Google Cloud Logging
"auth_file":"/ruta/al/apache-apisix-fcafc68c2f41.json",
// Número máximo de entradas por cola por lotes.
"batch_max_size": 1,
// Tiempo máximo para refrescar el búfer en segundos.
"inactive_timeout": 10
}
}
}'
Opción 2: Declarar configuraciones en JSON
- Abra el archivo de clave privada.
- Configure el valor de
project_id
engoogle-cloud-logging.auth_config.project_id
. - Configure el valor de
private_key
engoogle-cloud-logging.auth_config.private_key
. Como se muestra a continuación:
curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
"uri":"/logging.do",
"upstream":{
"type":"roundrobin",
"nodes":{
"127.0.0.1:1980":1
}
},
"plugins":{
"google-cloud-logging":{
// Archivo de clave privada de Google Cloud Logging
"auth_config":{
"project_id":"apache-apisix",
"private_key":"-----BEGIN RSA PRIVATE KEY-----su clave privada-----END RSA PRIVATE KEY-----"
},
// Número máximo de entradas por cola por lotes.
"batch_max_size": 1,
// Tiempo máximo para refrescar el búfer en segundos.
"inactive_timeout": 10
}
}
}'
Parámetros
Nombre | Requerido | Valor por Defecto | Descripción |
---|---|---|---|
auth_config | No | n/a | Archivo de clave privada de Google Cloud Logging. Debe configurarse auth_config o auth_file. |
auth_config.private_key | Sí | n/a | Clave privada de Google Cloud Logging. |
auth_config.project_id | Sí | n/a | ID del proyecto de la cuenta de servicio de Google. |
auth_config.token_uri | No | oauth2.googleapis.com/token | URI del token que solicita la cuenta de servicios de Google. |
auth_config.entries_uri | No | logging.googleapis.com/v2/entries | API de escritura de entradas de registro de Google Log Service. |
auth_config.scopes | No | ["https://www.googleapis.com/auth/logging.read","https://www.googleapis.com/auth/logging.write","https://www.googleapis.com/auth/logging.admin","https://www.googleapis.com/auth/cloud-platform"] | Alcance de acceso de la cuenta de servicios de Google, consulte: OAuth 2.0 Scopes for Google APIs |
auth_file | No | n/a | Ruta al archivo JSON de la cuenta de servicios de Google (debe configurarse auth_config o auth_file) |
ssl_verify | No | TRUE | Habilitar autenticación SSL, configurado según las opciones de documentación de OpenResty. |
resource | No | {"type": "global"} | Recursos monitoreados de Google, consulte MonitoredResource. |
log_id | No | apisix.apache.org%2Flogs | ID de registro de Google, referencia: LogEntry. |
max_retry_count | No | 0 | Número máximo de reintentos antes de la eliminación de la tubería de procesamiento. |
retry_delay | No | 1 | Número de segundos que debe retrasarse la ejecución del proceso si falla. |
buffer_duration | No | 60 | Duración máxima (en segundos) de la entrada más antigua en el lote que debe procesarse primero. |
inactive_timeout | No | 10 | Tiempo máximo para refrescar el búfer en segundos. |
batch_max_size | No | 100 | Tiempo máximo para refrescar el búfer en segundos. |
Verificar que el plugin está funcionando correctamente
-
Ejecute el siguiente comando para enviar una solicitud a Google Cloud Logging.
curl -i http://127.0.0.1:9080/logging.do HTTP/1.1 200 OK Content-Type: text/html; charset=utf-8 Transfer-Encoding: chunked Connection: keep-alive Date: Fri, 10 Dec 2021 09:57:52 GMT Server: APISIX/2.11.0 Hola, Google Cloud Logging
-
Abra su navegador y visite la página de inicio de Google Cloud.
-
Ingrese su nombre de usuario y contraseña para iniciar sesión en la consola de Google Cloud.
-
Vea el registro de solicitudes enviadas a través del navegador de registros, y los resultados devueltos se muestran a continuación.
Deshabilitar el plugin google-cloud-logging
Puede eliminar el bloque de configuración relacionado con google-cloud-logging para desactivar el plugin si ha terminado de usarlo.
curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
"uri":"/logging.do",
"upstream":{
"type":"roundrobin",
"nodes":{
"127.0.0.1:1980":1
}
},
"plugins":{
}
}'
Resumen
Este artículo describe los pasos detallados para la interfaz entre Apache APISIX y Google Cloud Logging. Esperamos que este artículo le brinde una comprensión más clara del uso de Google Cloud Logging en Apache APISIX y facilite la operación práctica posterior.
Apache APISIX no solo se compromete a mantener su propio alto rendimiento, sino que también siempre ha prestado gran atención a la construcción de su ecosistema de código abierto. Actualmente, Apache APISIX tiene más de 10 plugins relacionados con el registro y admite la interfaz con proyectos de registro de código abierto principales en la industria.
Si tiene la necesidad de conectarse a otros registros, visite el GitHub de Apache APISIX y deje sus sugerencias a través de un issue; o suscríbase a la lista de correo de Apache APISIX y exprese sus pensamientos por correo electrónico.
Artículos relacionados
Apache APISIX se integra con SkyWalking para crear un procesamiento completo de registros
Apache APISIX & RocketMQ ayuda a las capacidades de monitoreo de registros de API del usuario