bolt Valebyte VPS desde $4/mes — NVMe, despliegue en 60s.

Obtener VPS arrow_forward
eco Principiante Tutorial/Cómo hacer

Despliegue de un sistema

calendar_month Jul 31, 2026 schedule 20 min de lectura visibility 33 vistas
Развёртывание централизованной системы логирования на VPS: Fluent Bit, OpenSearch и OpenSearch Dashboards
info

¿Necesitas un servidor para esta guía? Ofrecemos servidores dedicados y VPS en más de 50 países con configuración instantánea.

¿Necesitas un VPS para esta guía?

Explore otras opciones de servidores dedicados en

Despliegue de un sistema de registro centralizado en un VPS: Fluent Bit, OpenSearch y OpenSearch Dashboards

TL;DR

En esta guía, configuraremos un sistema completo de agregación y análisis de registros centralizado basado en la combinación de Fluent Bit, OpenSearch y OpenSearch Dashboards en su VPS. Aprenderá a recopilar registros de diversas fuentes con Fluent Bit, almacenarlos centralmente en un clúster escalable de OpenSearch y visualizar y analizar datos a través de la conveniente interfaz web de OpenSearch Dashboards, lo que le permitirá tener un control total sobre los eventos en su servidor y aplicaciones.

  • Configuración de Fluent Bit para la recopilación y envío de registros.
  • Despliegue de OpenSearch y OpenSearch Dashboards utilizando Docker Compose.
  • Garantizar el acceso seguro a Dashboards a través de HTTPS con Caddy.
  • Ejemplos de configuración para la recopilación de registros de Nginx y registros del sistema.
  • Recomendaciones para la copia de seguridad y el mantenimiento del sistema de registro.
  • Instrucciones paso a paso para crear una plataforma de monitoreo confiable y de alto rendimiento.

Qué configuramos y por qué

Esquema: Qué configuramos y por qué
Esquema: Qué configuramos y por qué

Con el aumento de la complejidad de los sistemas de TI modernos, la cantidad de registros generados crece exponencialmente. Cada servicio, aplicación, sistema operativo y dispositivo de red produce sus propios registros de eventos. La revisión manual de estos registros en múltiples servidores se vuelve ineficiente y, a menudo, imposible. Un sistema de registro centralizado resuelve este problema al recopilar todos los registros en un solo lugar para facilitar la búsqueda, el análisis y la supervisión.

Desplegaremos una pila que consta de tres componentes clave:

  • Fluent Bit: Un procesador de registros, métricas y trazas ligero y de alto rendimiento. Se instalará en el servidor (o varios servidores) donde se generan los registros y será responsable de su recopilación, filtrado, transformación y envío al almacenamiento central. Fluent Bit es conocido por su bajo consumo de recursos, lo que lo hace ideal para su uso en VPS o entornos contenerizados.
  • OpenSearch: Un fork de Elasticsearch, que es un sistema de gestión de bases de datos de búsqueda y análisis distribuido y escalable, optimizado para trabajar con grandes volúmenes de datos, como registros. OpenSearch proporciona indexación y búsqueda rápidas, agregación de datos y almacenamiento de registros históricos.
  • OpenSearch Dashboards: Una interfaz web para OpenSearch que permite visualizar datos, crear paneles, realizar búsquedas interactivas y analizar registros sin interactuar directamente con la API de OpenSearch. Es la herramienta principal para operadores y desarrolladores.

Al final, obtendrá un sistema potente, flexible y económico para un control total sobre los eventos en su infraestructura. Podrá encontrar rápidamente las causas de los errores, monitorear el rendimiento de las aplicaciones, rastrear intentos de acceso no autorizados y mucho más, teniendo todos los datos a la vista en un formato conveniente.

Alternativas: Cloud-managed vs Self-hosted

Existen dos enfoques principales para implementar sistemas de registro:

  • Soluciones Cloud-managed: Servicios como AWS CloudWatch, Google Cloud Logging, Azure Monitor, Datadog, Splunk Cloud, Logz.io y otros. Ofrecen plataformas totalmente gestionadas, liberándole de las preocupaciones de despliegue, escalado y mantenimiento de la infraestructura. Las ventajas incluyen la facilidad de uso, alta disponibilidad y potentes funciones listas para usar. Las desventajas son el alto costo, especialmente con grandes volúmenes de registros, y la posible dependencia de un proveedor de nube específico.
  • Soluciones Self-hosted en un servidor VPS/dedicado: Este es el enfoque que implementamos en esta guía. Usted instala y gestiona todos los componentes de forma independiente en su propio servidor o en uno alquilado. Las ventajas incluyen el control total sobre los datos, costos operativos significativamente más bajos (especialmente para volúmenes medianos y grandes), la capacidad de ajustar la configuración para necesidades específicas y la ausencia de dependencia del proveedor. Las desventajas son la necesidad de conocimientos técnicos para el despliegue y mantenimiento, así como la responsabilidad de garantizar la fiabilidad y escalabilidad del sistema.

