Monitoring Weblogic with Munin

Primero de todo tenemos que extraer los datos de HEAP, CPU y Daemons & Threads del adminserver de nuestro dominio Weblogic. Posteriormente dejamos estos datos en un fichero para que el script de munin (3 en total) recoja dichos datos y sean enviados al servidor.

Extraer datos de Weblogic.

Para hacer esto usaremos el conocido jython. Para hacerlo crearemos un script en el cron que se ejecute cada 5 min;

 

crontab -l

*/5 * * * * /usr/share/munin/scripts/weblogic_plugin.sh > /dev/null 2>&1

 

Este script se conectará al Admin, ira por cada uno de los managed server (incluso el Admin). Y sacara los datos dejándolos en un fichero de texto. En nuestro caso;

/wls/export_wls_status.sh

El script weblogic_plugin.sh es;

/opt/jrmc/bin/java -cp /opt/bea/wls/weblogic.jar weblogic.WLST /usr/share/munin/scripts/weblogic_py_script_DOMAIN1.py  > /wls/export_wls_status

/opt/jrmc/bin/java -cp /opt/bea/wls/weblogic.jar weblogic.WLST /usr/share/munin/scripts/weblogic_py_script_DOMAIN2.py >> /wls/export_wls_status

 

Nota!!

Quizás tendréis que modificar el directorio del binario de java (/opt/jrmc/bin/) así como del fichero weblogic.jar (/opt/bea/wls/) en función de vuestra configuración.

 

Este script de cron sacará todos los datos, pero el que realmente se conecta al Weblogic es el script weblogic_py_DOMAIN.py Este script es;

username = ‘usuario’

password = ‘password’

URL=’t3://localhost:1111′

connect(username,password,URL)

domainConfig()

domini=cmo.getName()

serverList=cmo.getServers();

domainRuntime()

cd(‘/ServerLifeCycleRuntimes/’)

for server in serverList:

name=server.getName()

cd(name)

serverState=cmo.getState()

cd(“/ServerRuntimes/”+server.getName()+”/JVMRuntime/”+server.getName())

sizeHP=cmo.getHeapSizeCurrent()

usedHP=cmo.getUsedHeap()

proces=cmo.getAllProcessorsAverageLoad()

timegc=cmo.getLastGCEnd()

daemon=cmo.getNumberOfDaemonThreads()

thread=cmo.getTotalNumberOfThreads()

 

print domini,’PRO’,  name,’SizeHPWLS ‘,sizeHP

print domini,’PRO’,  name,’UsedHPWLS ‘,usedHP

print domini,’PRO’,  name,’ProcesWLS ‘,proces

print domini,’PRO’,  name,’TimeGCWLS ‘,timegc

print domini,’PRO’,  name,’DaemonWLS ‘,daemon

print domini,’PRO’,  name,’ThreadWLS ‘,thread

 

domainConfig()

domainRuntime()

cd(‘/ServerLifeCycleRuntimes/’)

 

Una vez tenemos los datos en un fichero de texto podremos tratarlo. Dejo un ejemplo de cómo se queda el fichero con los datos:

 

DOMAIN1 PRO AdminServer SizeHPWLS  536870912

DOMAIN1 PRO AdminServer UsedHPWLS  454807648

DOMAIN1 PRO AdminServer ProcesWLS  0.0806008984095334

DOMAIN1 PRO AdminServer TimeGCWLS  1380632745493

DOMAIN1 PRO AdminServer DaemonWLS  51

DOMAIN1 PRO AdminServer ThreadWLS  52

DOMAIN1 PRO DOMAIN1_01 SizeHPWLS  1610612736

DOMAIN1 PRO DOMAIN1_01 UsedHPWLS  1199548792

DOMAIN1 PRO DOMAIN1_01 ProcesWLS  0.08062796813666061

DOMAIN1 PRO DOMAIN1_01 TimeGCWLS  1380629744340

DOMAIN1 PRO DOMAIN1_01 DaemonWLS  42

DOMAIN1 PRO DOMAIN1 _01 ThreadWLS  43

 

Para tratar el fichero crearemos un script en /usr/share/munin/plugins/ con el nombre que se quiera, en mi caso MANAGED_DOMAIN1_HEAP

El fichero básicamente hace un grep del dato que se quiera y lo devuelve. Para el HEAP busca SizeHPWLS, para daemons y threads DaemonWLS  y ThreadWLS y para CPU busca ProcesWLS

 

#!/bin/sh

case $1 in

config)

cat <<‘EOM’

graph_title Managed Servers Heap DOMAIN1_1

graph_vlabel HEAP USE/MAX

DOMAIN1_1_Size.label DOMAIN1_1 Max

DOMAIN1_1_Use.label DOMAIN1_1 Use

graph_scale yes

graph_category weblogic

graph_info Grafica Weblogic DOMAIN1_1 Heap Managed Servers

EOM

exit 0;;

esac

