Pandora: Documentation es: Gestion y Administracion Server

From Pandora FMS Wiki
Jump to: navigation, search

Volver a Indice de Documentacion Pandora FMS

1 Mantenimiento de los servidores de Pandora FMS

1.1 Gestión de la base de datos

La infraestructura de Pandora FMS no necesita mantenimiento externo, pero es muy importante purgar y depurar los datos antiguos, y mantener compactada la base de datos. Existe una herramienta esencial para el buen funcionamiento de Pandora FMS. Esta herramienta se debe lanzar solo una vez por noche, si dispone de varios servidores fisicos, láncela desde uno de ellos. Esta herramienta se debe lanzar desde un sistema donde haya un servidor de Pandora FMS, si tiene dos sistemas y en uno de ellos tiene el servidor y en otro la consola, ejecútelo desde el servidor donde tiene el servidor de Pandora FMS. Esta herramienta está en:

/usr/share/pandora_server/util/pandora_db.pl

Esta herramienta, en adelante pandora_db.pl está incluida en el paquete del servidor de Pandora FMS.

Esta herramienta realiza todas las tareas de mantenimiento de bases de datos de forma automática y es esencial para el funcionamiento correcto de Pandora FMS por lo que debe asegurarse que funciona correctamente. Sus funciones son las siguientes:

  • Elimina datos antiguos.
  • Compacta datos existentes, interpolándolos en varios intervalos, de tal modo que los gráficos sean los mismos pero el espacio necesario para almacenarlos sea muchísimo menor (esta es una de las razones por las que Pandora FMS es capaz de procesar tanta información).
  • Verifica la consistencia de la base de datos para módulos no existentes, o para módulos que no se usen porque no pueden ser iniciados (Esos módulos aparecen en la vista tácnica como módulos no inicializados).
  • Elimina la información diaria de contacto del agente. Pandora FMS no necesita más de 24hr de históricos de contacto por agente, y si se acumula, ralentiza mucho el acceso a la base de datos.
  • En la versión enterprise, mueve todos los datos antiguos a la base de datos auxiliar de histórico.

Esta tarea debería realizarse todas las noches, y es muy importante hacerla, tómese su tiempo para entenderlo y fijar la tarea cron. En la instalación debería haberse programado correctamente, pero debe comprobar que esto ha sido así. En este capítulo explicaremos como se debe programar manualmente y así podrá comprobar si la instalación en su sistema está funcionando debidamente.

Para instalar esta herramienta en sistemas Linux estándar, se recomienda el siguiente procedimiento.

  • Cree un fichero llamado /etc/cron.daily/pandora_db que contenga las siguientes líneas:
#!/bin/bash
/usr/share/pandora_server/util/pandora_db.pl /etc/pandora/pandora_server.conf
  • Cambie los permisos del fichero:
 chmod 750 /etc/cron.daily/pandora_db
  • Cambie el propietario del fichero:
 chmod root:root /etc/cron.daily/pandora_db
  • Recargue la configuración de cron:
/etc/init.d/cron reload

A partir de ahora, cada noche se ejecutará la herramienta de mantenimiento de Base de datos de Pandora FMS, asegurando que la base de datos está siempre en un estado óptimo.

Finalmente, para asegurarse de que lo ha dejado todo correctamente configurado, o para asegurar que el sistema, después de la instalación ha programado correctamente la herramienta, ejecútela manualmente una vez:

/etc/cron.daily/pandora_db

Debería mostrar un mensaje como este (puede que con menos información, en función de su nivel de verbosity en el fichero de configuración de Pandora FMS):

Pandora FMS DB Tool 3.0-dev PS090930 Copyright (c) 2004-2008 Artica ST
This program is Free Software, licensed under the terms of GPL License v2
You can download latest versions and documentation at http://www.pandorafms.org
Pandora DB now initialized and running (PURGE=60 days, COMPACT=15 days, STEP=1) ... 

