Graylog es una plataforma centralizada de gestión y análisis de registros que permite recopilar, almacenar, buscar y analizar logs procedentes de servidores, routers, firewalls, aplicaciones y otros dispositivos de red.
En este artículo veremos cómo instalar Graylog 7 en Debian 12, incluyendo MongoDB, Graylog Data Node y Graylog Server, además de realizar la configuración inicial necesaria para acceder a su interfaz web.
La instalación quedará preparada para posteriormente recibir información procedente de otros sistemas. En nuestro caso, en un artículo independiente configuraremos Graylog para recopilar y analizar información relacionada con clientes PPPoE.
La documentación oficial de Graylog 7 contempla Debian 12 como sistema operativo soportado. La arquitectura actual está formada principalmente por MongoDB, Graylog Server y Graylog Data Node.
Arquitectura que utilizaremos
Graylog necesita varios componentes para funcionar.
MongoDB almacena información de configuración y metadatos de Graylog.
Graylog Server proporciona el motor principal de procesamiento, la API y la interfaz web.
Graylog Data Node proporciona la capa encargada del almacenamiento e indexación de los mensajes y simplifica la utilización de OpenSearch.
Graylog recomienda actualmente Data Node como backend de búsqueda en lugar de instalar OpenSearch directamente cuando se realiza una instalación nueva.
Para una instalación de laboratorio o de pequeño tamaño podemos tener todos los componentes dentro de la misma infraestructura, aunque para instalaciones con una carga considerable conviene estudiar la separación de los servicios y dimensionar correctamente los recursos.
Comprobar la versión de Debian
Antes de empezar podemos comprobar la versión instalada:
cat /etc/debian_version
En nuestro caso:
12.12
También podemos obtener información más detallada:
cat /etc/os-release
Deberíamos encontrar una referencia similar a:
PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
Configurar una dirección IP fija
Es recomendable que un servidor Graylog disponga de una dirección IP estática, ya que posteriormente otros servidores, routers y dispositivos enviarán sus logs hacia esa dirección.
Podemos comprobar la configuración actual con:
ip addr
Y la puerta de enlace con:
ip route
Si Debian se encuentra dentro de un contenedor LXC de Proxmox, es recomendable configurar la dirección IP desde:
Proxmox
→ Contenedor
→ Network
→ eth0
→ Edit
Seleccionaremos una dirección estática, por ejemplo:
IPv4/CIDR: 192.168.10.50/24
Gateway: 192.168.10.1
Naturalmente, tendremos que sustituir estos valores por los correspondientes a nuestra red.
Podemos comprobar posteriormente la IP desde Debian:
hostname -I
Actualizar Debian 12
Antes de instalar Graylog conviene actualizar los repositorios y paquetes:
sudo apt update
sudo apt full-upgrade -y
Podemos instalar también algunas herramientas que utilizaremos durante el proceso:
sudo apt install -y curl wget gnupg openssl ca-certificates
Configurar la zona horaria
Podemos consultar la zona horaria actual:
timedatectl
Para un servidor situado en España podríamos establecer:
sudo timedatectl set-timezone Europe/Madrid
Comprobamos nuevamente:
timedatectl
Graylog recomienda prestar atención a la configuración temporal del servidor porque la fecha y hora son fundamentales a la hora de almacenar y consultar eventos.
Instalar MongoDB
Graylog utiliza MongoDB para almacenar metadatos y configuración interna.
Graylog 7.0 y 7.1 requieren actualmente MongoDB 7.x como mínimo y admiten versiones hasta la rama 8.2.x. La documentación actual de instalación de Graylog utiliza MongoDB 8.0 como referencia.
Instalamos las herramientas necesarias:
sudo apt install -y gnupg curl
Importamos la clave del repositorio oficial de MongoDB 8.0:
curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | \
sudo gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg \
--dearmor
Añadimos el repositorio para Debian 12 Bookworm:
echo "deb [ signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] http://repo.mongodb.org/apt/debian bookworm/mongodb-org/8.0 main" | \
sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list
Actualizamos los repositorios:
sudo apt update
Instalamos MongoDB:
sudo apt install -y mongodb-org
La guía oficial recomienda fijar la versión instalada para evitar que una actualización automática introduzca una versión de MongoDB que todavía no haya sido validada con Graylog.
Podemos hacerlo con:
sudo apt-mark hold mongodb-org
Activamos MongoDB:
sudo systemctl daemon-reload
sudo systemctl enable mongod.service
sudo systemctl start mongod.service
Comprobamos su estado:
sudo systemctl status mongod
Deberíamos encontrar:
Active: active (running)
Podemos salir de la pantalla de estado pulsando:
q
Comprobar la versión de MongoDB
Podemos comprobar qué versión hemos instalado mediante:
mongod --version
También:
mongosh --version
Instalar el repositorio de Graylog 7
Ahora instalaremos el repositorio oficial correspondiente a nuestra rama de Graylog.
Si vamos a utilizar Graylog 7.1, la documentación actual utiliza:
wget https://packages.graylog2.org/repo/packages/graylog-7.1-repository_latest.deb
Instalamos el repositorio:
sudo dpkg -i graylog-7.1-repository_latest.deb
Actualizamos:
sudo apt update
Si utilizamos otra versión dentro de la familia Graylog 7.x debemos utilizar específicamente el repositorio correspondiente a esa rama y comprobar previamente su documentación.
Instalar Graylog Data Node
Instalamos Graylog Data Node:
sudo apt install -y graylog-datanode
Graylog Data Node proporciona la capa de almacenamiento e indexación utilizada actualmente por las instalaciones modernas de Graylog y evita tener que gestionar directamente una instalación independiente de OpenSearch en el escenario recomendado.
Configurar vm.max_map_count
Data Node necesita que Linux tenga un valor suficiente de vm.max_map_count.
Lo comprobamos:
cat /proc/sys/vm/max_map_count
Graylog establece como mínimo:
262144
Si tenemos un valor inferior, podemos configurarlo mediante:
echo 'vm.max_map_count=262144' | \
sudo tee /etc/sysctl.d/99-graylog-datanode.conf
Aplicamos los cambios:
sudo sysctl --system
Volvemos a comprobarlo:
cat /proc/sys/vm/max_map_count
El resultado debería ser:
262144
Este requisito está indicado expresamente en la instalación oficial de Data Node.
Importante si utilizamos un contenedor LXC en Proxmox
Si Graylog está instalado dentro de un contenedor LXC de Proxmox, determinados parámetros del kernel, como vm.max_map_count, dependen realmente del kernel del host Proxmox.
En ese caso puede ser necesario realizar esta configuración desde el propio nodo Proxmox en lugar de hacerlo únicamente dentro del contenedor.
Esto es especialmente importante antes de poner Data Node en producción.
Generar password_secret
Graylog necesita una cadena aleatoria denominada:
password_secret
Podemos generarla con:
openssl rand -hex 32
Obtendremos una cadena similar a:
fd27b46c8e75c93b...
Debemos guardar este valor, ya que tendrá que configurarse tanto en Graylog Data Node como en Graylog Server y debe ser exactamente el mismo en ambos componentes.
No debemos reutilizar literalmente el ejemplo anterior.
Configurar Graylog Data Node
Abrimos:
sudo nano /etc/graylog/datanode/datanode.conf
Buscamos:
password_secret =
Y colocamos detrás el secreto generado anteriormente:
password_secret = NUESTRO_PASSWORD_SECRET
También debemos configurar la conexión con MongoDB.
Si MongoDB está en el mismo servidor podemos utilizar:
mongodb_uri = mongodb://127.0.0.1:27017/graylog
Configurar la memoria de Data Node
Graylog recomienda asignar al heap de Data Node aproximadamente la mitad de la RAM disponible, con los límites establecidos por su documentación.
Por ejemplo, si el servidor dispone de 8 GB de RAM podríamos establecer:
opensearch_heap = 4g
Esta opción puede no aparecer originalmente en datanode.conf, por lo que tendremos que añadirla manualmente.
En servidores donde Graylog, MongoDB y Data Node comparten máquina debemos tener cuidado de no asignar toda la memoria disponible únicamente a Data Node, ya que Graylog Server y el propio sistema operativo también necesitan RAM.
Iniciar Graylog Data Node
Activamos el servicio:
sudo systemctl daemon-reload
sudo systemctl enable graylog-datanode.service
sudo systemctl start graylog-datanode
Comprobamos:
sudo systemctl status graylog-datanode
También podemos consultar los últimos registros con:
sudo journalctl -u graylog-datanode -n 100 --no-pager
Instalar Graylog Server
Instalamos ahora el servidor principal:
sudo apt install -y graylog-server
El archivo principal de configuración de Graylog instalado mediante paquetes DEB se encuentra en:
/etc/graylog/server/server.conf
Mientras que los logs se almacenan en:
/var/log/graylog-server
y el journal de mensajes en:
/var/lib/graylog-server/journal
Estas son las ubicaciones predeterminadas documentadas para instalaciones DEB.
Crear la contraseña del administrador
Graylog no almacena directamente la contraseña del administrador en texto plano dentro de server.conf.
Primero elegimos una contraseña segura para la cuenta:
admin
Generamos su SHA-256 mediante:
echo -n "Enter Password: " && \
head -1 </dev/stdin | tr -d '\n' | \
sha256sum | cut -d" " -f1
El comando nos pedirá la contraseña.
Obtendremos una cadena hexadecimal que tendremos que copiar.
Esta cadena será el valor de:
root_password_sha2
Es importante distinguir entre ambas cosas:
Contraseña real:
MiContraseñaSegura
root_password_sha2:
HASH_SHA256_GENERADO
Para acceder posteriormente a Graylog utilizaremos la contraseña original, no el hash.
Configurar Graylog Server
Abrimos:
sudo nano /etc/graylog/server/server.conf
Localizamos:
password_secret =
Introducimos exactamente el mismo password_secret utilizado en Data Node:
password_secret = NUESTRO_PASSWORD_SECRET
Buscamos:
root_password_sha2 =
Y añadimos el hash obtenido anteriormente:
root_password_sha2 = NUESTRO_HASH_SHA256
Configurar la conexión con MongoDB
Dentro del mismo archivo comprobamos:
mongodb_uri = mongodb://localhost/graylog
Si MongoDB se encuentra en el mismo servidor, esta configuración es adecuada.
Configurar la interfaz web de Graylog
Buscamos la opción:
http_bind_address
Y configuramos:
http_bind_address = 0.0.0.0:9000
De esta forma Graylog escuchará en el puerto TCP 9000 utilizando las interfaces disponibles. Esta es también la configuración mostrada en la guía oficial.
En un entorno de producción debemos restringir el acceso mediante firewall y evitar exponer directamente servicios internos de Graylog a Internet. La propia documentación advierte de que una instalación inicial no queda automáticamente protegida para exposición pública.
Configurar la memoria de Graylog Server
El archivo donde podemos modificar las opciones de Java es:
sudo nano /etc/default/graylog-server
Graylog recomienda utilizar aproximadamente la mitad de la RAM disponible para el heap de Graylog Server, hasta los límites recomendados por el producto, manteniendo normalmente iguales los valores mínimo y máximo.
Por ejemplo:
GRAYLOG_SERVER_JAVA_OPTS="-Xms2g -Xmx2g -server -XX:+UseG1GC -XX:-OmitStackTraceInFastThrow"
No debemos copiar automáticamente este valor sin tener en cuenta la memoria disponible.
Si Graylog, MongoDB y Data Node comparten servidor, debemos repartir la RAM entre los diferentes servicios y dejar memoria suficiente para Debian.
Iniciar Graylog Server
Aplicamos la configuración y activamos Graylog:
sudo systemctl daemon-reload
sudo systemctl enable graylog-server.service
sudo systemctl start graylog-server.service
Comprobamos:
sudo systemctl status graylog-server
Deberíamos encontrar:
Active: active (running)
Si Graylog no inicia correctamente podemos revisar:
sudo journalctl -u graylog-server -n 100 --no-pager
También podemos observar directamente el fichero de log:
sudo tail -f /var/log/graylog-server/server.log
Primer acceso y Preflight
En Graylog 7 debemos tener en cuenta un detalle importante: el primer acceso utiliza el proceso de Preflight.
La documentación de Graylog indica expresamente que durante este primer proceso no debemos intentar utilizar todavía la contraseña de administrador que configuramos mediante root_password_sha2. Las credenciales iniciales de Preflight aparecen en los logs después de arrancar Graylog por primera vez.
Podemos buscarlas con:
sudo journalctl -u graylog-server -n 200 --no-pager
También podemos utilizar:
sudo grep -i -E "preflight|password|username" \
/var/log/graylog-server/server.log
Una vez obtenido el usuario y contraseña temporal indicados por Graylog, abrimos:
http://IP_DEL_SERVIDOR:9000
Por ejemplo:
http://192.168.10.50:9000
Completamos desde la interfaz web el proceso de configuración inicial y asociación de Data Node.


