1. Introducción
Graylog es un servicio de agregación de registros. En pocas palabras, es capaz de recopilar millones de mensajes de registro de múltiples fuentes y mostrarlos en una sola interfaz.
Y también proporciona una serie de otras funciones, como alertas en tiempo real, paneles con gráficos y tablas, y mucho más.
En este tutorial, veremos cómo configurar un servidor Graylog y enviarle mensajes de registro desde una aplicación Spring Boot.
2. Configuración de Graylog
Hay varias formas de instalar y ejecutar Graylog. En este tutorial, analizaremos las dos formas más rápidas: Docker y Amazon Web Services.
2.1. Estibador
Los siguientes comandos descargarán todas las imágenes de Docker requeridas e iniciarán un contenedor para cada servicio:
$ docker run --name mongo -d mongo:3 $ docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \ -e ES_JAVA_OPTS="-Xms2g -Xmx4g" \ -e "discovery.type=single-node" -e "xpack.security.enabled=false" \ -e "bootstrap.memory_lock=true" --ulimit memlock=-1:-1 \ -d docker.elastic.co/elasticsearch/elasticsearch:5.6.11 $ docker run --name graylog --link mongo --link elasticsearch \ -p 9000:9000 -p 12201:12201 -p 514:514 -p 5555:5555 \ -e GRAYLOG_WEB_ENDPOINT_URI="//127.0.0.1:9000/api" \ -d graylog/graylog:2.4.6-1
El panel de Graylog ahora está disponible usando la URL // localhost: 9000 / y el nombre de usuario y la contraseña predeterminados son admin .
Si bien la configuración de Docker es la más simple, requiere una cantidad sustancial de memoria. Tampoco funciona en Docker para Mac, por lo que es posible que no sea adecuado para todas las plataformas.
2.2. Servicios web de Amazon
La siguiente opción más sencilla para configurar Graylog para las pruebas es Amazon Web Services. Graylog proporciona una AMI oficial que incluye todas las dependencias necesarias , aunque requiere alguna configuración adicional después de la instalación.
Podemos implementar rápidamente una instancia EC2 con Graylog AMI haciendo clic aquí y seleccionando una región. Graylog recomienda utilizar una instancia con al menos 4 GB de memoria .
Una vez iniciada la instancia, necesitamos SSH en el host y hacer algunos cambios. Los siguientes comandos configurarán el servicio Graylog por nosotros:
$ sudo graylog-ctl enforce-ssl $ sudo graylog-ctl set-external-ip //:443/api/ $ sudo graylog-ctl reconfigure
También necesitamos actualizar el grupo de seguridad que se creó con la instancia EC2 para permitir el tráfico de red en puertos específicos. El gráfico siguiente muestra los puertos y protocolos que deben habilitarse:

El panel de Graylog ahora está disponible usando la URL /// y el nombre de usuario y la contraseña predeterminados son admin .
2.3. Otras instalaciones Graylog
Además de Docker y AWS, también hay paquetes Graylog para varios sistemas operativos. Con este enfoque, también tenemos que configurar un servicio ElasticSearch y MongoDB .
Por este motivo, Docker y AWS son mucho más fáciles de configurar, especialmente con fines de desarrollo y pruebas.
3. Envío de mensajes de registro
Con Graylog en funcionamiento, ahora debemos configurar nuestra aplicación Spring Boot para enviar mensajes de registro al servidor Graylog.
Cualquier marco de registro de Java puede admitir el envío de mensajes a un servidor Graylog utilizando el protocolo GELF.
3.1. Log4J
En este momento, el único marco de registro compatible oficialmente es Log4J. Graylog proporciona un appender, que está disponible en Maven central.
Podemos habilitarlo agregando la siguiente dependencia de Maven a cualquier archivo pom.xml :
org.graylog2 gelfj 1.1.16
También debemos excluir el módulo de inicio de registro en cualquier lugar donde usemos un módulo de inicio Spring Boot:
org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-logging
Ahora podemos definir un nuevo appender en nuestro archivo log4j.xml :
Esto configurará todos los mensajes de registro con nivel INFO o superior para ir al appender Graylog, que a su vez envía el mensaje de registro al servidor Graylog.
3.2. Otros marcos de registro
El mercado de Graylog tiene bibliotecas adicionales que admiten una variedad de otros marcos de registro, como Logback, Log4J2 y más. Solo tenga en cuenta que Graylog no mantiene estas bibliotecas . Algunos de ellos están abandonados y otros tienen poca o ninguna documentación.
Se debe tener precaución al confiar en estas bibliotecas de terceros.
3.3. Sidecar Coleccionista Graylog
Otra opción para la recopilación de registros es el Graylog Collector Sidecar. El sidecar es un proceso que se ejecuta a lo largo de un recopilador de archivos y envía el contenido del archivo de registro a un servidor Graylog.
Sidecar es una excelente opción para aplicaciones donde no es posible cambiar los archivos de configuración de registro. Y debido a que lee los archivos de registro directamente desde el disco, también se puede utilizar para integrar mensajes de registro desde cualquier plataforma y lenguaje de programación .
4. Visualización de mensajes en Graylog
Podemos usar el panel de Graylog para confirmar la entrega exitosa de nuestros mensajes de registro. Usando la fuente del filtro : localhost mostrará los mensajes de registro de nuestra configuración de muestra de log4j anterior:

5. Conclusión
Graylog es solo uno de los muchos servicios de agregación de registros. Puede buscar rápidamente millones de mensajes de registro, visualizar datos de registro en tiempo real y enviar alertas cuando se cumplen ciertas condiciones.
La integración de Graylog en una aplicación Spring Boot solo requiere unas pocas líneas de configuración y sin ningún código nuevo.
Los ejemplos de código, como siempre, se pueden encontrar en GitHub.