{{tag> zabbix housekeeping borrar clean mysql datos obsoletos }}
===== HouseKeeping =====
Una de los mayores problemas que podemos tener es que nuestra base de datos de zabbix se coma el espacio en disco disponible de nuestra máquina.
Por ejemplo si hacemos una búsqueda en nuestro sistema de ficheros con un tamaño grande sudo find / -type f -size +1000M -print
Nos encontramos que las tablas /var/lib/mysql/zabbix/history_uint.ibd y /var/lib/mysql/zabbix/trends_uint.ibd son ficheros muy grandes. Normalmente es un síntoma de que los parámetros de almacenamiento de datos los tenemos definidos en unos valores altos y en muchos casos no hace falta almacenar tanto.
Para cambiar el número de eventos y alertas que mantenemos guardados tenemos que ir a al menú **Administration->General** y en el desplegable de la derecha seleccionar **Housekeeping**.
Nos aparecerá una pantalla donde podemos elegir el número de días que queremos mantener almacenados
{{ :seguridad:monitorizacion:zabbix3:housekeeping.png?nolink&900 |}}
==== Borrar datos obsoletos ====
Para liberar espacio podemos ejecutar un script que elimine los datos anteriores a una fecha determinada
script original de [[http://www.michaelfoster82.co.uk/zabbix-database-cleanup-delete-old-data/| Michael Foster]]
-- intervals in days
SET @history_interval = 7;
SET @trends_interval = 90;
DELETE FROM alerts WHERE (UNIX_TIMESTAMP(NOW()) - clock) > (@history_interval * 24 * 60 * 60);
DELETE FROM acknowledges WHERE (UNIX_TIMESTAMP(NOW()) - clock) > (@history_interval * 24 * 60 * 60);
DELETE FROM events WHERE (UNIX_TIMESTAMP(NOW()) - clock) > (@history_interval * 24 * 60 * 60);
DELETE FROM history WHERE (UNIX_TIMESTAMP(NOW()) - clock) > (@history_interval * 24 * 60 * 60);
DELETE FROM history_uint WHERE (UNIX_TIMESTAMP(NOW()) - clock) > (@history_interval * 24 * 60 * 60);
DELETE FROM history_str WHERE (UNIX_TIMESTAMP(NOW()) - clock) > (@history_interval * 24 * 60 * 60);
DELETE FROM history_text WHERE (UNIX_TIMESTAMP(NOW()) - clock) > (@history_interval * 24 * 60 * 60);
DELETE FROM history_log WHERE (UNIX_TIMESTAMP(NOW()) - clock) > (@history_interval * 24 * 60 * 60);
DELETE FROM trends WHERE (UNIX_TIMESTAMP(NOW()) - clock) > (@trends_interval * 24 * 60 * 60);
DELETE FROM trends_uint WHERE (UNIX_TIMESTAMP(NOW()) - clock) > (@trends_interval * 24 * 60 * 60);
Copiamos el script a /var/lib/mysql/borrardatosviejos.sql
Ejecutamos el script mediante alguno de los siguientes métodos:
* mysql -u usuario -p zabbix < borrardatosviejos.sql
* mysql -u usuario -p zabbix y después source borrrardatosviejos.sql;
* mysql -u usuario -p zabbix y después \. borrardatosviejos.sql;
===== Referencias =====
* http://machinenoise.org/2014/cleaning-up-the-zabbix-database.html
*