Una vez terminado el Preflight podremos iniciar sesión normalmente utilizando:
Usuario: admin
Contraseña: LA_CONTRASEÑA_QUE_ELEGIMOS


Comprobar que Graylog funciona
Podemos comprobar los tres servicios principales.
MongoDB:
systemctl is-active mongod
Data Node:
systemctl is-active graylog-datanode
Graylog:
systemctl is-active graylog-server
En los tres casos deberíamos obtener:
active
También podemos ejecutar:
sudo systemctl --no-pager --full status \
mongod graylog-datanode graylog-server
Comprobar que Graylog escucha en el puerto 9000
Ejecutamos:
sudo ss -lntp | grep :9000
Deberíamos encontrar una línea indicando que Java/Graylog está escuchando en:
0.0.0.0:9000
Desde otro equipo de nuestra red podemos comprobarlo accediendo mediante:
http://IP_DEL_SERVIDOR:9000
Comprobar las versiones instaladas
Para consultar la versión exacta de Graylog:
dpkg-query -W -f='${Version}\n' graylog-server
Para comprobar todos los paquetes relacionados:
dpkg -l | grep graylog
Podremos encontrar paquetes similares a:
graylog-server
graylog-datanode
Para MongoDB:
mongod --version
Y para Debian:
cat /etc/debian_version
Esto resulta especialmente útil para documentar el servidor antes de realizar futuras actualizaciones.
Archivos importantes de Graylog
En una instalación mediante paquetes DEB conviene conocer las principales rutas.
Configuración de Graylog Server:
/etc/graylog/server/server.conf
Configuración de Data Node:
/etc/graylog/datanode/datanode.conf
Configuración de MongoDB:
/etc/mongod.conf
Configuración JVM de Graylog:
/etc/default/graylog-server
Logs de Graylog:
/var/log/graylog-server/
Logs de Data Node:
/var/log/datanode/
Journal de mensajes de Graylog:
/var/lib/graylog-server/journal/
Datos de Data Node:
/var/lib/datanode/data/
Son las ubicaciones predeterminadas para los paquetes DEB indicadas en la documentación oficial de Graylog.
Comprobar los recursos del servidor
Antes de comenzar a recibir grandes cantidades de logs conviene comprobar CPU, RAM y almacenamiento.
Memoria:
free -h
Procesadores:
nproc
Espacio disponible:
df -h
Discos:
lsblk
Para una plataforma de logs, el almacenamiento es especialmente importante porque su consumo crecerá directamente en función de la cantidad de eventos recibidos, la retención configurada y los índices mantenidos.
No abrir todavía los Inputs
Después de terminar la instalación veremos en Graylog el apartado:
System
→ Inputs
Los Inputs son los puntos de entrada por los que Graylog recibe los mensajes.
Dependiendo del dispositivo o aplicación podremos utilizar protocolos como Syslog, GELF u otros tipos de entrada.
En este punto no necesitamos crearlos todavía.
Nuestro objetivo en este artículo es dejar Graylog instalado, funcionando y accesible, mientras que la configuración para recibir información de los clientes PPPoE se realizará en un artículo independiente.
Preparación para registrar conexiones PPPoE
La instalación realizada servirá como base para un sistema de monitorización donde posteriormente podremos correlacionar información procedente de diferentes componentes de la red.
El siguiente paso será estudiar qué información debemos enviar hacia Graylog desde la infraestructura PPPoE y cómo relacionarla con datos como:
Usuario PPPoE
Dirección IP asignada al cliente
Inicio de sesión
Fin de sesión
Router o NAS que autentica al cliente
Dirección IP de destino
Puerto de origen
Puerto de destino
Protocolo
Fecha y hora
Parte de esa información procederá del sistema de autenticación y accounting, mientras que otra información relacionada con conexiones y traducciones NAT deberá recopilarse desde los equipos de red apropiados.
La configuración de FreeRADIUS, MariaDB, MikroTik RouterOS e IPFIX/Syslog con Graylog se tratará de forma independiente, ya que requiere diseñar correctamente qué información se almacena y durante cuánto tiempo.
Recomendaciones de seguridad antes de utilizar Graylog en producción
No debemos publicar directamente el puerto 9000 hacia Internet.
El acceso administrativo debería limitarse a redes de gestión, VPN o direcciones explícitamente autorizadas.
También conviene realizar copias de seguridad periódicas, controlar el crecimiento de los índices y establecer una política de retención adecuada.
En una instalación destinada a almacenar registros relacionados con abonados o conexiones de clientes también tendremos que analizar las obligaciones legales, los periodos de conservación aplicables y las medidas de seguridad necesarias antes de comenzar a almacenar información de producción.
Solución tamaño java
Ese aviso no es un error grave; Graylog te está indicando que el Data Node/OpenSearch está usando solo 1 GB de heap Java, aunque el servidor dispone de 8 GB de RAM. Para un servidor dedicado, Graylog recomienda aproximadamente el 50 % de la RAM para OpenSearch, por lo que en tu caso propone 4 GB.

