Cómo instalar y configurar Graylog en Ubuntu 16.04. 1era Parte.

Siempre en nuestra red tendremos servidores y servicios generando logs (eventos de sistema), los cuales nos informan de errores y estadísticas de los mismos. En los entornos corporativos actuales, la localización de un error obliga a abrir ficheros de logs de gran tamaño, dificultando su manejo. Para ello, se crean softwares para recolectar, filtrar, ordenar y explotar los eventos generados por tu infraestructura.

Hoy les mostraremos uno de ellos, Graylog (anteriormente conocido como Graylog2) es una plataforma de administración de syslog de código abierto que le ayuda a recopilar, indexar y analizar syslog en una ubicación centralizada. El mismo proporciona un sistema unificado y centralizado de mensajes procedentes de diferentes fuentes: sistema operativo, servidores de aplicación, sistemas de información, etc. Dispone de un sistema de alertas y de búsqueda de histórico de logs usando ElasticSearch como base de datos de índices. Veamos cómo funciona:

En este tutorial no solo les mostrare como instalar un server Graylog sino que además como extra les mostrare como graficar sus resultados. Usaremos para ello a Grafana. Un software para visualización de datos y monitoreo con soporte para Graphite, InfluxDB, Prometheus, Elasticsearch y muchas más bases de datos. Debido al alto consumo de recursos de java para su uso con elasctic, decidí entonces separar los servicios con los que el Graylog funciona. Logrando así balancear la carga de nuestros proxmox.  Quedando una estructura como esta:

Como se observa en la figura, creare 3 contenedores:

  • Graylog
  • ElasticSearch
  • Grafana

De ser posible, ubicar el contenedor de elasticsearch en un proxmox diferente al del GrayLog y Grafana. Como consejo para no afectar el rendimiento y la carga, de las demás máquinas virtuales que están corriendo en el proxmox donde se encuentra el contenedor de elasticsearch. Recomiendo la inserción de un disco duro aparte en su proxmox que contendría al elasticsearch. Ahora que nos queda claro la estructura que usaremos procedemos a crearlas. Usare como plataforma de virtualización Proxmox por su fácil manejo y efectividad.

GRAFANA.

Creamos un contenedor (CT) en nuestro Proxmox con Ubuntu 16.04 como OS.

CPU: 2 Cores

RAM: 1 GB

SWAP: 2 GB

HDD: 8 GB

Seguido lo actualizaremos.

Ahora instalaremos herramientas necesarias


Este proceso será el mismo para los 3 contenedores por lo tanto solo lo mostrare una sola vez. Configuramos nuestro CT para poder acceder por SSH. Editamos el file sshd_config:

Comentamos y agregamos:

Reiniciamos el CT y ya tendremos acceso por SSH .


Ahora les mostrare 2 métodos de instalar grafana:

a) Este método funciona en cuba que tenemos bloqueo de muchos sitios de internet. Nos bajamos de su sitio la última versión para Debian/Ubuntu (en la fecha de confección del tutorial era la versión 5.0.1)

Instalamos dependencias:

Puede que nos diga que ya las teníamos y que están actualizadas, pero son obligatorio tenerlas así que no está demás comprobar. Y ahora por ultimo instalamos grafana:

b) Este método no funciona en cuba. Se basa en agregar el repositorio oficial de grafana.

Agregamos la siguiente línea al fichero /etc/apt/sources.list .

Ahora agregamos la llave del sitio Package Cloud . Que nos permitirá instalar paquetes firmados.

Actualizamos los repositorios con el source de grafana agregado y seguido instalamos.

Ya tenemos nuestro grafana instalado ahora procedemos a ejecutarlo

a)Iniciar el servidor usando (init.d)

Configuramos el grafana para inciar en el arranque del CT

b)Inciar el servidor usando (systemd)

Configuramos el grafana para inciar en el arranque del CT

Una vez iniciado el server podremos acceder mediante el siguiente link

http://ip_del _server_Grafana:3000

Como credenciales usaremos admin tanto para el usuario como para su clave. En este punto salvaremos nuestro CT.

ELASTICSEARCH.

Creamos un contenedor (CT) en nuestro Proxmox con Ubuntu 16.04 como OS.