echo -n “P DOMAIN_1_Size.value ”

grep SizeHPWLS /wls/export_wls_status | grep DOMAIN1_1 | awk ‘{print $5}’

echo -n ” DOMAIN_1_Use.value ”

grep UsedHPWLS /wls/export_wls_status | grep DOMAIN1_1| awk ‘{print $5}’

 

Creamos el enlace simbólico;

cd /etc/munin/plugins

ln –s MANAGED_DOMAIN1_HEAP  /usr/share/munin/plugins/MANAGED_DOMAIN1_HEAP

Reiniciamos el agente

/etc/init.d/munin-node restart

Y en unos minutos ya lo tenemos en nuestro servidor

 

HEAP

Descarga de scripts: Weblogic & Munin Scripts

 

Como instalar Oracle Weblogic en RedHat

Como instalar Oracle Weblogic en RedHat

Descripción:

Primero descargamos el software. En mi caso al querer instalar la versión de 64bits tengo que descargar el JRockit (JVM) y el Weblogic por separado. Si quisieramos usar el de 32bits ya hay un paquete que lo permite “Linux x86 with 32-bit JVM (1.2 GB)”

Descarga:

Para descargar la JVM Oracle JRockit 6 – R28.2.5
http://www.oracle.com/technetwork/middleware/jrockit/downloads/index.html

Para descargar el Oracle Weblogic 10.3.3 64Bits
http://www.oracle.com/technetwork/middleware/weblogic/downloads/wls-for-dev-1703574.html

El listado de versiones que hay es extenso. En mi caso sera;

Oracle WebLogic Server 11gR1 (10.3.3) + Coherence – Package Installer Additional Platforms (For 64-bit  JVM Support, See Note Above) (Generic 921Mb)

Instalación:

JRockit:

[root@weblogic ~]# chmod +x jrockit-jdk1.6.0_37-R28.2.5-4.1.0-linux-x64.bin
[root@weblogic ~]# ./jrockit-jdk1.6.0_37-R28.2.5-4.1.0-linux-x64.bin

Selecionamos el directorio de instalación:direcotry_jrockit

Vamos a validar que la instalacion es correcta;

[root@weblogic bin]# pwd
/opt/jrockit-jdk1.6.0_37-R28.2.5-4.1.0/bin
[root@weblogic bin]# ./java -version
java version “1.6.0_37”
Java(TM) SE Runtime Environment (build 1.6.0_37-b06)
Oracle JRockit(R) (build R28.2.5-20-152429-1.6.0_37-20120927-1915-linux-x86_64, compiled mode)

Weblogic 10.3:

[root@weblogic bin]# /opt/jrockit-jdk1.6.0_37-R28.2.5-4.1.0/bin/java -jar /root/wls1033_generic.jar -log=/logs/wls_install.log
Extracting 0%……………………………………………………………………………………….100%

El directorio de los binarios de Weblogic (No de los servidores o dominio)

12

Selecionamos la JVM que queremos usar;

primer

 

El directorio del DOMINIO

primer111

Configuración:

Cuando finalize ejecutaremos el QuickStart para la creación del domini, servidores etc…

2

El tipo de servidor con su JVM

22222222

Y finalmente que partes del Weblogic vamos a instalar. En mi caso pondemos el AdminServer (Consola), crearemos un Cluster con una maquina y crearemos un servidor (Instancia)

333333

Creamos un servidor (INSTANCIA)

4

Creamos un MACHINE que es donde van a correr los servidores y NodeManager

11

Creamos un cluster, que sera un conjunto de machines que a su vez son un conjunto de servidores (instancias)

5

Creamos el AdminServer (Consola de administración)

6

Asignamos los servidores a las maquinas

1

Asignamos los servidores al cluster

9

Iniciar/conectar al servidor:

Ya ya tendremos nuestro servidor configurado.

Iniciamos la instancia de Weblogic con el script /wlscfg/BUS/startWebLogic.sh

start

Nota! Podemos tener problemas al iniciar la instancia si nos pide usuario y contraseña. Para resolverlo seguimos este procedimiento

startup

Ahora accedemos a la consola http://servidor:7001/console con usuario: weblogic pass: weblogic1

console

Weblogic user password on startup

Por defecto el Weblogic solicita el usuario y password de la instancia de AdminServer al arrancar. Como se inicia con un nohup tendremos que pasarle dicho usuario.

startup

Para hacerlo crearemos el fichero boot.properties en un nuevo directorio llamado “security” dentro de la instancia;

mkdir /wls/DOMINIO/servers/AdminServer/security/
vi /wls/DOMINIO/servers/AdminServer/security/boot.properties

Dentro pondremos con texto plano y al iniciar por primera vez la instancia esta va a encreiptar los datos;

password=C0ntra$eña
username=U$uari0

Ahora si iniciamos la instancia con el script

/wls/DOMINIO/startWebLogic.sh

Ahora el arranque ya será correcto