graylog-logo

Graylog V2: Colector de logs

Graylog al igual que ELK o splunk es un colector de logs es decir, indicas a varios host que manden sus logs a esta máquina para luego poder gestionarlos (filtrarlos, indexarlos, monitorizarlos…). Se pueden crear alertas, streams, dashboards personalizados, conectarse con LDAP… También hay plugins en el market para poder añadir nuevas funcionalidades.

Instalación

Para la instalación se van a usar los siguientes paquetes sobre un Debian Stretch

Elasticsearch (5.6.3)
Mongodb (3.2.11)
OpenJDK (8)
Graylog-server (2.3.1)

Server

Prerequisitos

Instalar todos los paquetes necesarios

apt -y install apt-transport-https uuid-runtime pwgen curl libdigest-sha-perl

OpenJDK

Instalar la versión 8 de OpenJDK

apt -y install openjdk-8-jdk-headless

Memoria core

Subir la memoria del core para evitar problemas de buffer

vim /etc/sysctl.conf

Añadir:

net.core.rmem_max=1048576

NTP

apt -y install ntp

Elasticsearch

Para empezar, hay que instalar elasticsearch. Se puede instalar tanto de repositorios, añadiéndolos previamente o descargando el .deb o .tar.gz desde su página web. Si se actualiza la versión cambiar el repositorio.

Añadir los repositorios

echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | tee -a /etc/apt/sources.list.d/elastic-5.x.list

Añadir la clave pública

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | apt-key add -

Actualizar repositorios

apt update

Instalar elasticsearch

apt -y install elasticsearch

Una vez instalado hay que configurarlo

vim /etc/elasticsearch/elasticsearch.yml

Descomentar modificar

 cluster.name: graylog

Si se quiere cambiar el máximo de memoria de Java de elasticsearch, hay que editar el siguiente fichero:

vim /etc/elasticsearch/jvm.options
-Xms2g
-Xmx2g

Agregar elasticsearch a init.d

systemctl daemon-reload
systemctl enable elasticsearch.service
systemctl start elasticsearch.service

Comprobar que todo está correcto. El status tiene que estar en green, sino es que algo falla (puede tardar un poco en inciciar elasticsearch)

curl -XGET 'http://127.0.0.1:9200/_cluster/health?pretty=true'
{
  "cluster_name" : "graylog",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 1,
  "number_of_data_nodes" : 1,
  "active_primary_shards" : 0,
  "active_shards" : 0,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 100.0
}

MongoDB

Instalar MongoDB

apt -y install mongodb-server

Cambiar los ulimit

vim /etc/security/limits.d/90-nproc.conf
mongod     soft     nproc     524288

Reiniciar

reboot

Graylog

Descargar el instalador de repositorios

cd /tmp && wget https://packages.graylog2.org/repo/packages/graylog-2.3-repository_latest.deb

Ejecutar el instalado

dpkg -i graylog-2.3-repository_latest.deb

Actualizar los repositorios

apt update

Instalar graylog

apt -y install graylog-server

Editar el archivo de configuración

vim /etc/graylog/server/server.conf
password_secret =   <-- Instalar pwgen y crear la contraseña con el comando: pwgen -N 1 -s 96 y pegar el resultado seguido
root_password_sha2   <-- hacer: echo -n <contraseña> | shasum -a 256 y pegar el resultado seguido (sin el último guión)
rest_listen_uri = http://0.0.0.0:9000/api/
rest_transport_uri = http://<IP_del_host>:9000/api/ --> Ej: http://192.168.1.50:9000/api/
web_listen_uri = http://0.0.0.0:9000/
root_timezone = Europe/Madrid

Si se quiere cambiar el máximo de memoria de Java de graylog, hay que editar el siguiente fichero:

vim /etc/sysconfig/graylog-server
GRAYLOG_SERVER_JAVA_OPTS="-Xms1g -Xmx1g -XX:NewRatio=1 -server -XX:+ResizeTLAB -XX:+UseConcMarkSweepGC -XX:+CMSConcurrentMTEnabled -XX:+CMSClassUnloadingEnabled -XX:+UseParNewGC -XX:-OmitStackTraceInFastThrow"

Para que graylog se inicie automáticamente ejecutar los siguientes comandos:

systemctl daemon-reload
systemctl enable graylog-server.service  
systemctl start graylog-server.service

Server

Ir al navegador y escribir en la barra de direcciones

http://HOST_IP:9000
inicio
Usuario por defecto “admin” y la contraseña es la que se haya definido en el archivo de configuración de graylog-server campo “root_password_sha2

Host

Hay varias formas de mandar logs desde un host al server. La mas recomendable es con el agente, explicado aquí. La otra es con rsyslog que sería del siguiente modo:

En el host instalar rsyslog si no estuviera instalado

apt -y install rsyslog

Y editar el archivo

vim /etc/rsyslog.conf
  #Mandar logs por UDP
    $template GRAYLOGRFC5424,"<%pri%>%protocol-version% %timestamp:::date-rfc3339% %HOSTNAME% %app-name% %procid% %msg%n"
    *.* @Graylog-server_IP:puerto_definido;GRAYLOGRFC5424
  #Mandar logs por TCP
    $template GRAYLOGRFC5424,"<%pri%>%protocol-version% %timestamp:::date-rfc3339% %HOSTNAME% %app-name% %procid% %msg%n"
    *.* @@Graylog-server_IP:puerto_definido;GRAYLOGRFC5424

Por último, reiniciar el servicio

/etc/init.d/rsyslog restart

5 comments

Leave a Reply

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *