martes, 26 de mayo de 2009

Backup BBDD Zabbix sin histórico

En la BBDD de Zabbix tenemos almacenado tanto la configuración de este como el histórico de los valores que vamos recogiendo.

El histórico de Zabbix es el que va aumentando durante la vida de nuestro servidor y lo que hace que la copia de la base de datos a veces sea muy lenta.

Nos podemos encontrar con la necesidad de crear un Zabbix de test con la misma configuración que el de producción pero sin datos o simplemente vaciar el histórico para aumentar la velocidad o el espacio de disco.

Lo primero que vamos hacer es extraer el listado de tablas de nuestro zabbix a un archivo:

mysql -p zabbix -e 'show tables' > tables.txt

Ahora exportaremos los datos de la BBDD exceptuando las tablas history:

grep -v Tables ./tables.txt | grep -v history | xargs mysqldump -p zabbix > backup.sql

Y con esto ya tenemos una copia de nuestro Zabbix sin el histórico lista para importar donde queramos.

Zabbix 1.6.5 SO: Ubuntu 9.04

8 comentarios:

  1. es una muy buena forma, otra mucho mas larga (pero solo usando mysqldump):

    mysqldump -p zabbix --ignore-table=history --ignore-table=history_log --ignore-table=history_str_sync
    --ignore-table=history_sync --ignore-table=history_text --ignore-table=history_uint
    --ignore-table=history_uint_sync

    en mi caso tampoco suelo hacer backup de las tablas trend

    --ignore-table=trends --ignore-table=trends_uint

    ResponderEliminar
  2. Hola de nuevo Owen,

    Me han pedido que haga un entrada explicando el uso de cada tabla de la BBDD de Zabbix.

    Tienes algo de documentación al respecto?

    Un abrazo,

    Oriol Serra

    ResponderEliminar
  3. A ver si entre los dos podemos ir sacandolo:
    - acknowledges: donde se alojan los comentarios cuando un problema es conocido/confirmado.
    - actions: donde se alojan las acciones con su asunto, texto
    - alerts: el historial de alertas, enviado correo a tal, sms a tal, con el asunto del mensaje
    - applications: poco que decir, donde se alojan las aplicaciones (repetidas para cada host)
    - auditlog: lo que se muestra en administracion -> auditoria -> audit logs
    - conditions: relaciona una accion con una condicion
    - config: solo una fila con distintas configuraciones (tiempo de refresco, periodo de trabajo.. etc, configuraciones de la web)
    - dchecks: comprobacion de "discovery" (descubrir)
    - drules: reglas para "discovery"
    - dservices: ? algo de servicios de discovery pero nunca lo he utilizado
    - escalations: registra las "escalaciones" a otro usuario cuando no puedes solucionar un problema
    - events: donde se guarda el estado de los eventos, su fecha y el valor (on, off, unknown) y si esta ack (confirmado/conocido)
    - functions: donde se guarda una relacion de host (maquina) / item (elemento) / lanzador (trigger) y funcion (last, nodata, diff..)
    - graphs: donde se guardan los datos de la grafica (alto, ancho, nombre.. )
    - graphs_items: relacion entre grafica y elemento (item) y otros valores de la relacion (lineas, color..)
    - groups: grupos de usuarios/maquinas
    - help_items: la descripcion de los items (elementos)
    - history y history_*: se guarda la historia de los valores que se reciben de los hosts (maquinas)
    - hosts: las maquinas, su nombre, ip y distintos valores
    - hosts_groups: relacion entre maquinas y grupos
    - hosts_profiles: donde se alojan los perfiles de las maquinas
    - hosts_profiles_ext: idem que el anterior pero cuando se crea un perfil mas avanzado
    - hosts_templates: relacion entre maquinas y plantillas
    - housekeeper: esta tabla la tengo vacia, pero en teoria deberia contener cada cuanto es el maximo de dias que se contiene por cada tabla
    - httpstep: los pasos que se siguen en configuracion->web
    - httpstepitem: relaciona la tabla anterior con la tabla de items (elementos)
    - httptest: se guardan los test (ultima comprobacion, proxima comprobacion, periodo entre comprobaciones, aplicacion relacionada..)
    - httptestitem: relaciona la tabla anterior con la tabla de items (elementos)
    - ids: es una tabla para saber el id de cada tabla, me imagino que es por compatibilidad con pgsql (que no tiene auto_increment, sino secuencias)

    ResponderEliminar
  4. - images: las imagenes en un camplo blob
    - items: los elementos (system.uptime, proc.num[], etc) con configuraciones generales (tiempo del historial, tiempo de tendencia, template..)
    - items_applications: relacion de elementos (items) con las aplicaciones
    - mappings: donde se guardan los "mapeos" (0 = off, 1 = on, etc)
    - media: relacion de usuarios/acciones y severidad (enviar sms a tal usuario cuando el problema es de alerta urgente, por ej.)
    - media_type: los medios para enviar alertas (email pues su smtp, direccion de remitente; modem pues su puerto ttyS; script el nombre del script alojado en /etc/zabbix/alert.d/
    - node_cksum: ? algo del checksum pero la tengo vacia
    - nodes: ? algo de nodos, no lo utilizo
    - opconditions: vacia
    - operations: esta tengo que investigarla
    - profiles: parece una tabla interna para distintas configuraciones (periodos de graficas, graficas favoritas.. )
    - proxy_dhistory/proxy_history: historial del proxy (1.6)
    - rights: permisos para los grupos
    - screens: nombre de la pantalla y su tamaño
    - screens_items; los mapas/elementos que se muestra dentro de las pantallas (screens)
    - scripts: aplicaciones que se pueden ejecutar en las maquinas
    - service_alarms, services, services_links, services_items: ?
    - sessions: donse aloja el sessionid (identificador de la sesion) para cada usuario
    - slides: donde se guardan configuracion -> screens -> slides
    - sysmaps: los mapas en si con el tamaño y configuraciones del titulo
    - sysmaps_elements: los elementos dentro de cada mapa
    - sysmaps_link_triggers, sysmaps_links: ?
    - trends, trends_uint: donde se aloja la tendencia de los elementos (items) en los ultimos X dias
    - trigger_depends: dependencia de los triggers (yo nunca lo he usado)
    - triggers: los triggers con la condicion para que se lance y la plantilla/host a la que se relaciona
    - users: los usuarios
    - users_groups: relacion usuarios/grupos
    - usrgrp: ?
    - valuemaps: ? parecen etiquetas para los mapas

    ResponderEliminar
  5. Gracias por la info OWEN. En breves creo una entrada explicando las tablas.

    Un abrazo,
    Oriol

    ResponderEliminar
  6. Buena información. Gracias por compartirla.

    ResponderEliminar
  7. Gracias por la info. Muy rápida y fácil de implementar.
    ¿Cual seria el procedimiento correcto para recuperar los datos? Debemos crear una bbdd zabbix vacia? y luego restaurar. ¿Esto nos crearía las tablas de history vacias? Basta con hacer un mysqldump < backup.sql

    Gracias por anticipado.

    ResponderEliminar
  8. Hola necesitamos crear informes personalizados utilizando datos de zabbix cual seria la mejor manera? Gracias

    ResponderEliminar