Busqueda sobre Linux y software libre

Noticias sobre linux y software libre - Google 

Cómo resolver problemas de Cacti en linux

 Le preguntamos a Gemini, la inteligencia artificial de Google, cómo resolver problemas de Cacti en linux

Explicanos detalladamente cómo resolver problemas de Cacti en linux

Para resolver problemas en Cacti, el diagnóstico debe abordar de forma sistemática la cadena de procesamiento de datos: la recolección (Poller), el procesamiento de archivos RRD (RRDTool), la base de datos MariaDB y el servidor web Apache/PHP.

1. Ubicación de Registros (Logs) y Herramientas de Diagnóstico

Cacti registra internamente las fallas del recolector y la base de datos, mientras que las fallas de renderizado web quedan capturadas por el servidor web y PHP:

ComponenteArchivo / ComandoPropósito
Log de Cacti/var/www/html/cacti/log/cacti.logMuestra tiempos de ejecución del Poller, fallos de SNMP y consultas SQL.
Apache Error Log/var/log/apache2/error.logExcepciones de PHP, faltas de módulos y errores de permisos.
Monitoreo en Vivotail -f /var/www/html/cacti/log/cacti.logVerificación del ciclo de recolección en tiempo real.
Verificación Manualphp /var/www/html/cacti/poller.php --forceEjecución forzada del Poller para detectar fallas por consola.

2. Problemas Frecuentes y Soluciones Paso a Paso

Problema 1: Gráficas en Blanco o sin Actualizar (Gaps/Nan)

Causa: El ejecutable del recolector (cmd.php o spine) no se ejecuta cada 5 minutos, o el usuario del servidor web (www-data / apache) no tiene permisos de escritura en la carpeta /rra/.

Solución:

Verifica que el archivo de cron existe y está habilitado en /etc/cron.d/cacti:

Bash

cat /etc/cron.d/cacti

# Debe contener: */5 * * * * www-data php /var/www/html/cacti/poller.php > /dev/null 2>&1

Corrige la propiedad y permisos de las carpetas de almacenamiento y logs:

Bash

sudo chown -R www-data:www-data /var/www/html/cacti/rra /var/www/html/cacti/log

sudo chmod -R 775 /var/www/html/cacti/rra /var/www/html/cacti/log


Ejecuta el poller manualmente desde la consola como el usuario del servidor web:

Bash

sudo -u www-data php /var/www/html/cacti/poller.php --force --debug

Problema 2: Timeouts de SNMP y Dispositivos en Estado "Down"

Causa: Bloqueo de firewall (puerto UDP 161), cadena de comunidad SNMP incorrecta o versión incompatibles (v1, v2c, v3).

Solución:

Prueba la conectividad SNMP directa desde la consola del servidor Cacti usando snmpwalk:

Bash

snmpwalk -v 2c -c tu_comunidad <IP_DISPOSITIVO>  .1.3.6.1.2.1.1.1.0

Si el comando falla por timeout, valida que el puerto UDP 161 esté abierto en la red o firewall local:

Bash

nc -zu <IP_DISPOSITIVO> 161

En la interfaz web de Cacti (Management > Devices > [Tu Dispositivo]), ajusta el valor de SNMP Timeout (por defecto 500 ms) a 2000 ms o superior si el enlace es lento o tiene latencia.

Problema 3: Desincronización de Hora y Zonas Horarias

Causa: Diferencia entre la zona horaria del sistema operativo, la base de datos MariaDB y el archivo php.ini. Esto genera un desajuste donde RRDTool ignora las métricas por considerarlas "del futuro" o "del pasado".

Solución:

Revisa que la zona horaria en /etc/php/8.x/apache2/php.ini coincida con la del sistema:

Ini, TOML

date.timezone = America/Mexico_City


Carga las zonas horarias del sistema en MariaDB:

Bash

sudo mysql_tzinfo_to_sql /usr/share/zoneinfo | sudo mysql -u root mysql

Otorga permisos de lectura del timezone al usuario de Cacti:

SQL

GRANT SELECT ON mysql.time_zone_name TO 'cactiuser'@'localhost';

FLUSH PRIVILEGES;


Reinicia el servidor web y la base de datos:

Bash


sudo systemctl restart apache2 mariadb

Problema 4: Rendimiento Lento del Recolector (Poller Overrun)

Causa: El tiempo necesario para consultar todos los dispositivos supera la ventana de 5 minutos (300 segundos), provocando que los procesos de recolección se traslapen y bloqueen el servidor.

Solución:

Cambia el recolector por defecto cmd.php (PHP monohilo) por Spine (compilado en C y multihilo).

Ajusta los procesos paralelos dentro de Cacti en Configuration > Settings > Poller:

Number of Threads per Process: Incrementa de 1 a 10 o más según la cantidad de núcleos CPU.

Concurrent Processes: 2 a 4.

Revisa en /var/www/html/cacti/log/cacti.log que la recolección tome menos de 290 segundos:

Plaintext

SYSTEM STATS: Time:18.2341 Method:spine Processes:2 Threads:10 Hosts:45

Problema 5: Base de Datos Corrupta o Errores de Tablas InnoDB

Causa:
Cortes de energía, falta de espacio en disco o agotamiento de la memoria de MariaDB (innodb_buffer_pool_size).

Solución:

Ejecuta la herramienta de reparación de MariaDB sobre la base de datos de Cacti:

Bash

sudo mysqlcheck -u cactiuser -p --auto-repair --check cacti

Incrementa el límite de memoria asignado a las tablas de Cacti en /etc/mysql/mariadb.conf.d/50-server.cnf:

Ini, TOML

[mysqld]

max_heap_table_size = 128M

tmp_table_size = 128M

innodb_buffer_pool_size = 1G


Reinicia MariaDB:

Bash


sudo systemctl restart mariadb

¿Deseas profundizar en alguna de estas tareas de mantenimiento?

Analizar el archivo cacti.log