CPU: 2 Cores

RAM: 4 GB

SWAP: 8 GB (Si el tamaño de la swap no es suficiente se deberá modificar)

HDD: 40 GB (Se almacenarán sus índices aquí por lo que su tamaño deberá ser grande y a gusto del usuario)

Seguido lo actualizaremos.

Ahora instalaremos herramientas necesarias

ElasticSearch usa java para su correcto funcionamiento, lo mismo podemos usar OpenJDK que Oracle Java. Les mostrare como instalar ambos y ustedes decidirán cual usar.

a)Version OpenJDK

Simple y sencillo ya que es la versión libre de Linux de java.

b) Versión Oracle java

Nos bajamos el JRE 8 de ORACLE de cualquier otro sitio al que si le podamos llegar. Como, por ejemplo:

http://ftp.osuosl.org/pub/funtoo/distfiles/oracle-java/

Hasta la fecha de creación de este tutorial la versión mas actual es jre-8u162-linux-x64.tar.gz

Debido a que hay muchas versiones del jre 8 y puede que ustedes consigan otra diferente a la que use, para hacer este tutorial más universal entonces renombraremos la carpeta creada.

De /opt/jre1.8.0_u162 a /opt/jre1.8.0

Procederemos ahora a instalar nuestro java:

Aquí vemos como quedarían estos comandos

Debido a que graylog 2.4.x no trabaja aun con la versión Elasticsearch 6.x. nos descargamos la última versión Elasticsearch 5.x que encontremos en su sitio. Por lo tanto, nos descargamos la versión Elasticsearch 5.6.8 de aquí. Una vez descargado (para cuba necesitaremos de un tor o tunnel) lo instalamos.

Nuestro ElasticSearch se instalara en /usr/share/elasticsearch/ su configuración estará en /etc/elasticsearch y su script de inicio en /etc/init.d/elasticsearch. Ahora nos aseguramos que elasticsearch inicie junto con nuestro ct.

Inciamos el servcio y comprobamos si esta corriendo

Para comprobar que todo este bien corremos esto:

Podemos ver el estado del nodo:

Ahora configuraremos el elasticsearch . Primero optimizaremos el uso de la RAM del servicio elasticsearch.

Abrimos el fichero de configuracion de elasticsearch

Como estamos usando distros de Linux modernas (Ubuntu 16 o Debian 9) las mismas usan systemd, por lo que las limitaciones del sistema deben ser especificadas vía systemd.

El fichero (/usr/lib/systemd/system/elasticsearch.service) contiene el limite que se aplica por defecto. Algunos lo editan agregandole esta linea

LimitMEMLOCK=infinity

En lo personal, no me gusto usar esa vía porque no me fue muy efectiva, ustedes pueden probarla si desean y ver si les da el resultado deseado. Yo prefiero anular el límite de memoria, creando un fichero llamado /etc/systemd/system/elasticsearch.service.d/override.conf para ello usaremos este comando que nos creara automáticamente el override.conf.

 sudo systemctl edit elasticsearch

Nos abrira automáticamente el editor y dentro agregamos esto:

Una vez terminado, recargamos el demonio:

Comprobamos otra vez el nodo.

Se aprecia ahora el cambio de la variable mlockall que ahora paso su estado a TRUE esto implica un menor consumo por parte del JVM en RAM. Volvemos a editar el fichero de configuración de elasticsearch para dejarlo listo y pueda recibir información del Graylog.

Reinciamos el servicio.

Ahora vamos a hacer amigable nuestra interacción con elasticsearch a través de Cerebro. Cerebro es una herramienta web de administración para elasticsearch usando Scala, Play Framework, AngularJS y Bootstrap. Vamos a su web nos fijamos en la última versión y la descargamos.

wget -t0 -c https://github.com/lmenezes/cerebro/releases/download/v0.7.2/cerebro-0.7.2.tgz

y extraemos el archivo descargado en /opt

#tar -zxf cerebro-0.7.2.tgz -C /opt

Si queremos ejecutarlo vamos directamente a la carpeta bin

#cd /opt/cerebro-0.7.2/bin
#./cerebro