La elección de una solución self-hosted en un VPS es ideal para propietarios de servidores VPS/dedicados, startups, desarrolladores y empresas que desean ahorrar en costos de la nube, manteniendo la flexibilidad y el control. Para volúmenes de registros de hasta varias decenas de gigabytes por día, este enfoque resulta ser el más rentable y permite un uso eficiente de los recursos del servidor.

Qué configuración de VPS se necesita para esta tarea

Esquema: Qué configuración de VPS se necesita para esta tarea
Esquema: Qué configuración de VPS se necesita para esta tarea

Los requisitos de un VPS para un sistema de registro centralizado dependen en gran medida del volumen de registros generados, la frecuencia de su llegada y el período de retención de datos. Para un despliegue inicial y cargas medias (hasta 10-20 GB de registros por día), se pueden considerar los siguientes parámetros:

Requisitos mínimos

  • CPU: 2 núcleos. OpenSearch es bastante exigente con el procesador para la indexación y ejecución de consultas.
  • RAM: 8 GB. OpenSearch utiliza activamente la memoria RAM para el almacenamiento en caché de índices y búferes. Menos de 8 GB puede provocar un bajo rendimiento y fallos frecuentes.
  • Disco: 100-200 GB SSD. El SSD es fundamental para el rendimiento de OpenSearch, ya que las operaciones de entrada/salida (lectura/escritura de registros) son muy intensivas. El tamaño del disco debe ser suficiente para almacenar los registros durante el período deseado. Con 10 GB de registros por día, 200 GB serán suficientes para ~20 días.
  • Red: 100 Mbps. Para la transmisión de registros y el acceso a Dashboards.

Plan de VPS recomendado para el despliegue inicial

Para un funcionamiento más cómodo y la posibilidad de escalar en el futuro, así como para almacenar registros durante un período más largo, se recomienda la siguiente configuración:

  • CPU: 4 núcleos.
  • RAM: 16 GB.
  • Disco: 500 GB NVMe SSD. NVMe proporcionará una velocidad de lectura/escritura significativamente mayor en comparación con un SSD normal, lo cual es crucial para OpenSearch.
  • Red: 1 Gbps.

Para alquilar un VPS con estas características, puede considerar un VPS con las características indicadas, que ofrecen tarifas flexibles y alto rendimiento.

Cuándo se necesita un servidor dedicado y no un VPS

Un servidor dedicado se vuelve necesario cuando los volúmenes de registros exceden las capacidades de un VPS potente, o cuando se requiere el máximo rendimiento y aislamiento de recursos. Esto es relevante para escenarios donde:

  • El volumen de registros es de cientos de gigabytes o terabytes por día.
  • Se requiere un almacenamiento de registros a largo plazo (meses, años) con acceso rápido.
  • Se necesita un clúster de OpenSearch de varios nodos para garantizar alta disponibilidad y distribución de carga.
  • Son importantes configuraciones de hardware específicas (por ejemplo, matrices RAID NVMe muy rápidas, gran cantidad de RAM).

En tales casos, el alquiler de un servidor dedicado adecuado con la posibilidad de personalizar la configuración será más justificado.

Ubicación: qué factores influye

La elección de la ubicación de un VPS o servidor dedicado influye en varios factores:

  • Latencia: Cuanto más cerca esté el servidor de las fuentes de registros (sus aplicaciones) y de los usuarios de OpenSearch Dashboards, menor será la latencia en la transmisión de datos y el trabajo con la interfaz. Para sistemas críticos, elija ubicaciones lo más cercanas posible a sus servidores principales.
  • Legislación: Diferentes países tienen diferentes leyes sobre el almacenamiento de datos. Asegúrese de que la ubicación elegida cumpla con los requisitos de privacidad y las regulaciones, si esto es aplicable a sus datos.
  • Costo: Los precios de los servidores pueden variar ligeramente en diferentes regiones.

Lo óptimo es ubicar el sistema de registro en el mismo centro de datos o región donde se encuentran los servidores principales que generan los registros.

Preparación del servidor

Diagrama: Preparación del servidor
Diagrama: Preparación del servidor

Antes de instalar los componentes principales, es necesario realizar una configuración básica de seguridad e instalar las utilidades necesarias. Utilizaremos Ubuntu Server 24.04 LTS como base.

1. Conexión SSH y creación de usuario

Conéctese a su VPS como usuario root (si es el único acceso) y cree un nuevo usuario con permisos sudo. Reemplace youruser con el nombre de usuario deseado.


ssh root@your_vps_ip # Conexión al servidor
adduser youruser # Creación de un nuevo usuario
usermod -aG sudo youruser # Añadir usuario al grupo sudo

Salga de la sesión de root e inicie sesión con el nuevo usuario:


exit # Salir de la sesión de root
ssh youruser@your_vps_ip # Iniciar sesión con el nuevo usuario