Starting at 2009/10/10 02:02:18
[PURGE] Deleting old event data (More than 60 days)... 
[PURGE] Deleting old data... 
[PURGE] Delete old data (string) ... 
[PURGE] Delete pending deleted modules (data table)...
[PURGE] Delete pending deleted modules (data string table)...
[PURGE] Delete pending deleted modules (data inc  table)...
[PURGE] Delete pending deleted modules (status, module table)...
[PURGE] Delete old session data 
[PURGE] Delete old data from SNMP Traps 
[PURGE] Deleting old access data (More than 24hr) 
[CHECKDB] Deleting non-init data... 
[CHECKDB] Checking database consistency (Missing status)... 
[CHECKDB] Checking database consistency (Missing module)... 
[CHECKDB] Deleting non-existing module 1189 in state table 
[CHECKDB] Deleting non-existing module 1190 in state table 
[COMPACT] Compacting data until 2009092502:02:18
Ending at 2009/10/10 02:02:31

1.2 Ejecución manual de la herramienta de mantenimiento

Se puede ejecutar manualmente la herramienta de mantenimiento una vez creado el script, su uso es muy sencillo, desde una consola shell ejecutar:


Template warning.png

En sistemas instalados esto puede llevar horas, se recomienda dejar el proceso en segundo plano

 


/usr/share/pandora_server/util/pandora_db.pl /etc/pandora/pandora_server.conf

Para ejecutar manualmente la herramienta de mantenimiento y dejarla en segundo plano, ejecutar:

nohup /usr/share/pandora_server/util/pandora_db.pl /etc/pandora/pandora_server.conf

El proceso llevará algún tiempo hasta que se cargue completamente en segundo plano, después se podrá cerrar la ventana de la consola shell sin problemas, mientras que el proceso se seguirá ejecutando.

Info.png

En algunas instalaciones el directorio de las herramientas puede variar, la más común es:

/usr/share/pandora_server/util/

En las versiones anteriores de Pandora FMS, puede encontrarse en:

/usr/share/pandora/util/

 


Es importante que se asegure de utilizar la versión actual de la herramienta, y no la de una versión anterior. Si ejecuta el programa sin argumentos, mostrará la versión de la herrmienta en la cabecera del mensaje.

1.3 Respaldo (Backup) de la base de datos

Un simple comando, mysqldump realizará un volcado de los contenidos de la base de datos. Para restaurar los datos será necesario una base de datos vacía con el mismo nombre que la original (generalmente Pandora).

Hacer el respaldo

mysqldump -u root -p pandora > /backup/pandoradb_backup.sql

Restaurar el respaldo

mysql -u root -p
create database pandora;
use pandora;
source /backup/pandoradb_backup.sql

Probablemente también sea necesario establecer permisos de nuevo al usuario de la consola:

grant all privileges on pandora.* to [email protected] identified by 'mypassword';

Si se quiere hacer un backup completo del sistema, no se debe olvidar hacer un backup de todo el directorio /etc/pandora para guardar la información de configuración de los agentes locales y de los servidores.

Es importante destacar que esto SOLO realiza un backup/restauración de los ficheros de base de datos.


1.4 Respaldo y recuperación completa de Pandora FMS

Existe un script en la distribución del servidor de Pandora FMS que sirve para hacer un backup y una restauración completa de todo Pandora FMS. Este script esta pensado para hacer copias y restauración en sistemas donde el servidor y la consola se ubican en la misma máquina. Si en su entorno hay diferentes componentes, deberá utilizar la herramienta con los parámetros mas adecuados para su uso o modificarlos para que se adapten a sus circunstancias.

Para que pueda hacer sus tareas, este script necesita ejecutarse como root.

Este script está ubicado en:

/usr/share/pandora_server/util/pandora_backup.sh 

Si lo ejecutamos sin parámetros nos dará una ayuda:

Pandora FMS Command line backup tool. http://www.pandorafms.org
(c) 2009 Sancho Lerena <[email protected]>, Artica Soluciones Tecnologicas

Syntax:
		-c Path to Pandora FMS console, p.e: /srv/www/htdocs/pandora_console
		-d Destination path for backup file. p.e: /tmp
		-s Source filename for backup restore. p.e: /tmp/pandorafms
		-f Restore also files
		-q Quiet. No output message (used for scripts/cron)
 		-b No database backup/restore


Please BE SURE TO USE RESTORE (-s) option. This will OVERWRITE ALL your
PandoraFMS install, including files, configuration and data. Please backup first!

Este script está diseñado para hacer copias de seguridad y restauración de los siguientes componentes:

  • Fichero(s) de configuración del servidor.
  • Ficheros(s) pendientes de ejecución, así como ficheros de configuración remotos de los agentes.
  • BBDD completa.
  • Consola WEB completa.

Opciones de origen y destino de la copia

Este script obtiene las credenciales de acceso a la BBDD directamente de la configuración de la consola WEB, por ello hay que pasar, con el parámetro -c el path completo a la consola WEB. Ese mismo parámetro sirve también para indicarle donde encontrará la consola WEB para hacer backup de ella.

El destino del backup se especifica con el parámetro -d. En ese path dejará el fichero de backup, comprimido, con un nombre similar a pandorafms_backup_xxxxxxx.tar.gz.

La fuente origen de la restauración es el nombre y path completos al fichero generado de backup generado por esta misma herramienta.

Restauración de ficheros, no sólo de datos

La opción -f permite restaurar también los ficheros (sobreescribiendo los actuales) de una copia de seguridad, no restaurando los datos de la base de datos. Dado que sobreescribir los ficheros actuales de configuración puede tener consecuencias serias, es necesario utilizar -f si queremos proceder a una recuperación de un backup y queremos que restaure todos los ficheros de Pandora (Consola y servidor).

Restauración de ficheros, sin datos

De la misma manera que la opción anterior, podemos restaurar únicamente los ficheros, sin volcar los datos. Para ello se utiliza la opción -b.

Restauración de datos, sin ficheros

Es la opción por defecto, para ello no tendrá que utilizar ni la opción -b ni la opcion -f.

1.4.1 Ejemplos de uso

Crear backup

Ejecutar como root:

/usr/share/pandora_server/util/pandora_backup.sh -c /var/www/pandora3 -d /tmp/ 

Devolverá algo similar a:

Backup completed and placed in /tmp//pandorafms_backup_2009-10-10-01-35-31.tar.gz

Esto indica que el backup está en /tmp//pandorafms_backup_2009-10-10-01-35-31.tar.gz

Restaurar backup

Para restaurar el backup de forma automática, se supone que tiene una consola con las credenciales de autenticacion sobre la BBDD definidas correctamente.

Ejecutar como root:

/usr/share/pandora_server/util/pandora_backup.sh -c /var/www/pandora3_broken/ -s /tmp/pandorafms_backup_2009-10-10-01-35-31.tar.gz 

Devolverá algo similar a:

Detected Pandora FMS backup at /tmp/pandorafms_backup_2009-10-10-01-35-31.tar.gz, please wait...
Dropping current database
Restoring backup database
Restoring files and configuration
Done. Backup in /tmp/pandorafms_backup_2009-10-10-01-35-31.tar.gz restored

Restaurar backup en caso de desastre

Si ha perdido la consola de Pandora FMS pero conserva un backup generado por esta herramienta, primero tendra que regenrar el directorio de la consola. Para ello, descomprima manualmente su backup:

cd /tmp
tar xvzf pandorafms_backup_2009-10-10-0

Esto descompromirá en /tmp el directorio completo de su consola WEB, en el caso del backup generado en el ejemplo anterior, crea un directorio llamado:

/tmp/var/www/pandora3/

Copie el contenido de todo ese directorio a su directorio de publicación web, que puede variar en función de la distribución que use:

cp -R var/www/pandora3 /var/www

Luego restaure el backup de manera ordinaria.

1.5 Arranque/parada manual de los servidores de Pandora FMS

Para arrancar y/o parar de forma manual el servidor de Pandora FMS se ha de ejecutar lo siguiente en una consola shell:

Parar el demonio:

/etc/init.d/pandora_server stop

Iniciar el demonio:

/etc/init.d/pandora_server start

Reiniciar el demonio:

/etc/init.d/pandora_server restart

1.6 Watchdog para los servidores de Pandora FMS

En el repositorio de código existe un pequeño script que se utiliza como "perro guardian" (Watchdog). Este script realiza una monitorización de Pandora (quien monitoriza al que monitoriza?). De esta forma podemos realizar una operacion de recuperación (intentar levantar Pandora), y si esta falla, podemos avisar del suceso.

1.6.1 pandora_watchdog.sh

#!/bin/bash
# Copyright (c) 2005-2012 Artica ST
# Author: Sancho Lerena <[email protected]> 2009
# Licence: GPL2
#
# daemon_watchdog
#
# Generic watchdog to detect if a daemon is running. If cannot restart, execute
# a custom-user defined command to notify daemon is down and continues in
# standby (without notifying / checking) until daemon is alive again.  

