Uso de Splunk para la búsqueda y supervisión de registros en AEM as a Cloud Service
Actualizado el 15 de enero de 2025
Intentar desarrollar y ejecutar un sitio web moderno sin un agregador de registros y sin métricas y gráficos es una clínica de enfurecemiento y frustración. ¿Cuándo comenzó el problema de tal o cual cosa? ¿Fue antes o después del despliegue? ¿Siempre ha sido así? ¿Todas las páginas son lentas o solo esta página? Ahora está lanzando errores, ¿siempre estaba lanzando errores? ¿Este error se correlaciona con algo?
Estas son las clases de preguntas a las que se enfrenta cuando solo tiene acceso a un registro descargado, pero no puede buscarlo, graficarlo y medirlo a lo largo del tiempo y en varios servidores. Cuando se lanzó AEM as a Cloud Service por primera vez, el único mecanismo para acceder a los registros era descargar registros completos a través de Cloud Manager. Más tarde, Adobe ofreció la capacidad de seguir los registros de pods individuales a través de un proceso algo complicado utilizando Adobe IO. Pero ahora, hay una tercera y mucho mejor manera de instrumentar la infraestructura de AEM Cloud Service, y es con Splunk. Y adivina qué, incluso se puede hacer de forma gratuita, si tienes poco dinero en efectivo o simplemente estás tratando de probarlo.
A continuación, te explicamos cómo configurarlo:
Lo que necesitarás
Para medir la instalación de AEM as a Cloud Service con Splunk, necesitará:
- Un entorno de AEM as a Cloud Service de pago y con licencia: Esto funcionará en cualquier entorno de Dev, Stage o Prod AEM as a Cloud Service, pero no funcionará en el entorno de Adobe Partner Sandbox. Debido a la forma en que se configuran los entornos limitados de AEM Cloud Service, comparten muchas configuraciones diferentes, una de ellas es la configuración de Splunk. Por lo tanto, esto solo funciona con entornos AEMaaCS de pago completos.
- Un entorno de Splunk Free, Splunk Enterprise o Splunk Cloud al que tenga acceso de administrador.
Cómo funciona
Los datos de registro de AEM as a Cloud Service se ingieren primero en una instancia de Splunk propiedad de Adobe, a la que tiene acceso el soporte técnico de Adobe para supervisar y solucionar problemas de los entornos. Cuando se configura correctamente, Adobe configura su instancia de Splunk para reenviar la información de registro a su instancia de Splunk mediante el recopilador de eventos HTTP de Splunk o "HEC".
Diagrama de Splunk con AEM as a Cloud Service
Configurarlo
Te voy a dar la lista de cosas que hacer para configurarlo desde cero. Si eres una gran empresa, es probable que ya tengas un entorno Splunk que utilizarás, por lo que te saltarás un montón de pasos. Pero incluso si no está realizando una configuración empresarial completa, estas instrucciones funcionarán con la versión gratuita de Splunk y le proporcionarán un registro de 500 MB/día que realmente funcionará con muchas instalaciones pequeñas de AEM, instalaciones de desarrollo e incluso algunas instalaciones de Assets de producción en las que he trabajado.
Esto es lo que debe hacer:
Instalar Splunk
Suponiendo que aún no tenga una configuración de Splunk, primero deberá instalar Splunk. Para empezar, incluso un entorno muy pequeño será suficiente para que despegues. Esta demostración se creó con Splunk Free ejecutándose en una máquina virtual de AWS de la serie T de una sola CPU con 8 GB de RAM, aunque es probable que cualquier entorno de producción necesite muchos más recursos.
Configurar un índice para los datos de AEMaaCS
En Splunk, vaya a Configuración -> Índices y cree un índice para los datos de AEM Cloud Service.
Cree un índice de Splunk para los datos de AEM as a Cloud Service.
Obtener un certificado SSL válido externamente para Splunk
Adobe requiere un certificado SSL válido externamente para el punto de conexión HEC de Splunk. Un certificado autofirmado no funcionará. A veces, con las conexiones de servidor a servidor, se puede ejecutar SSL en un modo de validación "relajado" para permitir que funcionen los errores de validación y los certificados autofirmados, pero no en este caso.
Para esta demostración, creé un certificado SSL de forma gratuita con Letsencrypt usando Certbot en CentOS.
Configuración del conector de eventos HTTP
El siguiente paso es configurar el recopilador de eventos HTTP en Splunk. Vaya a Configuración -> Entradas de datos y haga clic en " + Agregar nuevo" para el recopilador de eventos HTTP.
Al configurar el punto de conexión:
- Asegúrese de seleccionar el índice de Splunk que creó anteriormente para que el punto de conexión HEC pueda alimentar ese índice.
- Deje "Habilitar confirmación del indexador" sin marcar. Si habilita la confirmación del indexador, terminará generando un error "Falta el canal de datos" de la instancia de Splunk de origen cuando intente reenviar datos. Entonces, déjelo sin marcar.
Configuración de SSL en el punto de conexión HEC
Un siguiente punto a hacer es configurar SSL en el punto de conexión de Splunk. Tenga en cuenta aquí que Splunk web (la interfaz de usuario de Splunk que usa para buscar y configurar Splunk) y Splunk HEC tienen configuraciones HTTP y SSL completamente separadas. Por lo tanto, si activa SSL en la web de Splunk, esto no hace que su Splunk HEC SSL también lo haga. Adobe requiere que el tráfico HEC esté cifrado y prefiere que esté en el puerto 443. No me opuse demasiado a esto, así que no sé si pueden configurar un puerto alternativo si lo pides lo suficientemente amablemente.
Primero puede activar SSL yendo a "CONFIGURACIÓN GLOBAL" en la configuración del recopilador de eventos HTTP, haciendo clic en "habilitar SSL" e ingresando el número de puerto.
Sin embargo, luego deberá ingresar a su configuración de Splunk en el disco para completar la configuración SSL.
Edite {splunk_install_dir}/etc/apps/splunk_httpinput/local/inputs.conf y asegúrese de que tenga el puerto deseado y la configuración del certificado SSL allí:
[http]
disabled = 0
port = 443
serverCert = /etc/letsencrypt/live/splunk.opsinventor.com/fullchain.pem
privKeyPath = /etc/letsencrypt/live/splunk.opsinventor.com/privkey.pem
Luego, reinicia Splunk. A continuación, debería poder realizar una prueba del punto final HEC de Splunk con el siguiente comando curl:
curl -k https://your-splunk-host.com:443/services/collector -H 'Authorization: Splunk 1e238ab6-1f9d-47d4-9b0g-81c2a47e389c' -d '
{
"sourcetype": "aemerror",
"index": "aemaacs",
"event": {
"host": "172.27.60.76",
"file_path": "/var/log/aem/error.log",
"orig_time": "07.12.2020 10:07:09.895",
"level": "INFO",
"msg": "[FelixLogListener] Test SPLUNK",
"pod_name": "cm-random-pod",
"aem_program_id": "12345",
"aem_tier": "author",
"aem_env_type": "dev",
"aem_env_id": "32132",
"splunk_customer": "true"
}
}
'
En el comando curl, reemplace el bit "'Authorization: Splunk 1e238ab6-1f9d-47d4-9b0g-81c2a47e389c'" con el "Valor del token" que ve en la configuración de entradas del recopilador de eventos HTTP en Splunk (/en-US/manager/search/http-eventcollector).
Como respuesta, debería ver:
{"text": "Éxito", "código": 0}
Esto significa que el recopilador de eventos se ha configurado correctamente.
Abra un ticket con Adobe para que configuren HEC de su lado
Una vez hecho lo anterior, puede abrir un ticket con el soporte de Adobe para que empiecen a reenviar registros a su instancia de Splunk.
Asegúrese de incluir específicamente:
- Dirección de punto final HEC de Splunk: (es decir, https://splunk.myorganization.com)
- Índice de Splunk: (el nombre del índice que creó)
- Puerto Splunk: 443
- Token HEC de Splunk: (un valor como "1e238ab6-1f9d-47d4-9b0g-81c2a47e389c" que habría obtenido de /en-US/manager/search/http-eventcollector en su instancia de Splunk
- Qué entornos quieres ingerir en Splunk
Qué datos debe ver (cómo sabe que están funcionando)
En Splunk, debería poder hacer una búsqueda simple como:
index=aemaacs
Y debería mostrar resultados como este:
Debe haber (al menos) 7 tipos de fuentes que se incluyen en sus resultados:
- aemerror: Registros de errores de AEM de todas las instancias
- aemrequest: Registros de solicitudes de AEM de autores y editores (incluye información de tiempo y respuesta)
- aemaccess: Registros de acceso de AEM de autores y editores
- httpdaccess: Apache Dispatcher access_log
- aemqueryrecorder: Registros de depuración de consultas de AEM
- aemdispatcher: Registros de AEM Dispatcher (que contienen datos de aciertos de caché)
- httpderror: Apache error_log
Un panel de control de Splunk de ejemplo para AEM as a Cloud Service
Para completar esta demostración, creé un panel de ejemplo para este entorno de desarrollo de AEM as a Cloud Service.
Los paneles superiores muestran información de acceso a lo largo del tiempo, tiempo de respuesta promedio y proporción de aciertos de caché. Dado que actualmente no hay forma de ver el tiempo de respuesta promedio a lo largo del tiempo para el servicio en la nube (es decir, hasta que Adobe nos dé acceso a los datos de APM de New Relic o backend), esta es la única forma que he encontrado para ser granular y averiguar, por página o recurso, qué está tardando en procesarse.
Y arriba, puede obtener errores a lo largo del tiempo, además de una tabla de errores de nivel 500/400 principales, así como una lista de recursos con el tiempo de respuesta promedio más alto.
En breve haré una publicación separada con las búsquedas de Splunk utilizadas para generar este panel, ya que los tipos de origen, los campos y demás deben ser los mismos para cualquier implementación de AEM as a Cloud Service, lo que significa que solo debería tener que reemplazar el nombre del índice para que funcione.
Actualizar: Mientras tanto, consulte esta excelente publicación de blog que Yogesh de Splunk acaba de escribir sobre la implementación de Splunk en AEM as a Cloud Service, ya que incluye una serie de búsquedas de muestra necesarias para que pueda iniciar su panel.
Para repetir: esto es gratis, deberías hacerlo
Todo esto se creó sin cargo de licencia adicional con Adobe y con versiones gratuitas de Splunk. El único costo involucrado es para la máquina virtual en la nube necesaria para alojar Splunk.
Para obtener información adicional, la versión gratuita de Splunk tiene algunas limitaciones clave. La primera es que Splunk Free elimina la capacidad de inicio de sesión. Por lo tanto, cualquiera que pueda acceder al front-end de su instancia de Splunk puede ver todos sus datos. Esto significa que si implementa esto, querrá (a) comprar la versión real de Splunk o (b) simplemente bloquear Splunk por IP o poner Nginx / Apache delante de él con autenticación básica HTTP.
La segunda limitación es que Splunk Free está limitado a 500 MB/día de registro. Como referencia, el entorno de desarrollo de AEMaaCS Assets que estoy usando para esta demostración está usando, en promedio, alrededor del 22% de esa capacidad de licencia:
Por lo tanto, si desea poner esto en marcha con una licencia gratuita (mientras resuelve cómo obtener una orden de compra para Splunk real) es posible que desee hacer un entorno de Splunk separado para Dev & Stage, y otro para Prod.
¡Espero que esto ayude!
Sobre el autor
¿Te gusta lo que escuchaste? ¿Tiene preguntas sobre lo que es adecuado para usted? ¡Nos encantaría hablar! Contáctenos