Para realizar el cambio editaremos el siguiente archivo.
sudo nano /etc/graylog/datanode/datanode.conf
Modificaremos la siguiente línea, si no esta podemos crearla
opensearch_heap = 4g
Deberemos reiniciar el equipo después de aplicar los cambios.
Actualización de Graylog
Otro aviso común de Graylog es que necesitamos actualizar el sistema.

Antes de actualizar deberemos de verificar la versión que tenemos.

Como vemos tenemos la versión 7.0.12.1 y la nueva es 7.1.7.
Como estamos utilizando Graylog Data Node, hay que actualizar tanto graylog-server como graylog-datanode, y ambos deben terminar en la misma versión. Graylog indica además que debe actualizarse primero Graylog Server y después Data Node.
Para una maquina que este en produccin y funcionando, tenemos que hacer copias de seguridad de todo antes de cambiar los repositorios y pasar los servicios.
Haz la copia de MongoDB:
mkdir -p /root/backup-graylog
mongodump --out /root/backup-graylog/mongodb-$(date +%F)
Cuando termine, comprueba:
du -sh /root/backup-graylog/mongodb-$(date +%F)
Y guarda la configuración completa de Graylog:
cp -a /etc/graylog /root/backup-graylog/graylog-config-$(date +%F)
Comprueba:
ls -lah /root/backup-graylog/
Graylog recomienda explícitamente realizar copias de los datos de todos los servicios antes de una actualización para disponer de una vía de rollback.
Importante: mongodump no contiene tus logs almacenados en OpenSearch/Data Node; guarda principalmente los datos que Graylog mantiene en MongoDB.
Si este Graylog está en una VM o LXC de Proxmox, también es un buen momento para hacer un backup completo desde Proxmox antes de continuar.
No pares todavía Graylog ni Data Node y no cambies aún el repositorio.
Cambiar el repositorio de Graylog 7.0 a 7.1
Primero descarga el paquete oficial del repositorio 7.1:
wget https://packages.graylog2.org/repo/packages/graylog-7.1-repository_latest.deb
Instálalo:
sudo dpkg -i graylog-7.1-repository_latest.deb
Después actualiza el índice de paquetes:
sudo apt update
Todavía no ejecutes apt upgrade.
Ahora comprueba qué versiones ofrece APT:
apt-cache policy graylog-server graylog-datanode
Lo que buscamos es algo parecido a:
graylog-server:
Installed: 7.0.12-1
Candidate: 7.1.7-1
graylog-datanode:
Installed: 7.0.12-1
Candidate: 7.1.7-1
También comprueba que el nuevo repositorio está instalado:
dpkg -l | grep graylog
Debe aparecernos algo asi:
dpkg -l | grep graylog
ic graylog-7.0-repository 1-1 all Package to install Graylog 7.0 GPG key and repository
ii graylog-7.1-repository 1-1 all Package to install Graylog 7.1 GPG key and repository
ii graylog-datanode 7.0.12-1 amd64 Graylog data node
ii graylog-server 7.0.12-1 amd64 Graylog server
ic graylog-7.0-repository
ii graylog-7.1-repository
ic significa que el paquete del repositorio 7.0 ya no está instalado, aunque quedan archivos de configuración registrados por dpkg. No es un problema.
Actualizar Graylog
Ahora sí vamos a realizar la actualización. Primero detén Graylog Server:
sudo systemctl stop graylog-server
Comprueba:
systemctl is-active graylog-server
Debe responder:
inactive
Después instala explícitamente las versiones 7.1.8 de ambos paquetes:
sudo apt install graylog-server=7.1.8-1 graylog-datanode=7.1.8-1
Es preferible esto a hacer un apt upgrade general porque así solo estamos actualizando Graylog Server y Data Node, sin meter una actualización general de Debian o MongoDB en medio del proceso.
Durante la instalación, presta atención si dpkg muestra alguna pregunta del estilo:
Configuration file '/etc/graylog/server/server.conf'
o:
Configuration file '/etc/graylog/datanode/datanode.conf'
Si te pregunta qué hacer porque el fichero local ha sido modificado, no sustituyas automáticamente tu configuración por la del mantenedor. Queremos conservar tus configuraciones actuales, especialmente:
opensearch_heap = 4g
y toda la configuración de server.conf.
Cuando termine no hagas más cambios todavía. Ejecuta:
dpkg -l | grep -E 'graylog-server|graylog-datanode'
Deberíamos obtener:

Y comprueba que nuestro ajuste de OpenSearch continúa presente:
grep -E '^[[:space:]]*opensearch_heap' /etc/graylog/datanode/datanode.conf
Debe seguir apareciendo:
opensearch_heap = 4g
No te preocupes si la interfaz de Graylog deja de estar disponible durante este proceso. Hemos parado graylog-server expresamente.
Arrancamos Graylog:
sudo systemctl restart graylog-datanode
Espera unos 30-60 segundos y comprueba:
sudo systemctl status graylog-datanode --no-pager
Debe aparecer:
Active: active (running)
Después comprueba que OpenSearch sigue recibiendo los 4 GB:
ps -ef | grep 'org.opensearch.bootstrap.OpenSearch' | grep -oE -- '-Xm[sx][^ ]+'
Es posible que veas:
-Xms1g
-Xmx1g
-Xms4g
-Xmx4g
Eso ya vimos que es correcto: los últimos parámetros prevalecen y OpenSearch queda con 4 GB.
Si el Data Node está funcionando, arranca Graylog Server:
sudo systemctl start graylog-server
Espera aproximadamente un minuto y ejecuta:
sudo systemctl status graylog-server --no-pager
Después comprueba los últimos mensajes del arranque:
sudo journalctl -u graylog-server -n 80 --no-pager
No te preocupes si durante el primer arranque de 7.1.8 tarda algo más de lo habitual; puede realizar migraciones internas.
Si nos aparece la siguiente ventana:

Tenemos que recargar la web sin la cache:
Ctrl + Shift + R
Conclusión
Instalar Graylog 7 en Debian 12 nos proporciona una plataforma centralizada desde la que podemos recibir, almacenar, buscar y analizar información procedente de múltiples elementos de nuestra infraestructura.
La arquitectura actual utiliza MongoDB, Graylog Server y Graylog Data Node, siendo Data Node el mecanismo recomendado para administrar el backend de búsqueda en una instalación nueva. Debian 12 se encuentra además entre las distribuciones oficialmente soportadas por Graylog 7.
Una vez terminada esta configuración deberíamos disponer de Graylog accesible mediante:
http://IP_DEL_SERVIDOR:9000
y tener activos:
MongoDB
Graylog Data Node
Graylog Server
A partir de aquí podremos comenzar a crear Inputs, Streams, Pipelines, índices, reglas de procesamiento y cuadros de mando.
En nuestro caso, el siguiente artículo abordará específicamente la conexión de Graylog con FreeRADIUS, MariaDB y MikroTik RouterOS v7, con el objetivo de centralizar y consultar la información generada por los clientes PPPoE.