# Default configuration is for Pandora FMS Server daemon 

# =====================================================================
# Configuration begins here. Please use "" if data contain blank spaces 

export DAEMON_WATCHDOG=pandora_watchdog.sh
# DAEMON_WATCHDOG: Name of this script. Used to check if its running already

export DAEMON_CHECK="/usr/bin/pandora_server /etc/pandora/pandora_server.conf"
# DAEMON_CHECK: Daemon monitored, please use full path and parameters like
#               are shown doing a ps aux of ps -Alf

export DAEMON_RESTART="/etc/init.d/pandora_server restart"
# DAEMON_RESTART: Command to try to restart the daemon

export DAEMON_DEADWAIT=90
# DAEMON_DEADWAIT: Time this script checks after detect that
#                  daemon is down before to consider is really down. 

export DAEMON_ALERT="/usr/bin/pandora_alert"
# DAEMON_ALERT: Command/Script executed if after detecting daemon is down,
#               and waiting DAEMON_DEADWAIT, and daemon continues down.

export DAEMON_LOOP=7
# DAEMON_LOOP: Interval within daemon_wathdog checks if daemon is alive.
#              DO NOT use values under 3-5 seconds or could be CPU consuming.
#              NEVER NEVER NEVER use 0 value or gets 100% CPU!.

# Configuration stop here
# =====================================================================

# Check if another instance of this script

RUNNING_CHECK=`ps aux | grep "$DAEMON_WATCHDOG" | grep -v grep |wc -l`
if [ $RUNNING_CHECK -gt 2 ]
then
        echo "Aborting, seems that there are more '$DAEMON_WATCHDOG' running in this system"
        logger $DAEMON_WATCHDOG aborted execution because another watchdog seems to be running
        exit -1
fi


# This value always must be 0 at start. Do not alter
export DAEMON_STANDBY=0

# This function replace pidof, not working in the same way in different linux distros
function pidof_daemon () (
        # This sets COLUMNS to XXX chars, because if command is run
        # in a "strech" term, ps aux don't report more than COLUMNS
        # characters and this will not work.
        COLUMNS=300
        DAEMON_PID=`ps aux | grep "$DAEMON_CHECK" | grep -v grep | tail -1 | awk '{ print $2 }'`
        echo $DAEMON_PID
) 

# Main script 
 
if [ ! -f `echo $DAEMON_CHECK | awk '{ print $1 }'` ]
then
        echo "Daemon you want to check is not present in the system. Aborting watchdog"
        exit
fi

while [ 1 ]
do

        DAEMON_PID=`pidof_daemon`
        if [ -z "$DAEMON_PID" ]
        then

echo "Checkpoint #1 $DAEMON_PID "

                if [ $DAEMON_STANDBY == 0 ]
                then 

                        # Daemon down, first detection
                        # Restart it !

                        logger $DAEMON_WATCHDOG restarting $DAEMON_CHECK
                        $DAEMON_RESTART 2> /dev/null > /dev/null

                        # Just WAIT another DAEMON_DEADWAIT before consider it DEAD 

echo "Going to DAEMON_DEADEWAIT"

                        sleep $DAEMON_DEADWAIT
                        DAEMON_PID=`pidof_daemon`

                        if [ -z "$DAEMON_PID" ]
                        then

                                # Is dead and can't be restarted properly. Execute alert

echo "I cannot startup again the process"

                                logger $DAEMON_WATCHDOG $DAEMON_CHECK is dead, alerting !
                                $DAEMON_ALERT  2> /dev/null > /dev/null 

                                # Watchdog process puts in STANDBY mode until process get alive again
                                logger $DAEMON_WATCHDOG "Entering in Stabdby mode"

                                DAEMON_STANDBY=1
                        fi
                fi
        else

echo "Checkpoint #1B $DAEMON_PID "

                DAEMON_STANDBY=0
        fi

        sleep $DAEMON_LOOP
done

1.6.2 /usr/bin/pandora_alert

Este es el script que actúa cuando el proceso watchdog no puede levantar al proceso que monitoriza (pandora). En nuestro caso, además de avisar mediante un SMS, desactiva Tentacle.