2. Actualización del sistema

Siempre comience actualizando la base de paquetes y los paquetes instalados.


sudo apt update # Actualizar la lista de paquetes
sudo apt upgrade -y # Actualizar todos los paquetes instalados
sudo apt autoremove -y # Eliminar dependencias innecesarias

3. Configuración de claves SSH (recomendado)

Para mejorar la seguridad, se recomienda utilizar claves SSH en lugar de contraseñas. Si aún no las usa, genere un par de claves en su máquina local y copie la clave pública a su VPS.


# En su máquina local
ssh-keygen -t rsa -b 4096 # Generar claves SSH (si no existen)
ssh-copy-id youruser@your_vps_ip # Copiar la clave pública al VPS

Después de esto, desactive el inicio de sesión con contraseña para SSH (recomendado, pero tenga cuidado de no bloquear su propio acceso):


sudo nano /etc/ssh/sshd_config # Abrir la configuración del servidor SSH

Busque y modifique las siguientes líneas:


PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no # Puede ser necesario deshabilitar si se utilizan otros métodos de autenticación

Guarde el archivo y reinicie el servicio SSH:


sudo systemctl restart sshd # Reiniciar el servicio SSH

4. Configuración del firewall (UFW)

Permita solo los puertos necesarios: SSH (22), HTTP (80), HTTPS (443). Para OpenSearch Dashboards utilizaremos HTTPS.


sudo ufw allow 22/tcp # Permitir SSH
sudo ufw allow 80/tcp # Permitir HTTP (para Caddy/Certbot)
sudo ufw allow 443/tcp # Permitir HTTPS (para Caddy/Dashboards)
sudo ufw enable # Habilitar el firewall
sudo ufw status # Verificar el estado

5. Instalación de Fail2Ban

Fail2Ban ayuda a proteger contra ataques de fuerza bruta, bloqueando las direcciones IP desde las cuales se producen numerosos intentos fallidos de inicio de sesión.


sudo apt install fail2ban -y # Instalación de Fail2Ban
sudo systemctl enable fail2ban # Habilitar el inicio automático del servicio
sudo systemctl start fail2ban # Iniciar el servicio

Cree una configuración local para Fail2Ban para que no se sobrescriba durante las actualizaciones:


sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local # Copiar la configuración base
sudo nano /etc/fail2ban/jail.local # Editar la configuración local

En el archivo jail.local, asegúrese de que la sección [sshd] esté activa (enabled = true) y configure los parámetros a su discreción (por ejemplo, bantime, findtime, maxretry).