Para acceder a cerebro solo debemos ingresar en nuestro navegador el siguiente link http://ip_del_elastic:9000

Donde dice Node Address poner nuestro elastic http://localhost:9200

Hagamos ahora que cerebro inicie al principio. Crearemos un servicio.

Si tienen otro camino o version de cerebro cambiarlo. Entonces reiniciaremos el demonio y activamos el servicio.

En este punto salvaremos nuestro CT.

GRAYLOG.

Creamos un contenedor (CT) en nuestro Proxmox con Ubuntu 16.04 como OS.

CPU: 2 Cores

RAM: 2 GB

SWAP: 4 GB

HDD: 8 GB

Seguido lo actualizaremos.

Ahora instalaremos herramientas y dependencias necesarias

Como Graylog usa MongoDB como base de datos, procedemos a instalarlo de primero. Agregaremos la llave publica de su repositorio para instalar paquetes firmados.

Agregamos el repositorio de MongoDB a los nuestros

Actualizamos:

Y procedemos a instalar MongoDB

Iniciamos nuestro servicio:

Hacemos autoarrancable el servicio

Continuamos con la instalacion de GrayLog y lo hacemos agregando su repositorio a nuesto listado de fuentes.

Instalamos:

Actualizamos e instalamos finalmente Graylog:

Haremos una salva en este punto de nuestro contenedor.

Ahora configuraremos la clave de admin(root) y la clave secreta, ambas seran usadas para levantar nuestro servidor GrayLog.

Nuestra llave secreta quedara directamente registrada en la configuracion del servidor de GrayLog. Ahora le pasaremos la clave de admin.

Donde password es la clave que le asignaremos al usuario admin del Graylog, y quedara directamente reflejado en su configuración.

Editamos la configuración del servidor y nos aseguramos de ver si ambas claves se insertaron bien

Como se aprecia en la figura ambas claves estan bien establecidas.

Configuramos otros aspectos de interes:

Hacemos autoarrancable nuestro servicio:

Inciamos el servicio:

Ya podemos acceder a nuestra web http://ip_graylog:9000 y usaremos de credenciales admin y la password que definimos anteriormente.

 De forma predeterminada, la interfaz web de Graylog escucha a localhost por el puerto 9000 y la API escucha por el puerto 9000 con URL / api. Como un extra, les mostrare como configurar Nginx como proxy inverso para que la aplicación pueda tener acceso a través del puerto HTTP estándar y agregarle seguridad con certificados. Comenzamos instalando Nginx:

Crearemos una carpeta en /etc/ssl/ llamada gray donde alojaremos nuestros certificados. Luego editamos nuestra configuracion de Nginx.

Borraremos su contenido y pegamos este:

Reinciamos el servicio de Nginx y lo hacemos autoarrancable al inicio:

Ahora podemos acceder a la web de una forma mas sencilla y segura.

En este punto salvaremos nuestro CT.

Bueno como podemos ver en esta 1era parte armamos nuestro servidor Graylog y lo dejamos listo para empezar a configurarlo. En los siguientes tutoriales les mostrare como recolectar los logs más importantes de nuestra red para su análisis y su grafiado, para un mejor entendimiento de nuestra infraestructura.

alex out

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuar!

Promedio de puntuación 4.2 / 5. Recuento de votos: 5

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

Sobre Alexander Rivas Alpizar 61 artículos
Administrador de Redes EMPRESTUR Cienfuegos

