Integración de Splunk HTTP Event Collector con Apache APISIX

API7.ai

February 10, 2022

Ecosystem

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.

Interfaz de usuario de Splunk

Haga clic en "Settings > Data Inputs" en la parte superior derecha de la pantalla para verificar si el HEC predeterminado se configuró correctamente.

HEC predeterminado

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.

Número de HECs

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.

Información del Token de 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.

NombreRequeridoValor PredeterminadoDescripción
endpointN/AInformación de configuración del endpoint HEC de Splunk
endpoint.uriN/AAPI de recolección de eventos HEC de Splunk
endpoint.tokenN/AToken de identidad HEC de Splunk
endpoint.channelNoN/AIdentificación del canal de envío HEC de Splunk, consulte: Acerca de la confirmación del indexador de HTTP Event Collector
endpoint.timeoutNo10Tiempo de espera en segundos para el envío de datos HEC de Splunk.
ssl_verifyNoTRUEHabilitar autenticación SSL, consulte: Documentación de OpenResty.
max_retry_countNo0Número máximo de reintentos antes de eliminar de la tubería de procesamiento.
retry_delayNo1Número de segundos que se debe retrasar la ejecución del proceso si falla.
buffer_durationNo60Duración máxima (en segundos) de la entrada más antigua en el lote que debe procesarse primero.
inactive_timeoutNo5Tiempo máximo para actualizar el búfer en segundos.
batch_max_sizeNo1000Nú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".

Consola de Splunk

Escriba source="apache-apisix-splunk-hec-logging" en el cuadro de búsqueda para consultar los registros de solicitudes enviados.

Consultar los registros

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

Tags: