Cacti – Poller ERROR: A DB EXEC Failed!,Error:’1017′

Hace algunos días tuvimos problemas con el Cacti, David Toribio me echó un cable y encontró el problema en el log de Cacti. Al parecer, hay un bug relativo al tamaño del archivo de log en cuestión. Cuando llega a 2 Gigas, se produce un error y Cacti no puede mostrar nada en las gráficas. Justo el día siguiente, en medio de una incidencia de otro tipo, el disco duro de un server se llenó, lo que provocó la segunda incidencia con el mismo Cacti en una semana. Pero ahora sabía donde buscar, y el error estaba algo docuementado por los foros de Cacti.

El error se detecta cuando se dejan de generar correctamente las gráficas. Podemos buscar en los archivos de log del sistema, apache o Php. En este caso era un error relativo a MySQL. La falta de disco provoca la desaparición, literalmente, de una de las tablas de la base de datos de Cacti.

# cat /var/www/cacti/log/cacti.log | grep Error

CMDPHP: Poller[0] ERROR: A DB Exec Failed!, Error:'1017'

# cat /var/www/cacti/log/cacti.log | grep poller_out

01/22/2009 05:15:11 PM - CMDPHP: Poller[0] ERROR: A DB Exec Failed!, Error:'1017',
SQL:"insert into poller_output ...

Aquí vemos como se queja al añadir datos en la tabla poller_out. Es la tabla que ha sido afectada por el bug. Si listamos los archivos de mysql .MYI, veremos que el correspondiente a poller_out no está. En algunos casos, usuarios del Cacti informan que pudieron repararlo con la sentencia REPAIR.

mysql> REPAIR TABLE poller_output;

Otros dicen que con USE_FRM se pudo regenerar la tabla.

I looked up the reference manual and worked out how to do a REPAIR TABLE USE_FRM to re-create the .myi file.

En mi caso no funcionó, siempre me devolvía que no encontraba la tabla poller_output.MYI. Una opción “vaga” como la denominó un forero, era copiar los archivos poller_output.* de otro servidor MySQL de Cacti y copiarlos al servidor con errores. Luego ejecutar un

mysql>Delete from poller_output where 1

Con lo que dejaríamos la tabla vacía pero la estrucutura estaría restaurada. Entonces leí la solución más sencilla y lógica, restaurar la tabla poller_output mediante sentencia de MySQL, tomándola del archivo cacti.sql que es el que genera la estructura de la base de datos.

--
-- Table structure for table `poller_output`
--
DROP TABLE IF EXISTS `poller_output`;
CREATE TABLE `poller_output` (
`local_data_id` mediumint(8) unsigned NOT NULL default '0',
`rrd_name` varchar(19) NOT NULL default '',
`time` datetime NOT NULL default '0000-00-00 00:00:00',
`output` text NOT NULL,
PRIMARY KEY (`local_data_id`,`rrd_name`,`time`)
) TYPE=MyISAM;
--
-- Dumping data for table `poller_output`
--
LOCK TABLES `poller_output` WRITE;
/*!40000 ALTER TABLE `poller_output` DISABLE KEYS */;
/*!40000 ALTER TABLE `poller_output` ENABLE KEYS */;
UNLOCK TABLES;

Links

6 thoughts on “Cacti – Poller ERROR: A DB EXEC Failed!,Error:’1017′

  1. Rubén,

    Great article. It was extremely useful to me. Congratulations!!!

    Regards,
    Rodrigo

  2. aparece el error:

    1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'TYPE=MyISAM' at line 1

    y se soluciona cambiando

    TYPE=MyISAM

    por

    ENGINE=MyISAM

Leave a Reply

Your email address will not be published. Required fields are marked *