9 comentarios

  1. Google Chrome 87.0.4280.66 Google Chrome 87.0.4280.66 Windows 10 x64 Edition Windows 10 x64 Edition
    Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36

    Me pregunto si existe alguna forma de aumentar el Límite de tráfico diario de los 5 con que viene limitado?

  2. Firefox 60.0 Firefox 60.0 Windows 8.1 Windows 8.1
    Mozilla/5.0 (Windows NT 6.3; rv:60.0) Gecko/20100101 Firefox/60.0

    Excelente tutorial que funciono a las mil maravillas, ahora yo hice un upgrade de estos contenedores de Debian 10 y repase las configuraciones y comandos y me fijo que con el comando curl http://localhost:9200/_nodes/process?pretty me devuelve el «mlockall» : false

    Esta respuesta es a pesar de tener identicamente los ficheros nano /etc/default/elasticsearch con MAX_LOCKED_MEMORY=unlimited , nano /etc/elasticsearch/elasticsearch.yml con bootstrap.memory_lock: true y /etc/systemd/system/elasticsearch.service.d/override.conf con LimitMEMLOCK=infinity

    Queria saber si hay alguna solucion para que me salga «mlockall» : true como estaba antes?

  3. Google Chrome 71.0.3578.98 Google Chrome 71.0.3578.98 Windows 10 x64 Edition Windows 10 x64 Edition
    Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/71.0.3578.98 Safari/537.36

    Hi,

    I was just dropping in a quick line to know, if I could send some great article ideas your way for a guest post at your website ?

    If you like my suggested ideas, I can then provide you high-quality FREE CONTENT/ARTICLE. In return, I would expect just a favor of a backlink from within the main body of the article.

    Do let me know if I can interest you with some great topic ideas?

    Best Regards,

    Junaid Ali Qureshi

  4. Google Chrome 71.0.3578.98 Google Chrome 71.0.3578.98 Windows 10 x64 Edition Windows 10 x64 Edition
    Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36

    Alexander Rivas, can you please share your email address. I am desperately trying to reach you.

    • Firefox 64.0 Firefox 64.0 Windows 10 x64 Edition Windows 10 x64 Edition
      Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:64.0) Gecko/20100101 Firefox/64.0

      Hi john, give me ur email n ill contact with u. Thanx 4 reading my tutorial.

  5. Firefox 61.0 Firefox 61.0 Windows 10 x64 Edition Windows 10 x64 Edition
    Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:61.0) Gecko/20100101 Firefox/61.0

    Hola,
    Tengo una duda sobre como cambiar el directorio donde se almacenan los logs. Resulta que yo tengo un VM con Centos donde está funcionando tanto Graylog como Elasticsearch y me estoy quedando sin espacio. Me gustaría cambiar el emplazamiento de los logs por los de una carpeta compartida de la máquina.
    ¿Esto es posible?
    Gracias y buen trabajo.
    I


  6. Warning: Undefined array key 1 in /var/www/html/sysadminsdecuba/wp-content/plugins/wp-useragent/wp-useragent-detect-os.php on line 668
    Firefox 59.0 Firefox 59.0 Ubuntu x64 Ubuntu x64
    Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0

    Muy bueno, pero aclarame los pros y contras de este párrafo:

    «De ser posible, ubicar el contenedor de elasticsearch en un proxmox diferente al del GrayLog y Grafana. Como consejo para no afectar el rendimiento y la carga, de las demás máquinas virtuales que están corriendo en el proxmox donde se encuentra el contenedor de elasticsearch. Recomiendo la inserción de un disco duro aparte en su proxmox que contendría al elasticsearch. »

    Saludos…

    • Firefox 60.0 Firefox 60.0 Windows 10 x64 Edition Windows 10 x64 Edition
      Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0

      Es muy sencillo, elasticsearch y graylog ambos requieren de java, entonces el consumo seria muy elevado eso sin contar de que el IO delay del HDD seria elevado, ya que estaria recopilando sin parar y parseando logs. Ya hemos comprobado que al separarlos y sobretodo aislar el elastic a un HDD distinto cae drasticamente l acarga en el proxmox, si quieres compruebalo tu mismo en un lab o en tus server veras el cambio
      alex out

  7. Firefox 59.0 Firefox 59.0 Windows 8.1 x64 Edition Windows 8.1 x64 Edition
    Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0

    Saludos.

    Hasta que por fin los publicaste. Muy buenos, felicidades, hermano.

    Un detalle: En el caso del inciso b del epígrafe dedicado a la instalación de Grafana, se puede lograr si, y sólo si, tienes una réplica local del repositorio de Grafana en tu red, que es mi caso. 🙂

    No obstante, muchísimas gracias, Chamaco.

1 Trackback / Pingback

  1. Nextcloud sobre nginx y postgreSQL + fulltextsearch + paquetes ofimáticos collabora o onlyoffice-ds sobre docker – Blackhold

Responder a Gerardo Cancelar la respuesta

Tu dirección de correo electrónico no será publicada.


*