Instalar y configurar Spine

Reparar gráficos con rrdtool tool

Cómo instalar y configurar Cacti en linux

 Le preguntamos a Gemini, la inteligencia artificial de Google, cómo instalar y configurar Cacti en linux

Explicanos detalladamente cómo instalar y configurar Cacti en linux

1.1. Instalar el Servidor Web, PHP y MariaDB:

Entorno LAMP + RRDTool y SNMP.


Instala el servidor web Apache, el motor de base de datos MariaDB, la herramienta de graficado RRDTool, los servicios de SNMP y las extensiones de PHP requeridas (ejemplo para Ubuntu/Debian):

Bash


sudo apt update && sudo apt install -y \

       apache2 mariadb-server rrdtool snmp snmpd git \

       php php-mysql php-snmp php-xml php-gd php-mbstring \

       php-gmp php-json php-ldap php-curl php-zip php-intl


2.2. Configurar MariaDB para los Requerimientos de Cacti:

Ajuste de parámetros InnoDB y zonas horarias.


Cacti exige parámetros específicos en el motor MariaDB para procesar e indexar tablas de métricas masivas sin cuellos de botella.Abre el archivo de configuración de MariaDB:

Bash


sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

Añade o edita los siguientes valores dentro de la sección [mysqld]:

Ini, TOML[mysqld]

character-set-server = utf8mb4

collation-server = utf8mb4_unicode_ci

max_heap_table_size = 128M

tmp_table_size = 128M

join_buffer_size = 64M

innodb_file_per_table = ON

innodb_buffer_pool_size = 512M

innodb_doublewrite = OFF


Importa la tabla de zonas horarias del sistema operativo a MariaDB:

Bash

sudo mysql_tzinfo_to_sql /usr/share/zoneinfo | sudo mysql -u root mysql

Reinicia MariaDB para aplicar los cambios:Bashsudo systemctl restart mariadb

3.3. Crear la Base de Datos y el Usuario de Cacti:

Permisos y carga del esquema inicial.


Inicia sesión en la consola interactiva de MariaDB:

Bash

sudo mysql -u root

Ejecuta las sentencias SQL para crear la base de datos y otorgar permisos:

SQL

CREATE DATABASE cacti CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

CREATE USER 'cactiuser'@'localhost' IDENTIFIED BY 'TuPasswordSegura123';

GRANT ALL PRIVILEGES ON cacti.* TO 'cactiuser'@'localhost';

GRANT SELECT ON mysql.time_zone_name TO 'cactiuser'@'localhost';

FLUSH PRIVILEGES;

EXIT;


4.4. Descargar Cacti e Importar la Estructura SQL:

Ruta /var/www/html/cacti y permisos de archivo.


Descarga e instala la última versión estable de Cacti:

Bash

cd /tmp

curl -LO https://www.cacti.net/downloads/cacti-1.2.28.tar.gz

sudo tar -xvf cacti-1.2.28.tar.gz -C /var/www/html/

sudo mv /var/www/html/cacti-1.2.28 /var/www/html/cacti


Importa la estructura de tablas inicial a la base de datos cacti:

Bash

sudo mysql -u cactiuser -p'TuPasswordSegura123' cacti < /var/www/html/cacti/cacti.sql

Asigna la propiedad de los archivos al usuario del servidor web (www-data):

Bash

sudo chown -R www-data:www-data /var/www/html/cacti/

5.5. Configurar Credenciales, PHP y la Tarea del Poller:

Ajustes de php.ini y ejecución cada 5 minutos.


Crea el archivo de configuración copiando la plantilla base:

Bash

sudo cp /var/www/html/cacti/include/config.php.dist /var/www/html/cacti/include/config.php

sudo nano /var/www/html/cacti/include/config.php


Asegúrate de definir las credenciales asignadas previamente:

PHP

$database_type = 'mysql';

$database_default = 'cacti';

$database_hostname = 'localhost';

$database_username = 'cactiuser';

$database_password = 'TuPasswordSegura123';

$database_port = '3306';


Ajusta los parámetros requeridos de memoria y zona horaria en tu archivo php.ini:

Bash

sudo nano /etc/php/$(php -r 'echo PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')/apache2/php.ini

Ini, TOMLdate.timezone = America/Mexico_City # Reemplaza por tu zona horaria

memory_limit = 512M

max_execution_time = 60


Reinicia Apache:

Bash

sudo systemctl restart apache2

Configura la tarea programada (cron) para recolectar datos mediante poller.php cada 5 minutos:

Bash

echo "*/5 * * * * www-data php /var/www/html/cacti/poller.php > /dev/null 2>&1" | sudo tee /etc/cron.d/cacti

6.:http://<IP_SERVIDOR

/cacti" title="6.Finalizar el Asistente de instalación Web">

Abre tu navegador web e ingresa a: http://<IP_DE_TU_SERVIDOR>/cacti/

Credenciales por defecto:

Usuario: admin

Contraseña: admin

Define una nueva contraseña segura cuando la interfaz te lo solicite.

El asistente de instalación (Installation Wizard) ejecutará un diagnóstico previo validando dependencias, permisos de lectura/escritura en carpetas (log/ y rra/) y parámetros de MariaDB. Confirma que todos los checks estén en color verde y avanza hasta finalizar la instalación.

Resumen de Rutas y Servicios Clave

ComponenteUbicación / ComandoFunción
Directorio de Cacti/var/www/html/cacti/Archivos fuente de la consola web.
Archivos de Gráficas (RRD)/var/www/html/cacti/rra/Almacenamiento de bases de datos RRD.
Logs de Recolección/var/www/html/cacti/log/cacti.logRegistro de actividad del poller y errores.
Proceso Poller/etc/cron.d/cactiAutomatización de recolección SNMP/Script.

¿Deseas optimizar la recolección o agregar dispositivos a Cacti?

Instalar Spine (Poller multihilo en C)