[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s

Guarde y reinicie Fail2Ban:


sudo systemctl restart fail2ban # Reiniciar Fail2Ban para aplicar los cambios

6. Instalación de Docker y Docker Compose

OpenSearch y OpenSearch Dashboards se desplegarán en contenedores Docker para simplificar la gestión y el aislamiento. Caddy también funcionará en Docker.


# Instalación de dependencias para Docker
sudo apt install ca-certificates curl gnupg lsb-release -y

# Añadir la clave GPG de Docker
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# Añadir el repositorio de Docker
echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Instalación de Docker Engine
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

# Añadir el usuario actual al grupo docker para trabajar sin sudo
sudo usermod -aG docker youruser

Después de añadir el usuario al grupo docker, cierre sesión y vuelva a iniciarla para que los cambios surtan efecto:


exit
ssh youruser@your_vps_ip

Verifique la instalación de Docker:


docker run hello-world # Ejecutar un contenedor de prueba

Si ve el mensaje de bienvenida, Docker está instalado correctamente.

Instalación de software — paso a paso

Diagrama: Instalación de software — paso a paso
Diagrama: Instalación de software — paso a paso

Ahora que el servidor está preparado, procederemos con la instalación de Fluent Bit, OpenSearch y OpenSearch Dashboards. Utilizaremos Docker Compose para OpenSearch/Dashboards y una instalación nativa de Fluent Bit.

1. Preparación de directorios para OpenSearch y Caddy

Crearemos los directorios necesarios para almacenar los datos de OpenSearch y la configuración de Caddy. Esto permitirá conservar los datos incluso al recrear los contenedores.


mkdir -p ~/opensearch/data # Directorio para datos de OpenSearch
mkdir -p ~/opensearch/dashboards/config # Directorio para configuraciones de OpenSearch Dashboards
mkdir -p ~/caddy/config # Directorio para configuraciones de Caddy
mkdir -p ~/caddy/data # Directorio para certificados de Caddy

Estableceremos los permisos de acceso correctos para el directorio de datos de OpenSearch, ya que el contenedor de OpenSearch se ejecuta con un usuario no privilegiado.


sudo chown -R 1000:1000 ~/opensearch/data # Cambiar el propietario a UID 1000

2. Creación del archivo Docker Compose para OpenSearch y OpenSearch Dashboards

Crearemos el archivo docker-compose.yml en el directorio de inicio, que definirá los servicios de OpenSearch y OpenSearch Dashboards.


nano ~/docker-compose.yml

Pegue el siguiente contenido. Las versiones especificadas (OpenSearch 2.12.0, OpenSearch Dashboards 2.12.0) son actuales a principios de 2026 y son estables.


# docker-compose.yml
version: '3.8'
services:
  opensearch:
    image: opensearchproject/opensearch:2.12.0 # Versión actual de OpenSearch para 2026
    container_name: opensearch
    environment:
      - cluster.name=opensearch-cluster
      - node.name=opensearch-node1
      - discovery.type=single-node
      - bootstrap.memory_lock=true
      - OPENSEARCH_JAVA_OPTS=-Xms4g -Xmx4g # Asigne la mitad de la RAM del servidor, pero no más de 30 GB
      - DISABLE_SECURITY_PLUGIN=true # Desactivamos el plugin de seguridad para simplificar, para producción debe configurarse
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - ~/opensearch/data:/usr/share/opensearch/data # Almacenamiento de datos de OpenSearch
    ports:
      - "9200:9200" # Puerto para la API de OpenSearch
      - "9600:9600" # Puerto para Transport Layer
    networks:
      - opensearch-net
    healthcheck:
      test: ["CMD-SHELL", "curl -f http://localhost:9200/_cat/health || exit 1"]
      interval: 30s
      timeout: 10s
      retries: 5

  opensearch-dashboards:
    image: opensearchproject/opensearch-dashboards:2.12.0 # Versión actual de OpenSearch Dashboards
    container_name: opensearch-dashboards
    environment:
      - OPENSEARCH_HOSTS=["http://opensearch:9200"] # Conexión a OpenSearch
    volumes:
      - ~/opensearch/dashboards/config/opensearch_dashboards.yml:/usr/share/opensearch-dashboards/config/opensearch_dashboards.yml # Configuración de Dashboards
    ports:
      - "5601:5601" # Puerto para OpenSearch Dashboards
    networks:
      - opensearch-net
    depends_on:
      opensearch:
        condition: service_healthy # Iniciar Dashboards solo después de OpenSearch
    healthcheck:
      test: ["CMD-SHELL", "curl -f http://localhost:5601/api/status || exit 1"]
      interval: 30s
      timeout: 10s
      retries: 5

  caddy:
    image: caddy:2.7.6-alpine # Versión ligera y actual de Caddy para 2026
    container_name: caddy
    restart: unless-stopped
    ports:
      - "80:80" # Para Let's Encrypt
      - "443:443" # Para HTTPS
    volumes:
      - ~/caddy/Caddyfile:/etc/caddy/Caddyfile # Configuración de Caddy
      - ~/caddy/data:/data # Certificados Let's Encrypt
      - ~/caddy/config:/config # Otros datos de Caddy
    networks:
      - opensearch-net
    depends_on:
      opensearch-dashboards:
        condition: service_healthy # Caddy depende del funcionamiento de Dashboards

networks:
  opensearch-net:
    driver: bridge

Nota importante de seguridad: En este ejemplo, hemos deshabilitado el plugin de seguridad de OpenSearch (DISABLE_SECURITY_PLUGIN=true) para simplificar el despliegue. En un entorno de producción, se recomienda encarecidamente habilitar y configurar el plugin de seguridad, crear usuarios y roles, y también usar HTTPS para acceder a la API de OpenSearch. Esto requerirá una configuración más compleja.

Memoria para OpenSearch: Asegúrese de ajustar el parámetro OPENSEARCH_JAVA_OPTS=-Xms4g -Xmx4g de acuerdo con la cantidad de RAM de su VPS. OpenSearch debe usar aproximadamente el 50% de la memoria disponible, pero no más de 30-31 GB. Si tiene 8 GB de RAM, establezca -Xms4g -Xmx4g; si tiene 16 GB, entonces -Xms8g -Xmx8g.

3. Creación del archivo de configuración de OpenSearch Dashboards

Cree el archivo opensearch_dashboards.yml en el directorio ~/opensearch/dashboards/config/:


nano ~/opensearch/dashboards/config/opensearch_dashboards.yml

Añada el siguiente contenido:


# opensearch_dashboards.yml
server.host: "0.0.0.0"
server.name: "opensearch-dashboards"
opensearch.hosts: ["http://opensearch:9200"]
opensearch.requestHeadersWhitelist: [ "authorization", "osd-xsrf" ] # Para trabajar con la seguridad de OpenSearch
opensearch.ssl.verificationMode: "none" # Desactivamos la verificación SSL entre Dashboards y OpenSearch, ya que se usa HTTP

4. Creación del archivo de configuración de Caddy

Cree el archivo Caddyfile en el directorio ~/caddy/, reemplazando your_domain.com con su dominio real:


nano ~/caddy/Caddyfile

Añada el siguiente contenido:


# Caddyfile
your_domain.com { # Reemplace con su dominio
  reverse_proxy opensearch-dashboards:5601 # Proxy de solicitudes a Dashboards
  handle_errors {
    respond "{err.status_code} {err.status_text}"
  }
  log {
    output file /var/log/caddy/access.log {
      roll_size 10mb
      roll_keep 5
    }
  }
}

Asegúrese de que su dominio (por ejemplo, your_domain.com) apunte a la dirección IP de su VPS en los registros DNS (registro A).

5. Inicio de OpenSearch, OpenSearch Dashboards y Caddy

Vaya al directorio donde se encuentra docker-compose.yml y ejecute los servicios:


cd ~ # Ir al directorio de inicio
docker compose up -d # Iniciar todos los servicios en segundo plano

El proceso de inicio puede tardar varios minutos, especialmente para OpenSearch en la primera inicialización. Puede verificar el estado de los contenedores con el comando:


docker compose ps # Verificar el estado de los contenedores

Asegúrese de que todos los contenedores tengan el estado running y su HEALTH esté en estado healthy.

6. Instalación de Fluent Bit

Fluent Bit se instalará en el mismo servidor que OpenSearch/Dashboards para recopilar registros del sistema y registros de Caddy. Si tiene otros servidores, también deberá instalar Fluent Bit en ellos y configurarlo para enviar registros a su servidor OpenSearch.

Añadiremos el repositorio de Fluent Bit (la versión 2.2.x es actual para 2026, pueden estar disponibles versiones más nuevas):


# Añadir la clave GPG de Fluent Bit
curl https://packages.fluentbit.io/fluentbit.key | gpg --dearmor | sudo tee /usr/share/keyrings/fluentbit-keyring.gpg > /dev/null

# Añadir el repositorio de Fluent Bit para Ubuntu 24.04 (Noble Numbat)
echo "deb [signed-by=/usr/share/keyrings/fluentbit-keyring.gpg] https://packages.fluentbit.io/ubuntu/noble noble main" | sudo tee /etc/apt/sources.list.d/fluent-bit.list

# Actualizar la lista de paquetes e instalar Fluent Bit
sudo apt update
sudo apt install fluent-bit -y # Instalación de Fluent Bit versión 2.2.x

Verifiquemos el estado del servicio:


sudo systemctl status fluent-bit # Verificar el estado de Fluent Bit

El servicio debe estar en ejecución y activo.

Configuración

Diagrama: Configuración
Diagrama: Configuración

Ahora que todos los componentes están instalados, configuraremos Fluent Bit para recopilar los logs y enviarlos a OpenSearch.

1. Configuración de Fluent Bit

El archivo de configuración principal de Fluent Bit se encuentra en /etc/fluent-bit/fluent-bit.conf. Sin embargo, para mayor comodidad, es mejor usar archivos separados para las entradas (inputs), los filtros (filters) y las salidas (outputs).


sudo nano /etc/fluent-bit/fluent-bit.conf

Asegúrese de que al final del archivo fluent-bit.conf existan las líneas para incluir configuraciones externas:


# fluent-bit.conf
...
@INCLUDE /etc/fluent-bit/parsers.conf
@INCLUDE /etc/fluent-bit/conf.d/.conf

Crearemos dos archivos de configuración en el directorio /etc/fluent-bit/conf.d/: uno para las entradas (logs del sistema y logs de Caddy) y otro para las salidas (OpenSearch).

1.1. Entradas (inputs.conf)

Cree el archivo /etc/fluent-bit/conf.d/inputs.conf para recopilar los logs del sistema (/var/log/syslog) y los logs de Caddy (/var/log/caddy/access.log).


sudo nano /etc/fluent-bit/conf.d/inputs.conf

# /etc/fluent-bit/conf.d/inputs.conf

[INPUT]
    Name              tail
    Tag               syslog
    Path              /var/log/syslog
    Parser            syslog
    DB                /var/log/flb_syslog.db
    Mem_Buf_Limit     5MB
    Skip_Long_Lines   On
    Refresh_Interval  5

[INPUT]
    Name              tail
    Tag               auth.log
    Path              /var/log/auth.log
    Parser            syslog
    DB                /var/log/flb_auth.db
    Mem_Buf_Limit     5MB
    Skip_Long_Lines   On
    Refresh_Interval  5

[INPUT]
    Name              tail
    Tag               caddy.access
    Path              /var/log/caddy/access.log # Ruta a los logs de Caddy
    Parser            json # Los logs de Caddy están en JSON por defecto
    DB                /var/log/flb_caddy.db
    Mem_Buf_Limit     5MB
    Skip_Long_Lines   On
    Refresh_Interval  5
1.2. Salidas (output.conf)

Cree el archivo /etc/fluent-bit/conf.d/output.conf para enviar los logs a OpenSearch. Tenga en cuenta que usamos el nombre del servicio opensearch de docker-compose.yml como host.


sudo nano /etc/fluent-bit/conf.d/output.conf

# /etc/fluent-bit/conf.d/output.conf

[OUTPUT]
    Name            opensearch
    Match           
    Host            opensearch # Nombre del servicio OpenSearch en Docker Compose
    Port            9200
    Index           fluent-bit-logs-%Y.%m.%d # Índice con fecha
    Type            _doc
    Logstash_Format On
    Logstash_Prefix fluent-bit-logs
    Retry_Limit     False
    Suppress_Type_Name On # Para OpenSearch 7+
1.3. Reinicio de Fluent Bit

Después de cambiar la configuración de Fluent Bit, es necesario reiniciar el servicio:


sudo systemctl restart fluent-bit # Reiniciar Fluent Bit
sudo systemctl status fluent-bit # Verificar estado

Asegúrese de que el servicio se haya iniciado sin errores. Puede ver los logs de Fluent Bit para depuración:


sudo journalctl -u fluent-bit -f # Ver logs de Fluent Bit en tiempo real

2. Verificación de funcionamiento

2.1. Acceso a OpenSearch Dashboards

Abra en su navegador su dominio (por ejemplo, https://your_domain.com), el cual especificó en Caddyfile. Debería ver la interfaz de OpenSearch Dashboards.

2.2. Creación de un Index Pattern en Dashboards

Después de iniciar sesión por primera vez en Dashboards, deberá crear un "Index Pattern" para ver los logs.

  1. En el menú de navegación izquierdo, vaya a Stack Management (icono de engranaje).
  2. Seleccione Index Patterns en la sección Kibana.
  3. Haga clic en Create index pattern.
  4. En el campo Index pattern name, introduzca fluent-bit-logs- (o cualquier otro prefijo que haya especificado en fluent-bit/conf.d/output.conf). Haga clic en Next step.
  5. Para Time field, seleccione @timestamp. Haga clic en Create index pattern.

Después de crear el Index Pattern, puede ir a la sección Discover (icono de brújula) en el menú izquierdo para ver los logs entrantes. Si todo está configurado correctamente, verá flujos de logs con las etiquetas syslog, auth.log y caddy.access.

2.3. Verificación de la API de OpenSearch

También puede verificar la disponibilidad de la API de OpenSearch directamente desde el servidor:


curl http://localhost:9200 # Verificar disponibilidad de OpenSearch
curl http://localhost:9200/_cat/indices?v # Ver índices creados

Debería ver información sobre el clúster y los índices de Fluent Bit creados.

Copias de seguridad y mantenimiento

Diagrama: Copias de seguridad y mantenimiento
Diagrama: Copias de seguridad y mantenimiento

El sistema de logging acumula datos críticos, por lo que las copias de seguridad regulares y un mantenimiento adecuado son obligatorios.

Qué respaldar

  • Datos de OpenSearch: Esto es lo más importante. Contienen todos los logs recopilados. Se recomienda usar las herramientas integradas de OpenSearch para crear snapshots.
  • Archivos de configuración:
    • docker-compose.yml
    • ~/opensearch/dashboards/config/opensearch_dashboards.yml
    • ~/caddy/Caddyfile
    • /etc/fluent-bit/fluent-bit.conf y /etc/fluent-bit/conf.d/.conf
  • Certificados de Caddy: Aunque Caddy los renueva automáticamente, tener una copia no está de más (~/caddy/data).

Script simple de copia de seguridad automática (OpenSearch + configuraciones)

Para OpenSearch, se recomienda usar la API para crear snapshots en un almacenamiento remoto (por ejemplo, almacenamiento compatible con S3). Para los archivos de configuración, se puede usar rsync o tar.

Ejemplo de script para la copia de seguridad de archivos de configuración:


#!/bin/bash

# Directorio para las copias de seguridad
BACKUP_DIR="/var/backups/logging_system"
CONFIGS_DIR="$BACKUP_DIR/configs"
DATE=$(date +%Y%m%d%H%M%S)

# Crear directorios si no existen
mkdir -p "$CONFIGS_DIR"

echo "--- Iniciando copia de seguridad de configuraciones ($DATE) ---"

# Copia de seguridad del archivo Docker Compose
cp ~/docker-compose.yml "$CONFIGS_DIR/docker-compose-$DATE.yml"
echo "docker-compose.yml respaldado."

# Copia de seguridad de la configuración de OpenSearch Dashboards
cp ~/opensearch/dashboards/config/opensearch_dashboards.yml "$CONFIGS_DIR/opensearch_dashboards-$DATE.yml"
echo "opensearch_dashboards.yml respaldado."

# Copia de seguridad de la configuración de Caddy
cp ~/caddy/Caddyfile "$CONFIGS_DIR/Caddyfile-$DATE"
echo "Caddyfile respaldado."

# Copia de seguridad de las configuraciones de Fluent Bit
tar -czf "$CONFIGS_DIR/fluent-bit-configs-$DATE.tar.gz" /etc/fluent-bit
echo "Configuraciones de Fluent Bit respaldadas."

# Limpiar copias de seguridad antiguas (mantener los últimos 7 días)
find "$CONFIGS_DIR" -type f -name "-$DATE.yml" -o -name "-$DATE.tar.gz" -mtime +7 -delete
echo "Copias de seguridad de configuraciones antiguas eliminadas."

echo "--- Copia de seguridad de configuraciones finalizada ---"

Guarde este script como ~/backup_configs.sh, hágalo ejecutable:


chmod +x ~/backup_configs.sh

Y agréguelo a cron para su ejecución diaria (por ejemplo, a las 3:00 de la mañana):


crontab -e

Añada la línea:


0 3    /home/youruser/backup_configs.sh > /dev/null 2>&1

Dónde almacenar

Las copias de seguridad siempre deben almacenarse fuera del servidor principal para evitar la pérdida de datos en caso de fallo del servidor:

  • Almacenamiento de objetos externo compatible con S3: Esta es la opción más fiable y escalable. Muchos proveedores de VPS ofrecen almacenamientos compatibles con S3. OpenSearch soporta la creación de snapshots directamente en S3.
  • VPS separado: Se puede configurar rsync o scp para copiar las copias de seguridad a otro VPS.
  • NAS/SMB/NFS local: Si tiene almacenamiento local, puede usarlo, pero es menos conveniente para los VPS en la nube.

Actualizaciones: rolling vs maintenance window

La actualización de los componentes del sistema de logging es una parte importante del mantenimiento.

  • Fluent Bit: Se actualiza como un paquete apt normal. Se recomienda actualizarlo en una ventana de mantenimiento separada, ya que esto puede interrumpir la recopilación de logs por un corto tiempo.
  • OpenSearch y OpenSearch Dashboards: La actualización de imágenes Docker (por ejemplo, de 2.12.0 a 2.13.0) puede ser más compleja y requerir la verificación de la compatibilidad de los índices.
    • Maintenance Window (Ventana de mantenimiento): Para un nodo único de OpenSearch, esta es la única opción. Detenga los servicios, actualice las imágenes en docker-compose.yml, inicie. Durante este tiempo, los logs no se indexarán.
    • Rolling Upgrades (Actualizaciones continuas): Si hay un clúster de OpenSearch con varios nodos, se pueden actualizar los nodos uno por uno, manteniendo la operatividad del sistema. Este es un procedimiento más complejo y requiere una configuración avanzada del clúster.

Siempre realice copias de seguridad antes de actualizar y pruebe las actualizaciones en un entorno de prueba, si es posible.

Solución de problemas + Preguntas frecuentes

OpenSearch Dashboards no disponible (502 Bad Gateway o Connection Refused)

Qué verificar:

  1. Estado de los contenedores: Asegúrese de que los contenedores opensearch, opensearch-dashboards y caddy estén en ejecución y saludables (healthy). Use docker compose ps.
  2. Registros de los contenedores: Verifique los registros de cada contenedor en busca de errores: docker compose logs opensearch, docker compose logs opensearch-dashboards, docker compose logs caddy.
  3. Registro DNS: Asegúrese de que su dominio apunte correctamente a la dirección IP del VPS.
  4. Firewall (UFW): Verifique que los puertos 80 y 443 estén abiertos: sudo ufw status.
  5. Configuración de Caddy: Asegúrese de que el Caddyfile especifique el dominio correcto y que reverse_proxy esté configurado para opensearch-dashboards:5601.

Cómo solucionar: Corrija los errores en los registros, verifique el DNS, abra los puertos UFW, ajuste el Caddyfile y reinicie los servicios de Docker Compose: docker compose down && docker compose up -d.

Los registros no aparecen en OpenSearch Dashboards

Qué verificar:

  1. Estado de Fluent Bit: Asegúrese de que Fluent Bit esté en ejecución y activo: sudo systemctl status fluent-bit.
  2. Registros de Fluent Bit: Verifique los registros de Fluent Bit en busca de errores de envío o análisis: sudo journalctl -u fluent-bit -f. Busque mensajes sobre errores de conexión a OpenSearch o problemas con los archivos de registro.
  3. Disponibilidad de OpenSearch: Desde el servidor donde se ejecuta Fluent Bit, intente curl http://localhost:9200 (si OpenSearch está en el mismo servidor). Asegúrese de que la API de OpenSearch esté disponible.
  4. Patrón de índice: Verifique que el Patrón de índice en Dashboards (fluent-bit-logs-) se haya creado correctamente y que se haya seleccionado el Campo de tiempo (@timestamp) correcto.
  5. Configuración de Fluent Bit: Verifique las rutas a los registros en inputs.conf y la corrección de Host/Port en output.conf.

Cómo solucionar: Corrija los errores en las configuraciones de Fluent Bit, reinícielo (sudo systemctl restart fluent-bit). Asegúrese de que OpenSearch esté funcionando. Verifique los permisos de acceso de Fluent Bit a los archivos de registro (aunque normalmente fluent-bit se ejecuta como root o tiene los permisos necesarios).

OpenSearch se bloquea o funciona lentamente

Qué verificar:

  1. Memoria (RAM): OpenSearch es muy exigente con la memoria. Verifique el uso de RAM en el VPS: free -h. Si la RAM está constantemente llena, esto es un problema.
  2. Registros de OpenSearch: Verifique los registros del contenedor de OpenSearch en busca de errores OutOfMemoryError o problemas de disco: docker compose logs opensearch.
  3. Espacio en disco: Asegúrese de que haya suficiente espacio libre en el disco: df -h. OpenSearch requiere mucho espacio para los índices.
  4. Ulimits: Verifique que los ulimits para memlock estén configurados correctamente en docker-compose.yml.

Cómo solucionar: Aumente la RAM en el VPS. Aumente el tamaño del disco. Optimice el parámetro OPENSEARCH_JAVA_OPTS, asignando más memoria a la JVM (pero no más del 50% de la RAM total). Configure la política de rotación de índices en OpenSearch (ILM - Index Lifecycle Management) para eliminar automáticamente los registros antiguos y liberar espacio.

¿Qué configuración mínima de VPS es adecuada?

Para una implementación mínima, capaz de procesar hasta 5-10 GB de registros al día y almacenarlos durante una o dos semanas, se requerirá un VPS con 2 núcleos de CPU, 8 GB de RAM y 100-200 GB de SSD. Es críticamente importante que sea un disco SSD, ya que el rendimiento de E/S es un cuello de botella para OpenSearch. Parámetros menores llevarán a un funcionamiento inestable y fallos frecuentes, especialmente durante la indexación.

¿Qué elegir: VPS o dedicado para esta tarea?

Para la mayoría de los proyectos individuales, startups y pequeñas empresas, donde el volumen de registros no supera los 50-100 GB al día, un VPS potente (por ejemplo, con 4-8 núcleos de CPU, 16-32 GB de RAM y 500 GB - 1 TB de SSD NVMe) será suficiente. Un servidor dedicado se convierte en la opción preferida si planea procesar cientos de gigabytes o terabytes de registros diariamente, requiere el máximo rendimiento, control total sobre el hardware, o si necesita un clúster de OpenSearch de varios nodos para garantizar alta disponibilidad y escalabilidad.

¿Debería habilitarse el plugin de seguridad de OpenSearch?

Sí, para cualquier entorno de producción el plugin de seguridad de OpenSearch debe estar habilitado y configurado. Su desactivación en esta guía se ha realizado para simplificar el proceso de instalación. En condiciones reales, usted debe:

  • Crear usuarios y roles con privilegios mínimos.
  • Configurar HTTPS para acceder a la API de OpenSearch.
  • Usar autenticación para OpenSearch Dashboards.

Esto evitará el acceso no autorizado a sus registros y datos.

¿Cómo rotar los registros para no llenar el disco?

Para OpenSearch, use Index Lifecycle Management (ILM). Esta es una función incorporada que permite gestionar automáticamente el ciclo de vida de los índices: moverlos a discos más lentos, crear instantáneas y luego eliminarlos después de un período de tiempo establecido. Configure ILM a través de OpenSearch Dashboards en la sección Stack Management -> Index Management -> Index Policies. Por ejemplo, puede configurar la eliminación de índices con más de 30 días.

Conclusiones y próximos pasos

Diagrama: Conclusiones y próximos pasos
Diagrama: Conclusiones y próximos pasos

¡Felicidades! Ha implementado con éxito un sistema de registro centralizado completo en su VPS, utilizando Fluent Bit para la recopilación, OpenSearch para el almacenamiento y OpenSearch Dashboards para la visualización. Ahora tiene una potente herramienta para monitorear y analizar eventos en su infraestructura, lo que le permitirá reaccionar rápidamente a los problemas y tomar decisiones informadas basadas en datos.

Los siguientes pasos para el desarrollo de su sistema:

  1. Expansión de las fuentes de registros: Configure Fluent Bit en sus otros servidores, contenedores o aplicaciones para la recopilación centralizada de todos los registros relevantes.
  2. Configuración de seguridad de OpenSearch: Habilite y configure el plugin de seguridad de OpenSearch, cree usuarios, roles y use HTTPS para proteger sus datos.
  3. Optimización y escalado: Explore Index Lifecycle Management (ILM) para la rotación y eliminación automática de registros antiguos. A medida que crezcan los volúmenes, considere la posibilidad de pasar a un clúster de OpenSearch de varios nodos o a un servidor dedicado más potente.

¿Te fue útil esta guía?

Tus comentarios nos ayudan a mejorar nuestras guías.

Compartir esta publicación:

Envía esta guía a alguien a quien pueda resultarle útil.

Telegram VKVK WhatsApp Facebook LinkedIn XX

Despliegue de sistema de logging centralizado en VPS: Fluent Bit, OpenSearch y Open
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.