Instalación de packages de check_mk. Oracle RMAN package.

Introducción.

Check_mk incluye lo que denomina “packages” que son paquetes de archivos con un formato estándar para check_mk (que define este, claro) y te permiten de forma “sencilla” crear, instalar, actualizar y eliminar nuevos plugins y/o addons que son portables entre diferentes instalaciones de cmk. En la siguiente página de documentación de cmk podemos ver información al respecto.

check_mk_package_rman

Existe una página http://exchange.check-mk.org/ donde hay disponibles packages que crean los usuarios y que parece algunos de ellos acaban formado parte de futuras versiones.
Vamos a ver como se usan e instalan dichos paquetes probando uno de ellos que nos proporciona información de los backups realizados con RMAN en nuestros servidores de Oracle.

Necesitamos tener instalado previamente el plugin check_mk de Oracle en el destino (además del agente check_mk claro) tal como  describíamos en el artículo “Monitorizar oracle con Nagios y Check_mk“.

De momento parece que el check de “serie” estará disponible en las nuevas versiones “i” (06/11/2013) pero en nuestro caso tenemos el check_mk de omddistro v1 que es versión 1.2.2 y no lo incluye. En cualquier caso este chequeo es compatible con nuestra versión y se puede bajar e instalar. Lo bajamos de la web de check_mk Exchange: buscamos oracle_rman plugin (Check MK).

El formato del plugin es empaquetado de check_mk . Lo copiamos a una carpeta donde tengamos acceso con nuestro usuario de check_mk (omd) correspondiente.

Revisar si ya está instalado.

Si usamos omd / omddistro el paquete se instalará en el SITE por lo que si tenemos varios sites tendriamos que desplegarlo para los que lo necesitemos.

Revisamos primero si lo tuviéramos ya instalado por si acaso :

check_mk -P list | grep oracle

Si estuviera ya instalado podemos obtener más información de él:

$ check_mk -P show oracle_rman 
Package file: /omd/sites/xunta/var/check_mk/packages/oracle_rman
Name: oracle_rman
Version: 2.0
Packaged on Check_MK Version: 1.2.2p2
Required Check_MK Version: 1.2.2
Title: oracle_rman plugin
Author: Marco Lenhardt marco.lenhardt@ontec.at
Download-URL: http://exchange.check-mk.org/
Files: web(2) doc(0) checkman(1) pnp-templates(1) agents(4) checks(1)
Description:
 oracle rman backup check

Instalación del package.

Lo instalamos con el siguiente comando (no proporciona información al instalarlo):

check_mk -P install oracle_rman-2.0.mkp

Echamos un ojo a ver que ha instalado en nuestro Site (si no tenemos omd/omddistro será nuestro directorio de instalación de check_mk):

$ find /opt/omd/sites/misite -name oracle_rman
/opt/omd/sites/misite/var/check_mk/packages/oracle_rman
/opt/omd/sites/misite/local/share/check_mk/checkman/oracle_rman
/opt/omd/sites/misite/local/share/check_mk/agents/plugins/oracle_rman
/opt/omd/sites/misite/local/share/check_mk/checks/oracle_rman

Tenemos entonces los siguientes archivos:

./checkman/oracle_rman (Info, página man)
./agents/plugins/oracle_rman (el agente a copiar en srv a chequear) – > 2 plugins, para 10.1 y para 10.2 y superior.
./checks/oracle_rman (el chequeo en sí mismo)
Copiaremos a nuestro servidor de Oracle a chequear, en el que ya tenemos instalado el plugin de Oracle, el nuevo plugin adicional (./agents/plugins/oracle_rman). Se lo copiamos en la carpeta de plugins donde están nuestros plugin. Para localizarla rápidamente:

# grep MK_LIBDIR /usr/bin/check_mk_agent
export MK_LIBDIR="/usr/lib/check_mk_agent"
PLUGINSDIR=$MK_LIBDIR/plugins
LOCALDIR=$MK_LIBDIR/local

Por tanto debemos copiarlo en: /usr/lib/check_mk_agent/plugins

Nos queda realizar una modificación en el fichero que usa el plugin check_mk de Oracle (instalado previamente) para conectarse a nuestra BBDD /etc/check_mk/sqlplus.sh. Debemos añadir un par de líneas que fuercen el formato de salida NLS correcto ya que si no, no funcionará. Un ejemplo:

#!/bin/bash
ORACLE_SID=$1
if [ -z "$ORACLE_SID" ] ; then
 echo "Usage: $0 ORACLE_SID" >&2
 exit 1