Monitorear Router / Switch MikroTik o Cisco

Configurar alertas por correo con el plugin THold

Qué es vsftpd

 Le preguntamos a gemini, la inteligencia artificial de Google, qué es vsftpd

Explicanos detalladamente qué es vsftpd

vsftpd (Very Secure FTP Daemon) es un servidor de transferencia de archivos basado en el protocolo FTP para sistemas operativos Linux y tipo Unix, diseñado específicamente para priorizar la seguridad, la estabilidad y el alto rendimiento. Es el servidor FTP por defecto en muchas de las distribuciones más populares, como RHEL, CentOS, Fedora, Debian y Ubuntu.

Arquitectura y Principios de Seguridad

A diferencia de los servidores FTP tradicionales diseñados en la década de 1990, vsftpd se escribió desde cero con un enfoque defensivo para prevenir la explotación de vulnerabilidades:

Separación de privilegios: El proceso con permisos de root se limita estrictamente a enlazar los puertos del sistema (como el puerto 21) y autenticar credenciales. Una vez establecida la conexión, la gestión de la sesión pasa a un proceso hijo sin privilegios en el sistema.

Aislamiento de carpetas (Chroot Jails): Confinará a los usuarios dentro de su directorio raíz asignado, impidiendo que puedan navegar hacia la raíz real del sistema (/) o acceder a archivos del sistema operativo.

Prevención contra desbordamientos de búfer: Su código evita estructuras complejas propensas a buffer overflows, reduciendo drásticamente la superficie de ataque ante ejecución remota de código.

Características Clave

CapacidadDescripción
Cifrado FTPSSoporta cifrado SSL/TLS (FTPS) para proteger tanto los comandos de autenticación como la transferencia de datos en tránsito.
Tipos de AutenticaciónPermite acceso anónimo (Anonymous FTP), usuarios reales del sistema operativo o usuarios virtuales aislados (mediante PAM o base de datos).
Control de TráficoPermite definir límites de ancho de banda por usuario o dirección IP (local_max_rate, anon_max_rate) para evitar saturaciones de red.
EscalabilidadGestiona miles de conexiones simultáneas con un impacto mínimo en el uso de memoria RAM y CPU.
Modos Activo y PasivoSoporta conexiones detrás de firewalls o NAT mediante la delimitación explícita de rangos de puertos pasivos.

Comparativa: vsftpd vs. Otros Servidores FTP

Servidor FTPFortaleza PrincipalCaso de Uso Ideal
vsftpdSeguridad extrema y velocidad. Mínimo consumo de recursos.Repositorios de software, servidores de alta carga, transferencia de imágenes de disco y entornos corporativos.
ProFTPDFlexibilidad. Configuración con sintaxis similar a Apache HTTPD (<Directory>).Hosting compartido con reglas granuladas y estructuras de permisos complejas por directorio.
Pure-FTPdGestión de usuarios. Excelente integración nativa con cuotas de disco y usuarios virtuales.Entornos web donde se requiere crear/borrar cuentas FTP dinámicamente sin tocar el sistema base.

Casos de Uso Típicos

Servidores de Respaldo y Clonación: Almacenamiento rápido de imágenes de disco enviadas por red mediante herramientas como G4U, Clonezilla o OpenWRT.

Repositorios Públicos de Software: Históricamente utilizado para servir espejos de distribuciones (como ftp.debian.org o ftp.redhat.com).

Automatización M2M ( Machine to Machin e): Dispositivos de red, cámaras IP, routers o escáneres que suben volcados de logs y copias de seguridad de forma automatizada.

¿Deseas profundizar en la administración de vsftpd?

Configurar cifrado FTPS (SSL/TLS)

Configurar Usuarios Virtuales con PAM

Diferencias entre FTP Activo y Pasivo

Cómo resolver problemas de Alerta en linux

 Le preguntamos a Gemini, la inteligencia artificial de Google, cómo resolver problemas de Alerta en linux

Explicanos detalladamente cómo resolver problemas de Alerta en linux

Resolver problemas en un entorno de Alerta en Linux requiere aislar la capa donde ocurre el fallo: la interfaz gráfica web (Frontend), la API de Flask/Gunicorn (Backend), la base de datos (PostgreSQL/MongoDB) o el proxy inverso (Nginx).

1. Protocolo y Ubicación de Logs para Diagnóstico

Antes de modificar configuraciones, debes verificar qué componente está generando el fallo revisando sus logs correspondientes:

ComponenteComando / Ubicación del LogPropósito del Diagnóstico
API Backend (Systemd)journalctl -u alerta -f -n 100Excepciones de Python, errores de sintaxis en alertad.conf, fallos al cargar plugins.
Errores de Gunicorn/var/log/alerta-error.logFallos de arranque del WSGI, workers colgados o falta de memoria.
Proxy Inverso (Nginx)/var/log/nginx/error.logErrores 502/504, problemas de resolución de nombres, límites de tamaño en POST.
Base de Datos (Postgres)/var/log/postgresql/postgresql-*-main.logErrores de autenticación de usuario, timeout de conexiones, tablas no encontradas.

2. Problema: Error "502 Bad Gateway" o "504 Gateway Timeout"

Este error indica que Nginx no puede comunicarse con el proceso de Alerta (Gunicorn) escuchando en el puerto interno (ej. 127.0.0.1:8080) o socket Unix.

Diagnóstico

Comprueba si el servicio alerta está activo:

Bash

systemctl status alerta

Verifica si el puerto local está en escucha:

Bash

ss -tlpn | grep 8080

Prueba la API directamente sin pasar por Nginx:

Bash

curl -i http://127.0.0.1:8080/api/management/healthcheck

Soluciones Frecuentes

Gunicorn está apagado:
Revisa errores de permisos en /etc/alertad.conf o rutas del entorno virtual de Python.

Conflicto de permisos en el socket/puerto: Si usas sockets Unix (/tmp/alerta.sock), asegúrate de que el usuario de Nginx (www-data o nginx) tenga permisos de lectura/escritura:

Bash

sudo chown www-data:www-data /tmp/alerta.sock

Límite de tiempo agotado (Timeout): Si la base de datos es lenta y responde después de 30s, aumenta el tiempo de espera en Nginx:

Nginx

proxy_read_timeout 90s;

proxy_connect_timeout 90s;


3. Problema: La Web UI carga en blanco o muestra "API Error / Network Error"

Ocurre cuando el navegador del usuario no logra consultar el endpoint de la API debido a una mala ruta en el cliente web o políticas de CORS.

Diagnóstico y Solución

Verificar el archivo de configuración de la UI (config.js):

Revisa /opt/alerta/webui/config.js (o la ruta donde instalaste el frontend):

JavaScript

window.config = {

     'endpoint': '/api', // Si usas proxy Nginx relativo. Si está en otro dominio:                                     'http://alerta.dominio.com/api'

     'provider': 'basic'

};


Ajustar CORS en el backend (/etc/alertad.conf):

Si la consola web y la API están en subdominios o puertos diferentes, debes autorizar el origen en la API:

Ini, TOML

CORS_ORIGINS = [

           'http://localhost',

           'http://alerta.tu-dominio.com',

           'https://alerta.tu-dominio.com'

]


Contenido Mixto (HTTP vs HTTPS):

Si la consola carga bajo https://, la propiedad endpoint en config.js debe ser HTTPS o relativa (/api). De lo contrario, los navegadores bloquean la petición HTTP implícitamente.

4. Problema: Errores de Base de Datos y Migraciones

Si en journalctl -u alerta aparecen errores como psycopg2.OperationalError o UndefinedTable: relation "alerts" does not exist.

Solución A: Fallo de Conexión a PostgreSQL

Valida la cadena de conexión en /etc/alertad.conf:

Ini, TOML

DATABASE_URL = 'postgres://alerta:TuPasswordSegura@127.0.0.1:5432/alertadb'


Prueba la conexión manual utilizando las mismas credenciales:

Bash

psql -h 127.0.0.1 -U alerta -d alertadb

