Integración de Splunk HTTP Event Collector con Apache APISIX
API7.ai
February 10, 2022
La complejidad de los sistemas está aumentando a medida que la tecnología itera y la arquitectura empresarial evoluciona. Los registros pueden ser compatibles y soportar diferentes motores de análisis para reducir los costos para los usuarios en el proceso de selección, operación y mantenimiento. El análisis y la observación basados en registros juegan un papel muy importante como base para garantizar la estabilidad del sistema.
Apache APISIX no solo es una puerta de enlace de API con un rendimiento excepcional, sino que también ha admitido la mayoría de las soluciones de registro de código abierto y comerciales principales a través de la comunicación con los usuarios de la comunidad sobre la operación y el mantenimiento de datos y registros, incluyendo: HTTP Logger, TCP Logger, Kafka Logger, UDP Logger, RocketMQ Logger, SkyWalking Logger, Aliyun Cloud Logging(SLS), Google Cloud Logging, etc.
Ahora tenemos una nueva adición a la matriz de soporte de registros de Apache APISIX: Splunk HEC Logging.
Este artículo explica cómo configurar y usar el servicio Splunk HEC en Apache APISIX.
Acerca de Splunk HTTP Event Collector
Splunk es un motor de búsqueda de texto completo para datos de máquinas que se puede utilizar para recopilar, indexar, buscar y analizar datos de una variedad de aplicaciones. Según el ranking de motores de búsqueda de DB Engines, Splunk ocupa actualmente el segundo lugar y es un software de búsqueda de texto completo ampliamente utilizado. Splunk, al igual que ElasticSearch, es un flujo de datos cuasi en tiempo real que proporciona resultados de búsqueda ininterrumpidos.
Splunk HTTP Event Collector (HEC) es un recolector de eventos HTTP proporcionado por Splunk que ofrece la capacidad de enviar datos y eventos de aplicaciones a Splunk utilizando el protocolo HTTP(S).
Acerca del plugin splunk-hec-logging
El splunk-hec-logging se utiliza para reenviar los registros de solicitudes de Apache APISIX a Splunk para su análisis y almacenamiento. Cuando está habilitado, Apache APISIX tomará la información del contexto de la solicitud durante la fase de registro, la serializará en el Formato de Datos de Eventos de Splunk y la enviará a la cola por lotes. Los datos en la cola se envían a Splunk HEC cuando se alcanza la capacidad máxima de procesamiento de la cola por lotes por lote, o cuando se alcanza el tiempo máximo para actualizar el búfer.
Cómo usar el plugin splunk-hec-logging
Configuración de Splunk
Despliegue de Splunk Enterprise
Consulte la guía de instalación de Splunk para el despliegue. Este artículo demostrará el despliegue a través de Docker.
Los parámetros del comando Docker son los siguientes.
docker run -p 18088:8088 -p 18000:8000 \ # 8088 es el puerto HEC, 8000 es el puerto de gestión
-e "SPLUNK_PASSWORD=your-password" \ # Contraseña de inicio de sesión de administrador
-e "SPLUNK_START_ARGS=--accept-license" \ # Aceptar los términos de la licencia (Splunk proporcionará una licencia de prueba empresarial por defecto)
-e "SPLUNK_HEC_TOKEN=your-hec-token" \ # Establecer el token HEC predeterminado, esto creará un HEC predeterminado después de la configuración
-itd --rm --name splunk-example splunk/splunk:latest
Los parámetros del comando se explican en la Documentación de Docker Splunk.
Configuración de Splunk HEC
El HEC predeterminado ya está configurado y creado en Docker, por lo que no entraremos en el proceso de creación manual aquí. Para detalles sobre el proceso de creación manual, consulte la documentación: Configuración y uso de HTTP Event Collector en Splunk Web.
Inicio de sesión en Splunk Enterprise y verificación de HEC
Acceda al puerto mapeado de Docker a través del navegador. Dado que necesita mapear el puerto 8000
del backend de gestión al puerto 18000
del host, puede acceder desde el navegador mediante "dirección de loopback más puerto" en el host durante la operación. Por ejemplo: http://127.0.0.1:18000
, el nombre de usuario predeterminado para el inicio de sesión es admin, y la contraseña es el valor de SPLUNK_PASSWORD
establecido en la variable de entorno en el ejemplo anterior.
Como se muestra en la figura a continuación, significa que el inicio de sesión fue exitoso.
Haga clic en "Settings > Data Inputs" en la parte superior derecha de la pantalla para verificar si el HEC predeterminado se configuró correctamente.
Ya podemos ver el número de HECs en la columna Inputs del HTTP Event Collector, lo que indica que la configuración fue exitosa.
En este punto, puede hacer clic en HTTP Event Collector para ingresar a la lista de detalles de HEC y ver la información del Token de los HECs.
Token Values es el valor de SPLUNK_HEC_TOKEN
configurado en la variable de entorno de Docker anterior.
Configuración de Apache APISIX
Habilitar el plugin splunk-hec-logging
Ejecute el siguiente comando para habilitar el plugin splunk-hec-logging
.
curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
"plugins":{
"splunk-hec-logging":{
"endpoint":{
// Endpoint HEC
"uri":"http://127.0.0.1:18088/services/collector",
// Token HEC
"token":"BD274822-96AA-4DA6-90EC-18940FB2414C"
},
// Tiempo máximo (en segundos) para actualizar el búfer de la cola por lotes
"inactive_timeout":2,
// Número máximo de entradas de registro por cola por lotes
"batch_max_size":10
}
},
"upstream":{
"type":"roundrobin",
"nodes":{
"127.0.0.1:1980":1
}
},
"uri":"/splunk.do"
}'
Los parámetros del plugin se describen en la siguiente tabla.
Nombre | Requerido | Valor Predeterminado | Descripción |
---|---|---|---|
endpoint | Sí | N/A | Información de configuración del endpoint HEC de Splunk |
endpoint.uri | Sí | N/A | API de recolección de eventos HEC de Splunk |
endpoint.token | Sí | N/A | Token de identidad HEC de Splunk |
endpoint.channel | No | N/A | Identificación del canal de envío HEC de Splunk, consulte: Acerca de la confirmación del indexador de HTTP Event Collector |
endpoint.timeout | No | 10 | Tiempo de espera en segundos para el envío de datos HEC de Splunk. |
ssl_verify | No | TRUE | Habilitar autenticación SSL, consulte: Documentación de OpenResty. |
max_retry_count | No | 0 | Número máximo de reintentos antes de eliminar de la tubería de procesamiento. |
retry_delay | No | 1 | Número de segundos que se debe retrasar 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 | 5 | Tiempo máximo para actualizar el búfer en segundos. |
batch_max_size | No | 1000 | Número máximo de entradas por cola por lotes. |
Enviar la solicitud
Ejecute el siguiente comando para enviar una solicitud a Splunk.
$ curl -i http://127.0.0.1:9080/splink.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
Hello, Splunk HEC Logging
Verificar el registro
Inicie sesión en la consola de Splunk y haga clic en "Search & Reporting".
Escriba source="apache-apisix-splunk-hec-logging"
en el cuadro de búsqueda para consultar los registros de solicitudes enviados.
Deshabilitar el plugin splunk-hec-logging
Elimine la configuración de splunk-hec-logging
para deshabilitar el plugin.
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
Apache APISIX también está trabajando actualmente en plugins adicionales para admitir la integración con más servicios, por lo que si está interesado, no dude en iniciar un hilo de discusión en nuestro GitHub Discussion o comunicarse a través de la lista de correo.
Artículos relacionados
- Integración de Apache APISIX con Kafka para un monitoreo de registros en tiempo real eficiente
- Apache APISIX & RocketMQ ayuda a las capacidades de monitoreo de registros de API de los usuarios
- Apache APISIX se integra con Google Cloud Logging para mejorar el procesamiento de registros
- Apache APISIX se integra con SkyWalking para crear un procesamiento de registros completo