GNU/Linux >> Tutoriales Linux >  >> Panels >> Docker

Cómo centralizar la gestión de registros con Graylog mediante Docker

¿Está buscando un sistema que pueda interpretar sus archivos de registro, almacenarlos en un entorno seguro y recopilar datos bien organizados para su análisis? Bueno, centralizar la administración de registros con Graylog usando Docker podría ser lo que está buscando.

En este tutorial, aprenderá a usar Graylog y Docker para construir un sistema de registro centralizado para recopilar datos Syslog de su máquina Ubuntu.

¡Siga leyendo y empiece a centralizar la gestión de registros!

Requisitos

Esta publicación será un tutorial paso a paso. Para seguir, asegúrese de tener lo siguiente:

  • Dos máquinas Ubuntu (un host y un cliente):este tutorial usa Ubuntu 20.04, pero otras distribuciones de Linux funcionarán.
  • Rsyslog en la máquina cliente.
  • Docker instalado en la máquina host. La versión de Docker utilizada para este tutorial es 20.10.7
  • Docker-compose instalado en la máquina host.
  • La utilidad Pwgen debe instalarse en la máquina host para generar una contraseña secreta aleatoria.

Implementación de Graylog mediante Docker Compose

¿Qué es Graylog de todos modos? Graylog es una plataforma de gestión de registros de código abierto. Graylog puede recopilar, indexar y analizar datos estructurados y no estructurados de fuentes. Una de estas fuentes son los sistemas operativos en tiempo real.

Antes de implementar Graylog, primero deberá instalar Graylog en su máquina host mediante Docker Compose.

Suponga que está usando una computadora Ubuntu 20.04 basada en la nube. En ese caso, deberá modificar su grupo de seguridad o las reglas del cortafuegos para permitir los siguientes puertos:1514 y 12201 para conexiones TCP y UDP y 9000 solo para conexiones TCP.

1. Abra su cliente SSH favorito y conéctese a su máquina.

2. A continuación, ejecute los siguientes comandos para crear un nuevo directorio en su directorio de inicio y cambie a ese directorio. Puede nombrar el directorio como prefiera. Pero para esta demostración, el directorio se llama ~/graylog.

mkdir graylog
cd graylog

3. Cree un archivo YAML llamado docker-compose.yml en tu ~/graylog directorio, luego complete el archivo con la configuración a continuación. Pero no guardes los cambios todavía. Para proteger el inicio de sesión de Graylog y restringir el acceso a sus datos, deberá generar una contraseña secreta.

En el archivo recién creado, encontrará la configuración para configurar los componentes Graylog, MongoDB y ElasticSearch. Graylog requiere que todos estos componentes se configuren y ejecuten simultáneamente para que Graylog funcione de manera efectiva.

version: '2'
services:
  # MongoDB: https://hub.docker.com/_/mongo/
  MongoDB: # Mongodb service
    image: mongo:4.2 # Version of Mongodb docker image 
    volumes:
      - mongo_data:/data/db # Persisted mongodb data
  # Elasticsearch: https://www.elastic.co/guide/en/elasticsearch/reference/7.10/docker.html
  elasticsearch: # ElasticSearch service
		
    image: docker.elastic.co/elasticsearch/elasticsearch-oss:7.10.2 # Version of elasticsearch image
    volumes:
      - es_data:/usr/share/elasticsearch/data # Persisted elasticsearch data 
    environment:
      - http.host=0.0.0.0
      - transport.host=localhost
      - network.host=0.0.0.0
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      # Unlimited amount of memory set for elasticsearch container
      memlock:
        soft: -1
        hard: -1
		# Resource limit for elasticsearch set to 1 gigabyte
    mem_limit: 1g
  # Graylog: https://hub.docker.com/r/graylog/graylog/
  graylog:
    image: graylog/graylog:4.2 # Version of Graylog docker image
    volumes:
      - graylog_data:/usr/share/graylog/data # Persisted Graylog data
    environment:
      # CHANGE ME (must be at least 16 characters)!
      - GRAYLOG_PASSWORD_SECRET=somepasswordpepper
      # Password: admin
      - GRAYLOG_ROOT_PASSWORD_SHA2=8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
      - GRAYLOG_HTTP_EXTERNAL_URI=http://127.0.0.1:9000/
      - GRAYLOG_WEB_ENDPOINT_URI=http://127.0.0.1:9000/api
		# Command to run as soon as components are started
    entrypoint: /usr/bin/tini -- wait-for-it elasticsearch:9200 --  /docker-entrypoint.sh
		# Containers that Graylog depends on 
    links:
      - mongodb:mongo
      - elasticsearch
    restart: always # Graylog container set to always restart when stopped
    depends_on:
      - mongodb
      - elasticsearch
    ports:
      # Graylog web interface and REST API
      - 9000:9000
      # Syslog TCP
      - 1514:1514
      # Syslog UDP
      - 1514:1514/udp
      # GELF TCP
      - 12201:12201
      # GELF UDP
      - 12201:12201/udp
# Volumes for persisting data, see https://docs.docker.com/engine/admin/volumes/volumes/
volumes:
  mongo_data:
    driver: local
  es_data:
    driver: local
  graylog_data:
    driver: local

4. Ahora, ejecuta pwgen comando a continuación para generar una única contraseña aleatoria (-N ) con 96 (-s 96 ) caracteres.

pwgen -N 1 -s 96

5. Su contraseña secreta generada será similar a la siguiente. Tenga en cuenta su contraseña secreta, ya que la establecerá en docker-compose.yml archivo (paso seis).

6. Vuelva a docker-compose.yml archivo y reemplace somepasswordpepper en GRAYLOG_PASSWORD_SECRET con su contraseña secreta recién generada (paso cinco). Utilizará esta contraseña para el cifrado y la salazón de contraseñas. Sin esta contraseña secreta, el contenedor Graylog no se iniciará.

7. Ejecute el siguiente comando para generar un hash SHA2 de una contraseña de su elección. Esta contraseña es necesaria para el inicio de sesión inicial en Graylog.

echo -n "Enter Password: " && head -1 </dev/stdin | tr -d '\n' | sha256sum | cut -d" " -f1

Ingrese una contraseña de administrador de su elección cuando se le solicite, como se muestra a continuación, y presione ENTER. Una vez que haya ingresado una contraseña, se genera su contraseña hash.

Tenga en cuenta su contraseña cifrada, ya que la configurará en docker-compose.yml archivo (paso ocho).

8. Reemplace el valor de GRAYLOG_ROOT_PASSWORD_SHA2 variable de entorno en docker-compose.yml archivo con la contraseña hash SHA2 que generó anteriormente (paso siete). Guarde los cambios en docker-compose.yml archivo y salga del editor.

9. Finalmente, ejecute docker-compose up Comando a continuación para implementar contenedores ElasticSearch, MongoDB y Graylog Docker en modo separado (-d ). Este comando los extrae del centro de Docker y los inicia como contenedores para que Graylog funcione correctamente.

# Starting up MongoDB, ElasticSearch, and Graylog containers in detached mode
sudo docker-compose up -d

La siguiente imagen muestra que las imágenes de Docker de MongoDB, ElasticSearch y Graylog se extrajeron del centro de Docker y se iniciaron como contenedores.

Cambio de valor de fragmentos de índice para ElasticSearch

Acaba de implementar Graylog y ese es un gran paso adelante en la centralización de la administración de registros. Pero ahora, es hora de configurar Graylog. Cambiará el valor de los fragmentos de ElasticSearch según la cantidad de nodos/contenedores de ElasticSearch que esté ejecutando.

Un fragmento es una unidad en la que Elasticsearch distribuye datos en varios nodos. El número óptimo de fragmentos por nodo es uno.

1. Abra su navegador web favorito y vaya a https://:9000 , donde HOST_IP es la dirección IP de su máquina host. Si todo va bien, accederá a la pantalla de inicio de sesión de Graylog que se muestra a continuación.

Introduzca administrador como nombre de usuario e ingrese la contraseña de administrador que creó en la sección "Implementación de Graylog mediante Docker Compose" (paso siete). Para este tutorial, la contraseña es adamtheautomator.

Después de iniciar sesión, verá la página de inicio de Graylog, como se muestra a continuación.

2. A continuación, haga clic en Sistema menú —> Índices , como se muestra a continuación, para acceder a los índices e índice página (paso tres), donde puede elegir editar el conjunto de índice predeterminado.

3. Haga clic en Editar para administrar el conjunto de índices predeterminado de Graylog y cambiar el valor del fragmento de ElasticSearch. El valor predeterminado para los fragmentos de ElasticSearch es cuatro, y deberá cambiarlo (paso cuatro).

4. Finalmente, cambie la cantidad de fragmentos de ElasticSearch a uno (1 ) ya que está ejecutando un único nodo/contenedor de ElasticSearch y haga clic en Guardar al final de la página.

Configuración de Graylog para recopilar registros de Syslog

Acaba de configurar Graylog cambiando el valor de los fragmentos de índice para ElasticSearch. Pero también deberá configurar Graylog para recopilar datos de registro de Syslog en la máquina cliente. ¿Cómo? Configurará entradas de Graylog para recibir datos de registro enviados desde su máquina cliente a través de Syslog para analizarlos en la máquina host.

Con Syslog como protocolo estándar de registro basado en la red, puede transportar los mensajes de eventos de su máquina cliente o registrar datos a Graylog.

1. Haga clic en Sistema menú —> Entradas para acceder a las Entradas página, donde configurará una entrada Syslog UDP.

2. Busque y seleccione Syslog UDP en el cuadro de búsqueda, como se muestra a continuación, luego haga clic en Iniciar nueva entrada .

3. Por último, configure la nueva entrada Syslog UDP con lo siguiente y haga clic en Guardar en la parte inferior de la ventana emergente para mantener y aplicar los cambios:

  • Seleccione su nodo del Nodo cuadro desplegable.
  • Establecer el Título a cualquier palabra que desee. Para esta demostración, el título es syslog .
  • Establecer la dirección de enlace a 0.0.0.0, para que Graylog pueda escuchar los eventos entrantes en cualquier lugar.
  • Establecer el Puerto al puerto Syslog UDP 1514 como se define en docker-compose.yml archivo bajo Syslog UDP .

A continuación, verá que la entrada UDP de Syslog se está ejecutando como parte de las entradas locales después de la configuración.

Configuración de Rsyslog para enviar datos de Syslog a Graylog

Configuró una entrada Syslog UDP para recibir datos enviados desde su máquina cliente, pero ¿cómo envía los datos a Graylog? ¡Rsyslog hará el truco!

Creará un archivo de configuración para que Rsyslog envíe sus datos de Syslog desde su máquina cliente a Graylog ejecutándose en su máquina host.

1. Cree un archivo de configuración en /etc/rsyslog.d directorio en su máquina cliente. Puede nombrar el archivo como prefiera, pero el archivo se llama 90-graylog.conf para esta demostración.

2. Luego, agregue la siguiente línea a 90-graylog.conf archivo, guarde los cambios y cierre el editor. Reemplazar 34.76.103.44 con la dirección IP de su máquina host donde se ejecuta Graylog.

La siguiente configuración envía datos Syslog (RSYSLOG_SyslogProtocol23Format ) desde la máquina host (@34.76.103.44 ) a Graylog.

*.* @34.76.103.44:1514;RSYSLOG_SyslogProtocol23Format

3. Ejecute el siguiente comando para reiniciar rsyslog para que los cambios surtan efecto.

sudo systemctl restart rsyslog

4. Vuelva a la interfaz web de Graylog y haga clic en Buscar menú para ver sus datos de Syslog recopilados cuidadosamente analizados de manera similar a la siguiente.

Conclusión

En este tutorial, aprendió a crear su propio sistema de gestión de registros centralizado con Graylog utilizando Docker y verificó correctamente los datos de Syslog recopilados de su máquina cliente.

En este punto, se ha dado cuenta de que recopilar y almacenar datos bien organizados en un entorno seguro para su análisis ya no será una molestia.

¿Qué otros registros puede recopilar con Graylog? ¿Quizás configurar un servidor web para enviar registros de NGINX a Graylog para su posterior análisis y análisis?


Docker
  1. Configurar Nextcloud con Redis usando Docker

  2. Cómo instalar Docker usando Ansible [Debian/Ubuntu]

  3. Cómo instalar Jenkins con Docker

  4. Cómo instalar WordPress usando Docker

  5. Cómo implementar microservicios con Docker

Cómo configurar MySQL con Docker en Linux

Cómo reemplazar Docker con Podman en una Mac, revisado

Cómo reemplazar Docker con Podman en una Mac

Cómo configurar Home Assistant en una Raspberry Pi usando Docker

Cómo instalar Gitea en Ubuntu usando Docker

Cómo ejecutar Jenkins en Docker usando Docker Compose con Volúmenes