Si usas PostgreSQL local, asegúrate de que el archivo /etc/postgresql/*/main/pg_hba.conf permita la autenticación md5 o scram-sha-256 para el usuario alerta en 127.0.0.1.

Solución B: Esquema Desactualizado o Tablas Faltantes

Si acabas de actualizar la versión de Alerta Server, debes ejecutar las migraciones de la base de datos:

Bash


# Activar entorno virtual

source /opt/alerta/venv/bin/activate

# Forzar migración del esquema

ALERTA_SVR_CONF_FILE=/etc/alertad.conf alerta-admin db migrate

5. Problema: Error al Cargar Plugins de Python

Al reiniciar Alerta, el servicio falla inmediatamente si hay un módulo nombrado en la directiva PLUGINS de /etc/alertad.conf que no está instalado en el entorno virtual.

Diagnóstico y Solución

Ejemplo de error en logs: ModuleNotFoundError: No module named 'alerta_amqp'.

Revisar plugins configurados:

Ini, TOML

PLUGINS = ['reject', 'amqp', 'telegram']


Instalar los paquetes correspondientes dentro del Venv:

Bash


/opt/alerta/venv/bin/pip install alerta-amqp alerta-telegram

Reiniciar el servicio:

Bash

sudo systemctl restart alerta

6. Problema: Bloqueo de Acceso / Pérdida de la API Key de Administrador

Si activas la autenticación (AUTH_REQUIRED = True) en /etc/alertad.conf sin haber generado previamente un usuario administrador o una clave API de acceso, quedarás bloqueado con errores 401 Unauthorized.

Solución: Generar una API Key de Administración por CLI

Puedes generar credenciales de rescate directamente desde el servidor sin necesidad de la interfaz web:

Bash

# 1. Exportar la ubicación de la configuración


export ALERTA_SVR_CONF_FILE=/etc/alertad.conf

# 2. Generar una API Key con privilegios de Administrador

/opt/alerta/venv/bin/alerta-admin key --admin --username "admin@tu-dominio.com" --text "Key de Emergencia"

El comando devolverá una clave alfanumérica larga. Guárdala y utilízala en tus peticiones CLI o en la cabecera HTTP:

Bash

alerta --api-key <TU_API_KEY_GENERADA>  get

Comandos Útiles de Mantenimiento de Alerta

Bash


# Verificar estado y conectividad general de la API


alerta status

# Limpiar o purgar alertas antiguas cerradas directamente en la BD

ALERTA_SVR_CONF_FILE=/etc/alertad.conf /opt/alerta/venv/bin/alerta-admin housekeep

# Probar envío rápido de una alerta para verificar el flujo de trabajo

alerta send -r "server01" -e "DiskFull" -s "critical" -t "Prueba de diagnóstico"

¿Deseas profundizar en algún tipo de fallo específico?

Depurar plugin específico (Telegram, Slack, Email)

Configurar HTTPS con Certbot / Let's Encrypt

Optimizar rendimiento de PostgreSQL para Alerta

Cómo instalar y configurar Alerta en linux

 Le preguntamos a Gemini, la inteligencia artificial de Google, cómo instalar y configurar Alerta en linux

Explicanos detalladamente cómo instalar y configurar Alerta en linux

Alerta es un sistema de consolidación, desduplicación y visualización de alertas en tiempo real diseñado para integrarse con múltiples herramientas de monitoreo (como Prometheus, Zabbix, Nagios, Grafana y Webhooks).

Su arquitectura consta de tres partes principales:

Alerta Server:
API en Python/Flask que procesa, correlaciona y almacena las alertas.

Base de Datos: PostgreSQL (recomendado) o MongoDB.

Alerta Web UI / CLI: Consola web en HTML5/JavaScript y cliente de línea de comandos para gestión de eventos.

1.1. Instalar Dependencias del Sistema y Base de Datos:

PostgreSQL + Python3 + Nginx.


Instala los paquetes base requeridos en tu servidor Linux (ejemplo para Ubuntu/Debian):

Bash

sudo apt update && sudo apt install -y \

python3-pip python3-venv python3-dev \

postgresql postgresql-contrib \

nginx curl git build-essential


Crea la base de datos y el usuario en PostgreSQL:

Bash

sudo -u postgres psql -c "CREATE USER alerta WITH PASSWORD 'TuPasswordSegura123';"

sudo -u postgres psql -c "CREATE DATABASE alertadb OWNER alerta;"

2.2. Crear Entorno Virtual e Instalar Alerta Server:

Entorno aislado en /opt/alerta.

Se recomienda instalar Alerta dentro de un entorno virtual de Python (venv) para evitar conflictos con librerías del sistema.

Bash

# Crear directorio y entorno virtual


sudo mkdir -p /opt/alerta

sudo chown -R $USER:$USER /opt/alerta

python3 -m venv /opt/alerta/venv


# Activar e instalar alerta-server, cliente y servidor WSGI (Gunicorn)

source /opt/alerta/venv/bin/activate

pip install --upgrade pip setuptools

pip install alerta-server alerta psycopg2-binary gunicorn


Verificación:
Ejecuta /opt/alerta/venv/bin/alerta-server --version para confirmar que se instaló correctamente.

3.3. Configurar el Servidor de Alerta:

/etc/alertad.conf.


Crea el archivo de configuración global /etc/alertad.conf:

Bash

sudo nano /etc/alertad.conf

Agrega la configuración básica con conexión a PostgreSQL:

Ini, TOML

# Configuración de Base de Datos

DATABASE_URL = 'postgres://alerta:TuPasswordSegura123@localhost:5432/alertadb'

DATABASE_NAME = 'alertadb'

# Seguridad y Clave Secreta (genera una clave aleatoria)

SECRET_KEY = 'cambia_esta_clave_por_una_cadena_larga_y_aleatoria'

# Autenticación (desactivada inicialmente para pruebas; activable con LDAP/Basic/OAuth)

AUTH_REQUIRED = False

CORS_ORIGINS = ['*']

# Plugins activos (ejemplo: desduplicación por defecto)

PLUGINS = ['reject']

Asegura permisos de lectura para el servidor web:

Bash

sudo chmod 644 /etc/alertad.conf

4.4. Descargar e Instalar Alerta Web UI:

Descarga de la consola web estática.


Descarga la versión compilada del frontend Web UI desde GitHub:

Bash

cd /tmp

# Descargar la última versión de la Web UI

curl -LO https://github.com/alerta/alerta-webui/releases/latest/download/alerta-webui.tar.gz

# Extraer en la ruta web de Alerta

sudo mkdir -p /opt/alerta/webui

sudo tar -xvf alerta-webui.tar.gz -C /opt/alerta/webui --strip-components=1


Crea el archivo de configuración del frontend /opt/alerta/webui/config.js:

Bash

sudo nano /opt/alerta/webui/config.js

JavaScriptwindow.config = {

'endpoint': '/api',

'provider': 'basic'

};


5.5. Crear el Servicio del Sistema (Systemd):

Servicio Systemd con Gunicorn.

Crea el archivo de unidad /etc/systemd/system/alerta.service para gestionar la API en segundo plano mediante Gunicorn:

Bash

sudo nano /etc/systemd/system/alerta.service

Ini, TOML[Unit]

Description=Alerta Server Engine

After=network.target postgresql.service



[Service]

User=www-data

Group=www-data

WorkingDirectory=/opt/alerta

Environment="ALERTA_SVR_CONF_FILE=/etc/alertad.conf"

ExecStart=/opt/alerta/venv/bin/gunicorn \

        --workers 4 \

        --bind 127.0.0.1:8080 \

        --access-logfile /var/log/alerta-access.log \

        --error-logfile /var/log/alerta-error.log \

        alerta.app:app



[Install]

WantedBy=multi-user.target


Ajusta permisos, habilita e inicia el servicio:

Bash


sudo chown -R www-data:www-data /opt/alerta

sudo systemctl daemon-reload

sudo systemctl enable --now alerta


Verificación: Ejecuta systemctl status alerta para comprobar que el estado sea active (running).

6.6. Configurar Nginx como Reverse Proxy:

Proxy inverso /api y estáticos.


Configura Nginx para servir la interfaz web y redirigir las peticiones /api al backend en el puerto 8080.

Crea /etc/nginx/sites-available/alerta:

Nginx

server {

      listen 80;

      server_name alerta.tu-dominio.com; # O la IP de tu servidor

 

      client_max_body_size 5M;

      # Interfaz Web UI

      location / {

             root /opt/alerta/webui;

             index index.html;

             try_files $uri $uri/ /index.html;

      }



      # API Backend

      location /api {

             proxy_pass http://127.0.0.1:8080;

             proxy_set_header Host $host;

             proxy_set_header X-Real-IP $remote_addr;

             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

             proxy_set_header X-Forwarded-Proto $scheme;

      }

}


Activa el sitio y reinicia Nginx:

Bash

sudo ln -s /etc/nginx/sites-available/alerta /etc/nginx/sites-enabled/

sudo nginx -t

sudo systemctl restart nginx


7.7. Validar la Instalación y Probar el Cliente CLI:

Envío de alerta de prueba.


Configura el cliente CLI alerta en tu terminal local para enviar tu primera alerta de prueba:

Bash


# Configurar la URL de la API para la CLI

export ALERTA_API_URL=http://localhost/api

 

# Enviar una alerta sintética de prueba

/opt/alerta/venv/bin/alerta send \

      --resource "srv-web-01" \

      --event "HighCPU" \

      --environment "Production" \

      --severity "major" \

      --service "WebSite" \

      --text "El uso de CPU supera el 90%"

Accede a tu navegador e ingresa a http://<IP_DE_TU_SERVIDOR>/. Deberás ver la consola de Alerta mostrando la alerta recién creada.

Resumen de Enrutamiento y Puertos


ComponenteDirección / Puerto InternoFunción
Nginx (Frontend + Proxy)http://<IP_SERVIDOR>:80/Sirve la consola Web UI y enruta /api.
API Gunicorn (Backend)[http://127.0.0.1:8080/api](http://127.0.0.1:8080/api)Procesa las alertas, desduplica y atiende integraciones.
PostgreSQLlocalhost:5432 (alertadb)Almacena el historial y estado de las alertas.

¿Qué integración o ajuste de seguridad deseas configurar a continuación?

Integrar con Prometheus / Alertmanager

Integrar con Zabbix

Activar Autenticación (LDAP / Basic / OAuth)

Cómo configurar un servidor vsftpd rápido en tu equipo Linux para que puedas recibir las imágenes de G4U sin problemas

 Le pedimos a Gemini, la inteligencia artificial de Google, cómo  configurar un servidor vsftpd rápido en tu equipo Linux para que puedas recibir las imágenes de G4U sin problemas

Explicanos detalladamente cómo  configurar un servidor vsftpd rápido en tu equipo Linux para que puedas recibir las imágenes de G4U sin problemas

1. Instalar vsftpd y Crear un Usuario Dedicado

Ubuntu/Debian: apt, RHEL/Rocky: dnf

Instala el paquete vsftpd y crea un usuario de sistema dedicado sin acceso a la shell interactiva para almacenar las imágenes de disco.

Instala el servidor FTP:

Bash

# En Ubuntu / Debian

sudo apt update && sudo apt install vsftpd -y

# En RHEL / Rocky / AlmaLinux

sudo dnf install vsftpd -y

Crea el usuario g4u asignando /sbin/nologin como shell por seguridad:

Bash

sudo useradd -m -s /sbin/nologin g4u

sudo passwd g4u


(Asigna una contraseña sencilla de recordar en el entorno local).

2 2. Preparar la Carpeta para las Imágenes

Propietario y permisos de escritura

Crea el directorio dentro del home del usuario g4u y ajusta los permisos para permitir la escritura del flujo continuo de datos FTP.

Bash


sudo mkdir -p /home/g4u/images

sudo chown -R g4u:g4u /home/g4u/images

sudo chmod 755 /home/g4u

sudo chmod 775 /home/g4u/images


3 3. Configurar vsftpd Optimizado para g4u

Ajustes críticos en /etc/vsftpd.conf

Edita /etc/vsftpd.conf (o /etc/vsftpd/vsftpd.conf en RHEL) reemplazando o ajustando las siguientes directivas para máxima velocidad de transferencia local sin estrangulamiento de banda.

Abre el archivo:

Bash

sudo nano /etc/vsftpd.conf

Asegúrate de incluir las siguientes líneas:

Ini, TOML

# Acceso y escrituras

anonymous_enable=NO

local_enable=YES

write_enable=YES

local_umask=022

# Seguridad y confinamiento de usuario

chroot_local_user=YES

allow_writeable_chroot=YES

# Configuración de modo pasivo (necesario si g4u está tras un switch/firewall)

pasv_enable=YES

pasv_min_port=40000

pasv_max_port=40100

# Desactivar límites de velocidad para maximizar la red (1Gbps/10Gbps)

local_max_rate=0

# Transferencias binarias por defecto

ascii_upload_enable=NO

ascii_download_enable=NO

4 4. Abrir Puertos en el Firewall

Puertos 20, 21 y rango pasivo 40000-40100

Permite las conexiones de control y datos en el firewall local.

Bash

# En Ubuntu / Debian (UFW)


sudo ufw allow 20/tcp

sudo ufw allow 21/tcp

sudo ufw allow 40000:40100/tcp

sudo ufw reload


# En RHEL / Rocky (firewalld)

sudo firewall-cmd --permanent --add-port=20-21/tcp

sudo firewall-cmd --permanent --add-port=40000-40100/tcp

sudo firewall-cmd --reload

Si usas SELinux en RHEL/Rocky, habilita la escritura en directorios chroot y home:

Bash

sudo setsebool -P ftpd_full_access 1

5 5. Iniciar el Servicio y Ejecutar la Carga desde g4u

systemctl restart vsftpd

Reinicia e inicializa el servicio FTP:

Bash

sudo systemctl restart vsftpd

sudo systemctl enable vsftpd


Desde el equipo cliente arrancado con la ISO/LiveCD de G4U, ejecuta el comando para clonar el disco completo hacia tu servidor Linux:

Bash

uploaddisk <IP_DE_TU_SERVIDOR_LINUX>  g4u /images/imagen_disco.gz wd0

(Donde wd0 o sd0 es el disco local del equipo cliente, g4u es el usuario FTP y /images/imagen_disco.gz la ruta de destino).

Verificación de rendimiento y logs en tiempo real

Si deseas monitorear la tasa de transferencia o verificar si la conexión desde el entorno NetBSD de g4u se estableció correctamente, ejecuta en tu servidor Linux:

Bash

sudo tail -f /var/log/vsftpd.log

¿Deseas continuar optimizando el proceso de clonación?

Comandos g4u para restaurar disco

Alternativas modernas como Clonezilla PXE

Cómo resolver problemas de Zimbra en linux

 Le preguntamos a Gemini, la inteligencia artificial de Google, cómo resolver problemas de Zimbra en linux

Explicanos detalladamente cómo resolver problemas de Zimbra en linux 

Resolver problemas en Zimbra Collaboration Suite ( ZCS ) requiere un enfoque metódico, ya que combina múltiples componentes integrados (OpenLDAP, Postfix, MariaDB/MySQL, Jetty/Java, ClamAV, SpamAssassin, Nginx). Un fallo en uno de ellos puede provocar una cadena de errores en el resto.

A continuación, te detallamos la guía sistemática para diagnosticar y solucionar los fallos más comunes en entornos Linux.

1. El Protocolo Inicial de Diagnóstico

Casi todas las tareas de solución de problemas deben realizarse con el usuario zimbra (no como root), exceptuando ajustes del sistema o permisos.

Pasos esenciales de verificación

:Cambiar al usuario Zimbra:

Bash

sudo su - zimbra

Comprobar el estado general de los servicios:

Bash

zmcontrol status

Revisar los archivos de registro (Logs) principales:

Log / RegistroUbicaciónContenido / Diagnóstico
Mailbox / Java/opt/zimbra/log/mailbox.logErrores de interfaz web, base de datos, memoria Java (Heap) y almacenamiento.
MTA / Postfix/var/log/zimbra.logLogs de envío/recepción de correo, rechazados, SPAM y autenticación SASL.
LDAP/opt/zimbra/log/ldap.logAutenticación de usuarios, consultas de libreta de direcciones y sincronización.
Nginx Proxy/opt/zimbra/log/nginx.access.log y nginx.error.logConexiones de usuarios web y errores de redirección HTTPS.
Antivirus / Spam/opt/zimbra/log/clamd.log y freshclam.logActualización de firmas e inspección de adjuntos.

2. Problema: Un servicio no inicia (zmcontrol status muestra "Stopped")

Caso A: Conflicto de puertos con servicios del sistema

Si instalaste actualizaciones o paquetes en el sistema operativo, es común que un Postfix u Apache nativo de Linux se active e intente ocupar los puertos de Zimbra.

Diagnóstico:

Bash


sudo netstat -tlpn | grep -E ':25|:80|:443|:389|:7071'

Solución:

Detén y deshabilita los servicios nativos que compitan con Zimbra:

Bash


sudo systemctl stop postfix apache2 nginx

sudo systemctl disable postfix apache2 nginx

sudo su - zimbra -c "zmcontrol restart"


Caso B: Almacenamiento lleno o Cuotas de Disco (df -h)

Zimbra detiene automáticamente el servicio de correo (mta / mailboxd) si la partición /opt/zimbra alcanza el 95% o 100% de capacidad.

Solución:

Identifica qué llena el disco:

Bash


du -sh /opt/zimbra/log/*

Borra o comprime logs antiguos:

Bash

sudo rm -rf /opt/zimbra/log/zmmailboxd.out.*

Revisa la cola de correos temporales congelados si el spool está saturado.

3. Problema: Certificados SSL Expirados o Corruptos

Es una de las causas principales para que mailboxd, nginx o mta dejen de arrancar repentinamente.

Verificación del certificado actual:

Bash


sudo su - zimbra

/opt/zimbra/bin/zmcertmgr checkproofs

Solución: Regenerar Certificados Autosellados de Emergencia

Si los certificados han caducado y el servicio está totalmente caído, puedes regenerar los certificados internos del sistema para restablecer el servicio de inmediato:

Genera la Autoridad Certificadora (CA) interna:

Bash


/opt/zimbra/bin/zmcertmgr createca -new

Genera e instala los certificados para el servidor:

Bash


/opt/zimbra/bin/zmcertmgr deployca

/opt/zimbra/bin/zmcertmgr deploycrt self -new


Reinicia la estructura de servicios:

Bash


zmcontrol restart

4. Problema: Errores en la Base de Datos MariaDB/MySQL de Zimbra

Si mailboxd se reinicia continuamente y en /opt/zimbra/log/mailbox.log observas errores como SQLException o Table marked as crashed.

Diagnóstico y Reparación:

Detén el servicio mailbox:

Bash

zmmailboxdctl stop

Ejecuta la verificación de integridad de las bases de datos de usuarios:

Bash

/opt/zimbra/libexec/zmdbintegrityreport

Si hay tablas corruptas, repáralas manualmente:

Bash

mysqlcheck -A --auto-repair -u root --socket=/opt/zimbra/data/tmp/mysql/mysql.sock

Reinicia el servicio de buzones:

Bash


zmmailboxdctl start

5. Problema: Cola de Correos Atascada (Mail Queue)

Si los usuarios pueden enviar correos pero estos no llegan a su destino o se quedan retenidos en la cola saliente.

Diagnóstico de la cola:

Bash


sudo su - zimbra

postqueue -p

O de forma detallada desde las utilidades de Zimbra:

Bash


/opt/zimbra/libexec/zqstatus

Solución:

Forzar el reintento de entrega de toda la cola:

Bash

postqueue -f

Eliminar todos los correos diferidos/spam atrapados en cola (Usar con precaución):

Bash

postsuper -d ALL deferred

Verificar si ClamAV bloquea el paso del correo por firmas desactualizadas:

Si en /var/log/zimbra.log observas clamd: ClamAV update required o fallos de conexión, actualiza las firmas manualmente:

Bash

zmantivirusctl stop

freshclam

zmantivirusctl start


6. Restablecer Contraseña de Administrador

Si perdiste el acceso a la consola de administración web ([https://mail.tu-dominio.com:7071](https://mail.tu-dominio.com:7071)), puedes cambiar la clave de cualquier cuenta desde la línea de comandos sin necesidad de reiniciar el servidor.

Bash

sudo su - zimbra

zmprov sp admin@tu-dominio.com NuevaContraseñaSegura123


Resumen de Comandos de Mantenimiento y Control

AcciónComando (Ejecutar como usuario zimbra)
Reiniciar todos los servicioszmcontrol restart
Iniciar/Detener solo Mailboxdzmmailboxdctl start / zmmailboxdctl stop
Iniciar/Detener el MTA (Postfix)zmmtactl start / zmmtactl stop
Limpiar la caché LDAP de Zimbrazmprov fc all
Revisar licencias o versiónzmcontrol -v

¿Qué aspecto específico deseas revisar o solucionar en tu entorno Zimbra?

Analizar error específico en log

Reparar certificado Let's Encrypt

Aumentar memoria RAM para Java (Heap Size)

Cómo instalar y configurar Zimbra en linux

 Le preguntamos a Gemini, la inteligencia artificial de Google, cómo instalar y configurar Zimbra en linux

Explicanos detalladamente cómo instalar y configurar Zimbra en linux

Zimbra Collaboration Suite (ZCS) es una plataforma de correo electrónico y trabajo colaborativo de clase empresarial que integra servidor SMTP/MTA, directorio LDAP, almacenamiento de buzones, antivirus/antispam (ClamAV/SpamAssassin) y una consola de administración web.

Requisitos Previos Mínimos

Sistema Operativo: Ubuntu 20.04 LTS / 22.04 LTS o Rocky Linux / RHEL 8 (instalación limpia sin otros servicios web o de correo).

Recursos de Hardware: Mínimo 8 GB de RAM (16 GB recomendados), 4 vCPUs y 50 GB de disco.

Dominio y Red:
Dirección IP estática con registros DNS tipo A y MX apuntando al servidor.

1 1. Configurar Hostname, /etc/hosts y Desactivar MTA de Fábrica

Prerrequisito de red


Zimbra valida que el FQDN del servidor coincida exactamente con la dirección IP local.

Asigna el FQDN completo al servidor:

Bash


sudo hostnamectl set-hostname mail.tu-dominio.com

Edita /etc/hosts asociando tu IP privada o pública con el FQDN (asegúrate de remover la entrada 127.0.1.1):

Plaintext

192.168.1.100 mail.tu-dominio.com mail


Detén y deshabilita cualquier servidor SMTP previo (como Postfix) para liberar el puerto 25:

Bash


sudo systemctl stop postfix

sudo systemctl disable postfix


Verificación: Ejecuta hostname -f en la terminal. Debe devolver exactamente mail.tu-dominio.com.

2 2. Configurar Servidor DNS Local (dnsmasq / Split-DNS)

Evita errores en el instalador


Zimbra requiere realizar una resolución MX interna sobre su propio nombre durante la instalación.

Instala dnsmasq:

Bash


sudo apt update && sudo apt install dnsmasq -y

Configura la resolución local en /etc/dnsmasq.conf:

Plaintext

server=8.8.8.8

domain=tu-dominio.com

mx-host=tu-dominio.com,mail.tu-dominio.com,5

host-record=mail.tu-dominio.com,192.168.1.100


Reinicia el servicio DNS:

Bash


sudo systemctl restart dnsmasq

Verificación:
Ejecuta dig mx tu-dominio.com @127.0.0.1. Debe responder indicando como servidor MX a mail.tu-dominio.com apuntando a 192.168.1.100.

3 3. Descargar y Extraer el Paquete de Zimbra CS

Descarga de instalador


Descarga el paquete oficial de Zimbra correspondiente a tu versión de distribución Linux:

Bash

cd /tmp

wget https://files.zimbra.com/downloads/8.8.15_GA/zcs-8.8.15_GA_3869.UBUNTU20_64.20200918102202.tgz

tar -xvf zcs-*.tgz

cd zcs-*


Verificación
: Ejecuta ls -l install.sh dentro del directorio extraído para confirmar que el script ejecutable está listo.

4 4. Ejecutar el Instalador Interactivo

./install.sh

Inicia el asistente con privilegios de superusuario:


Bash

sudo ./install.sh

Acepta los contratos de licencia marcando Y.

Confirma la instalación de los paquetes core recomendados (zimbra-core, zimbra-ldap, zimbra-logger, zimbra-mta, zimbra-snmp, zimbra-store, zimbra-apache, zimbra-spell, zimbra-memcached, zimbra-proxy).

Cuando el script indique Change domain name? [YES], presiona YES e ingresa tu dominio principal (tu-dominio.com).

Verificación: El instalador avanzará hasta presentar el menú de opciones numeradas.

5 5. Configurar Contraseña de Administración y Aplicar Cambios

Menú de configuración


En el menú interactivo, selecciona la opción 6 (zimbra-store).

Selecciona la opción 4 (Admin Password).

Ingresa la contraseña segura que usará el usuario admin.

Presiona r para volver al menú principal.

Presiona a para aplicar la configuración (Apply changes), confirma la escritura de datos e inicia el proceso de compilación.

Verificación:
El instalador finalizará con el mensaje "Configuration complete - press return to exit".

6 6. Iniciar y Verificar Servicios de Zimbra

zmcontrol statu
s

Accede con la cuenta de usuario del sistema zimbra creada durante la instalación:

Bash


sudo su - zimbra

zmcontrol status


Si algún servicio está detenido, inicialízalo con:

Bash

zmcontrol start

Verificación: El comando zmcontrol status debe mostrar todos los demonios (ldap, mta, mailbox, proxy, snmp, spell, stats) en estado Running.

7 7. Habilitar Puertos en el Firewall y Acceso Web

Apertura de red


Abre los puertos necesarios para el tráfico de correo y consolas web:

Bash


sudo ufw allow 80,443,25,465,587,110,995,143,993,7071/tcp

Consola Web de Usuarios: [https://mail.tu-dominio.com](https://mail.tu-dominio.com)

Consola de Administración: [https://mail.tu-dominio.com:7071](https://mail.tu-dominio.com:7071) (Usuario: admin@tu-dominio.com)

Verificación:
Accede en un navegador a [https://mail.tu-dominio.com:7071](https://mail.tu-dominio.com:7071) y verifica que cargue el panel de inicio de sesión de Zimbra Admin.

¿Qué paso deseas realizar a continuación en tu servidor Zimbra?

Instalar Certificado SSL Let's Encrypt

Resolver errores en zmcontrol status

Configurar registros SPF, DKIM y DMARC

Ads by CJ - Linux Foundation

Share This