Habra que darle persmisos con chmod 750 /usr/bin/pandora_alert


#!/bin/bash
sendsms +34458474843 "Se ha caido el servidor de Pandora y no se puede levantar"
/etc/init.d/tentacle_serverd stop


1.6.3 Arranque del watchdog

Supongamos que se ha copiado el watchdog a la ubicacion /usr/bin/pandora_watchdog.sh. Se lanzaría de la siguiente manera:

nohup /usr/bin/pandora_watchdog.sh &

1.6.4 Consideraciones

Tener un watchdog corriendo en el sistema puede provocar consecuencias desagradables si no tenemos en cuenta que existe un watchdog. Si por ejemplo queremos desconectar Pandora para hacer un mantenimiento, automáticamente el watchdog lo levantará de nuevo, por lo que nos volveremos "locos" si no paramos primero el watchdog.

1.7 Base de datos de histórico

Una base de datos de histórico es una base de datos a la que se mueven datos antiguos de módulos para mejorar la respuesta de la base de datos principal de Pandora FMS. Estos datos seguirán estando disponibles para la consola de Pandora FMS de forma transparente al ver informes, gráficas de módulos etc.

1.7.1 Configurando una base de datos de histórico

Para configurar una base de datos de histórico siga los siguientes pasos:

  • Cree la nueva base de datos de histórico.
  • Cree las tablas necesarias en la nueva base de datos. Puede utilizar el script pandoradb.sql incluido en la consola de Pandora FMS:
cat pandoradb.sql | mysql -u user -p -D history_db
  • En la consola de Pandora FMS vaya a Setup > Setup > History database y configure el host, port, database name, user y password de la nueva base de datos.



History db conf.png



Los datos con más días de antigüedad se moverán a la base de datos de histórico en bloques de Step filas, esperando Delay segundos entre un bloque y el siguiente para evitar sobrecargas.

Info.png

Ésta es una característica de la versión Enterprise

 


1.7.2 Configurando la gestion del purgado y compactación de la base de datos de histórico

La base de datos de histórico se supone que contiene "todos los datos" del sistema (sin límite), pero si quiere borrar datos o compactarlos de la base de datos de historico, necesitará ejecutar el script pandora_db usando unos datos "trucados" y un fichero de configuración falso, para hacerle creer al script que está trabajando con una base de datos "normal".

El primer paso, es meter algunos datos en la tabla "tconfig" de su base de datos de histórico. Utilice estas consultas SQL para crear una configuración minima, y configurar el comportamiento de pandora_db al ejecutarse contra la BBDD de histórico. Primero, necesita conectar a su BBDD usando el CLI de MySQL.

Este es un ejemplo, reemplace los valores conforme a sus criterios (pero deje history_db_enabled a cero):

INSERT INTO `tconfig` VALUES (1,'days_purge','180');
INSERT INTO `tconfig` VALUES (2,'history_db_enabled','0');
INSERT INTO `tconfig` VALUES (3,'days_compact','120');
INSERT INTO `tconfig` VALUES (4,'step_compact','1');

Este ejemplo, es para que la bbdd de historico almacene en total seis meses desde la fecha de ejecución, y compacte datos con más de 4 meses. Si tiene un mes en su bbdd principal, en total tendrá datos para seis meses, ya que el último mes no tiene datos en la bbdd de histórico pero si en la principal. Puede poner aquí cualquier valor, no hay límite en el almacenamiento de la bbdd de histórico. Simplemente recuerde que la base de datos de histórico debe estar en un servidor físico independiente de la bbdd principal y de Pandora.

Segundo, necesita crear un fichero pandora_server.conf adicional, utilice esta version "reducida" que le proponemos para crear el suyo propio, y llámelo /etc/pandora/pandora_server_history_db.conf :

dbengine mysql
dbname pandora4_history
dbuser pandora4_history
dbpass 1234
dbhost 192.168.50.23
log_file /var/log/pandora/pandora_db_history.log

Ahora ya puede ejecutar la herramienta pandora_db contra la configuración de la bbdd de histórico:

/usr/share/pandora_server/util/pandora_db.pl /etc/pandora/pandora_server_history_db.conf

Este proceso NO DEBERIA afectar a la operacion principal, ya que está ejecutándose contra una BBDD diferente en un servidor diferente.

Volver a Indice de Documentacion Pandora FMS