Instalación y configuración inicial de Graylog
Graylog es una solución de código abierto diseñada para centralizar, analizar y supervisar registros (logs) generados por servidores, aplicaciones y dispositivos de red. Este sistema permite a los equipos técnicos identificar problemas, auditar eventos de seguridad y monitorear el comportamiento del sistema en tiempo real.
Requisitos del entorno
Antes de instalar Graylog, asegúrese de tener instalados los siguientes componentes:
- Java 11 o superior (OpenJDK u Oracle JDK)
- MongoDB 4.0+
- Elasticsearch 7.10.x – 7.17.x (compatible con la versión actual de Graylog)
Despliegue desde código fuente
Clone el repositorio oficial del servidor Graylog utilizando Git:
git clone https://gitcode.com/gh_mirrors/gr/graylog2-server graylog-server
cd graylog-server
Construya el proyecto usando Maven:
./mvnw clean package -DskipTests
Este comando compila el binario sin ejecutar las pruebas unitarias, útil para despliegues rápidos.
Configuración básica
Ubique el archivo de configuración principal en data/config/graylog.conf. Edite los parámetros críticos como:
is_master = true
node_id_file = /data/config/node-id
root_username = admin
root_password_sha2 = 8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918 # 'admin'
web_listen_uri = http://0.0.0.0:9000/
rest_listen_uri = http://0.0.0.0:9000/api/
mongodb_uri = mongodb://127.0.0.1:27017/graylog
elasticsearch_hosts = http://127.0.0.1:9200
Asegúrese de que MongoDB y Elasticsearch estén en ejecución antes de iniciar Graylog.
Iniciar el servicio
Ejecute el controlador integrado:
bin/graylogctl --configfile=data/config/graylog.conf --startupflagfile=data/config/startup-success flag run
Acceda a la interfaz web mediante http://<IP-del-servidor>:9000. Inicie sesión con el usuario admin y la contraseña definida.
Funcionalidades clave y su implementación
Ingesta de registros mediante entradas personalizadas
Graylog soporta múltiples protocolos para recibir datos. Entre los más utilizados se encuentran:
- Syslog TCP/UDP: Ideal para dispositivos de red como firewalls y routers.
- GELF (Graylog Extended Log Format): Eficiente para aplicaciones modernas que envía logs vía HTTP, UDP o AMQP.
- Beats: Integración directa con Filebeat para recolección ligera de archivos de log.
Búsqueda y análisis en tiempo real
La interfaz de búsqueda utiliza sintaxis basada en Lucene. Ejemplos útiles:
level:ERROR AND source:app-server-03
message:"Connection timeout"
timestamp:[NOW-1H TO NOW]
Además, puede crear visualizaciones interactivas mediante gráficos de barras, líneas o tablas dinámicas vinculadas a consultas específicas.
Alertas automatizadas
Defina reglas de disparo en base a condiciones como:
- Número de errores superiores a un umbral en un periodo dado.
- Detección de patrones sospechosos (por ejemplo, múltiples intentos fallidos de acceso).
Las notificaciones pueden enviarse por correo electrónico, Slack, Microsoft Teams o incluso mediante llamadas a webhooks personalizados.
Escenarios prácticos de uso
Monitoreo de tráfico con NetFlow/IPFIX
Habilite una entrada UDP en el puerto 2055 para recibir flujos de dispositivos compatibles. Luego, use extractores para procesar campos como IP origen, destino, puertos y bytes transferidos. Esto permite detectar picos anómalos o conexiones inusuales.
Integración con sistemas de seguridad mediante CEF
Configure una entrada CEF (Common Event Format) para recibir eventos estandarizados desde firewalls, IDS/IPS o plataformas SIEM externas. Los mensajes se parsean automáticamente, facilitando correlaciones entre incidentes.
Pipelines para transformación de datos
Utilice el motor de pipelines para manipular registros en tiempo real. Por ejemplo, un pipeline que etiqueta automáticamente los logs según su criticidad:
rule "Clasificar por nivel"
when
has_field("level") && to_string($message.level) == "ERR"
then
set_field("severity_label", "Alto");
add_tag("critical");
end
Estos campos mejoran la calidad del análisis posterior y permiten filtros más eficientes.
Optimización y escalabilidad
Administración del ciclo de vida de índices
Para evitar el agotamiento del almacenamiento, defina políticas de retención. Por ejemplo, mantener solo los últimos 30 días de datos activos, archivando o eliminando los antiguos. Esta tarea se gestiona directamente desde la sección Indices en la UI.
Despliegue en clúster
En entornos productivos, distribuya las cargas entre múltiples nodos Graylog conectados al mismo backend de Elasticsearch y MongoDB. Asegure la sincronización del reloj del sistema con NTP y utilice un balanceador de carga para el acceso a la interfaz web.
Rendimiento del backend
Optimice Elasticsearch asignando recursos adecuados (heap size ~50% de RAM disponible), evitando sobrecargarlo con demasiados shards. En MongoDB, considere habilitar replicación para alta disponibilidad del estado del sistema.
Ecosistema de complementos
La funcionalidad de Graylog puede ampliarse mediante plugins oficiales y comunitarios, tales como:
- Plugin de salida a Kafka para integración con pipelines de análisis externos.
- Soporte para OpenTelemetry y métricas distribuidas.
- Conectores a servicios cloud como AWS CloudTrail o Azure Monitor.
Los plugins se instalan colocando sus JARs en el directorio plugin/ y reiniciando el servicio.