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 linuxPara 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:
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
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>
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>
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