fi
export ORACLE_SID=$ORACLE_SID
export ORACLE_UNQNAME=orclpre
export ORAENV_ASK=NO
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
#export NLS_LANG=SPANISH_SPAIN.UTF8
export PATH=${PATH}:${ORACLE_HOME}/bin
export NLS_LANG=american_america.AL32UTF8
export NLS_DATE_FORMAT=DD.MM.YYYY-HH24:MI:SS
su nagios -c "sqlplus -s /"

Reinventaríamos ya nuestro host desde chek_mk como siempre con -II y nos debería mostrar adicionalmente ya el chequeo de rman:

$ cmk –II Oracle_server
 ..
 oracle_logswitches 1 new checks
 oracle_rman 1 new checks
 oracle_sessions 1 new checks
 oracle_tablespaces 12 new checks
 oracle_version 1 new checks….

Es posible que tengamos que ejecutar el escaneo una segunda vez. El plugin genera un fichero caché con los resultados en /etc/check_mk/oracle_rman_oracleSID.cache y en el primer escaneo a veces no devuelve resultados.

Podemos debugear el resultado si algo no funciona para ver la salida que nos da el agente para los chequeos de rman en la sección correspondiente:

$ cmk -d Oracle_server
 <<<oracle_rman>>>
 Oracle_server COMPLETED 05.11.2013-23:00:03 05.11.2013 .33 757.20M 757.197754
 Oracle_server COMPLETED 04.11.2013-23:00:06 04.11.2013 .32 740.55M 740.550293
 Oracle_server COMPLETED 03.11.2013-23:00:03 03.11.2013 .3 480.76M 480.762207
 ….

Reiniciamos cmk y listo, ya debemos tener nuestro chequeo en Nagios.
cmk –R

check_mk_package_rman

Parámetros para modificar los intervalos por defecto

En el archivo man del paquete (.local/share/check_mk/checkman/check_rman) tenemos información específica de los parámetros por defecto que podemos modificar en nuestros archivos mk que afectan a dichos chequeos. Lo ejemplos:

# Configurar valores globales por defecto para la duración de los backups.
# a 18 horas para warning y 20 horas para critical
oracle_rman_duration_default_levels = (18.0, 20.0)

# Configurar los valores por defecto para el ultimo backup correcto
# a 2 días para warning y tres días para critical
oracle_rman_last_backup_default_levels = (2, 3)

# Establecer intervalos más bajos para Sistemas de producción
# mediante tags (tag “prod”)
check_parameters += [
( ((4.0, 6.0), (1, 3)) [ ‘prod’ ], ALL_HOSTS, [ “ORA RMAN .*” ])
]

Posibles problemas.

Puede ser que al chequear al host Oracle no añada resultados del plugin rman. Si existe en el servidor de Oracle el fichero /etc/chek_mk/oracle_rman.found es que ha localizado correctamente el plugin. Además nos crea un fichero /etc/check_mk/oracle_rman_orclpro1.cache con los resultados de la ejecución del plugin.
Podemos ver también en modo debug con “cmk –d servidor” que aparezca la sección “<<<oracle_rman>>>”. Si aparece, es que el plugin aparentemente está ok pero es posible que no esté devolviendo datos la consulta a las tablas de rman. Siempre podemos coger la sentencia sql que hay en el plugin y ejecutarlo a mano en la máquina.

select decode(status, 'COMPLETED WITH WARNINGS', 'WARNINGS', status), 
start_time, end_time, round(ELAPSED_SECONDS/60/60,2) DURATION_HR, 
OUTPUT_BYTES_DISPLAY, OUTPUT_BYTES/1024/1024 OUTPUT_BYTES_MB from sys.V_$RMAN_BACKUP_JOB_DETAILS 
where ( input_type ='DB FULL' or input_type='DB INCR' ) and end_time>(sysdate -7) order by 2 desc;

Puede pasar que el intervalo de tiempo por defecto de los últimos 7 días no sea suficiente ya que busca DB_FULL y DB INCR y estos se realicen menos a menudo (se realizan de los ARCHIVE LOG). Podemos ejecutar la query con sqlplus para comparar resultados.

Conclusiones.

Como siempre check_mk nos sorprende con buenas ideas con este tema de los “packages”. Aunque en la página de Check_mk Exchange los packages que aparecen no siempre tienen muy buena documentación es un recurso más donde buscar ese plugin que nos hace falta para monitorizar algo concreto. Además si existe algo similar a lo que necesitamos no parece muy complicado adaptarlo a nuestras necesidades.

 

También pueden interesarte otros artículos relacionados con la monitorización de Oracle:

 

Leave a Reply

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

*

Comment moderation is enabled. Your comment may take some time to appear.