miércoles, 22 de enero de 2014

Configuración de dominio WebLogic (2a Parte) - Node Manager básico

Esta es la segunda parte del post Configuración de Dominio WebLogic, en el que de manera básica creamos y configuramos un dominio WebLogic.

WebLogic Server incluye un servicio extra denominado Node Manager que nos brinda los siguientes beneficios:
  • Administración del ciclo de vida de los servidores WebLogic, incluyendo el servidor de administración. Nos permite iniciar, detener, pausar o reiniciar las instancias WebLogic.
  • Monitoreo de los servidores WebLogic para determinar su estatus, teniendo la capacidad de reiniciarlos automáticamente.
  • Nos permite administrar el ciclo de vida de los servidores desde la Consola de Administración WebLogic. Si los servidores WebLogic no tienen un Node Manager asociado no pueden ser manejados desde la Consola.
  • Esta habilitado para recuperar los archivos log de los servidores, útil en escenarios en donde por razones de seguridad la Consola de Administración no esta disponible y/o no tenemos acceso al sistema de archivos.
  • En arquitecturas de alta disponibilidad registra e inicia las direcciones de IP, flotantes, para los servidores manejados, etc.
En el post anterior (Configuración de Dominio WebLogic) durante la creación del dominio se realizo la asignación de una máquina a los servidores WebLogic, requisito para la administración con Node Manager. De manera lógica, una maquina establece un enlace entre uno o más servidores WebLogic y un Node Manager.

Desde la Consola de Administración también podemos realizar dicha asociación cuando el dominio ya fue creado. Realiza los siguientes pasos para asociar una máquina a un servidor WebLogic desde la Consola de Administración.
  1. Crear una máquina con la dirección IP y puerto de un servicio Node Manager, el cual será el responsable para administrar el servidor WebLogic. En este ejemplo creo una máquina de tipo Unix y Plain (Plano, dado que no vamos a utilizar SSL). 
  2. En la sección de configuración del Servidor WebLogic, seleccionar la máquina con la que se desea asociar.


El objetivo de esta entrada es ejemplificar como podemos comenzar a trabajar con Node Manager una vez que nuestros servidores WebLogic ya están asociados a una maquina.

Por default, la instalación WebLogic genera un directorio "home" en el que se encuentran todos los archivos de configuración para ejecutar un servicio Node Manager. Este directorio se encuentra en la siguiente ruta:
$NM_HOME= $MW_HOME/wlserver_10.3/common/nodemanager

Nota: Inicialmente este directorio cuenta con un sólo archivo (nodemanager.domains), el resto se puede auto-generar después de iniciar por primera vez el servicio.

1. Nos aseguramos que nuestro dominio esta registrado en el Node Manager. Abrimos el archivo nodemanager.domains y lo comprobamos, por ejemplo:

--- nodemanager.domains ---
#Domains and directories created by Configuration Wizard
#Fri Dec 21 14:56:30 CST 2012
jupiter_domain=/opt/oracle/mw/user_projects/domains/jupiter_domain
-------------------------------

2. Iniciamos el servicio Node Manager con la dirección IP y puerto que especificamos en la configuración de la maquina asociada a los servidores WebLogic.

Para iniciar el servicio debemos ir a la ruta $MW_HOME/wlserver_10.3/server/bin y ejecutar el script startNodeManager.sh, por ejemplo:

$./startNodeManager.sh 10.1.120.50 15556

Si el servicio inicia correctamente deberíamos ver algo como lo siguiente:




Detenemos el servicio con sólo teclear Ctrl + C.

Comprobamos que el programa generó los archivos de configuración del Node Manager. En nuestro NM_HOME estarán los siguientes archivos:
nm_data.properties
nodemanager.domains
nodemanager.log
nodemanager.properties

4. En este ejemplo voy a editar el archivo nodemanager.properties para modificar los siguientes parámetros:

Parámetro
Descripción
Valor por defecto
Nuevo valor
SecureListener
El servicio Node Manager requiere SSL.
true
false
CrashRecoveryEnabled
Mantiene el estado de ejecución (detenido, en ejecución) de los servidores WebLogic después de un reinicio del sistema operativo.
false
true
StartScriptEnabled
Utiliza el script startWebLogic.sh o startWebLogic.cmd para iniciar los servidores WebLogic.
false
true

Nota: El parámetro SecureListener obliga al Node Manager a utilizar SSL lo cual esta fuera de este ejemplo.

5. Nuevamente iniciamos el Node Manager, en esta ocasión ya no es necesario especificar la dirección ni el puerto. Si la edición fue correcta veremos algo como lo siguiente:



Hasta aquí el servicio de Node Manager ya esta listo para administrar nuestros servidores WebLogic.

6. Asumiendo que el servidor de administración no se encuentra en ejecución tenemos dos opciones para iniciarlo:

  • Iniciarlo a través del Node Manger con lo que éste último tendrá el control para iniciarlo, detenerlo, etc.
  • Iniciarlo con el script startWebLogic.sh con lo que el Node Manager no tiene acción sobre el servidor administración, pero si puede tener sobre el resto de servidores manejados.
En este ejemplo voy a iniciar el servidor de administración con el script startWebLogic.sh, como se indica en el post anterior. Iniciarlo a través del Node Manager implica una configuración extra además de cierto conocimiento en WLST, lo dejaremos para otro post. 

7. Una vez que el servidor de administración esta en ejecución, y la Consola de Administración esta disponible, podemos habilitar las opciones para que el Node Manager reinicie automáticamente algún servidor en caso de haber detectado un estado crítico.




Finalmente desde la misma consola ya podemos iniciar, parar, pausar y resumir nuestros servidores manejados.



Espero que esto les sirva, bienvenida cualquier duda o comentario.












lunes, 20 de enero de 2014

Monitoreo de Recursos WebLogic con WebLogic Diagnostic Framework (WLDF)

El Servidor WebLogic incluye un módulo específico para el monitoreo y diagnóstico  tanto de sus propios recursos como los de las aplicaciones que sirve, éste modulo se denomina WebLogic Diagnostic Framework (WLDF). Por ejemplo, WLDF nos pérmite el monitoreo y diagnóstico de:
  • La JVM sobre la cual esta corriendo el propio servidor WebLogic.
  • Recursos JDBC, como Datasource, Multidata Source.
  • Recursos JMS, como servidores JMS, fábricas de conexión, entre otros.
  • Aplicaciones Web, EJB, etc.
  • Y mucho más, en donde hace hechar a volar nuestra imaginación.

Para efectos de respuesta inmediata, WLDF proporciona varios mecanismos para la notificación de una alerta cuando se ha cumplido el criterio de una condición, y que determina un estatus específico de un recurso o del sistema entero. Por ejemplo: 
  • La notificación cuando el uso de memoria ha alcanzado el 80% se puede realizar a través de un correo electrónico a la cuenta del administrador del sistema.
  • La notificación cuando en el log del servidor se ha detectado el código de error BEA-320034 se puede realizara a través de un servidor SNMP.
  • La notificación de threads atorados (StuckThreads) puede emitir un mensaje JMS, o una notificación JMX.
  • Crear una imagen de diagnóstico cuando ocurre una excepción inesperada (UncheckedException).

Como siempre, WebLogic Server facilita la configuración y puesta en marcha del módulo WLDF a través de la Consola de Administración, utilizando una cuenta con privilegios de admnistrador.

A continuación voy a ejemplificar el uso de WLDF para la detección de StruckThreads y su notificación a través de correo electrónico. Este procedimiento puede servirles como guía para otros casos.

1. Ingresamos a la Consola de Administración WebLogic y a través del panel de estructura de dominio nos dirigímos a la sección Services > Mail Sessions. En ésta sección creamos una Sesión de Mail que utilizaremos para el envío de la notificación por correo electrónico.


Como destino del recurso seleccionamos todos aquellos servidores en donde queremos realizar el monitoreo.

Nota: La implementación de Mail Session no soporte conexiones a servidores que requieren SSL, en este caso necesitamos de un servidor SMTP que acepte conexiones sin SSL.


2. Ahora nos dirigímos a Diagnostic > Diagnostic Modules. En esta sección comenzamos a crear nuestro Módulo de Diagnóstico.



3. Una vez creado, entramos a la configuración del mismo y nos vamos a la sección Configuration > Watches and Notifications > Notifications. En este apartado creamos la notificación de tipo SMTP (E-Mail).




Por simplicidad dejo valores por defecto.


4. En el apartado Watches configuramos las propiedades de nuestro monitor para la detección y notificación de StuckThreads.








5. Finalmente, en la sección Targets seleccionamos los destinos (servidores) en los que deseamos mantener el monitoreo, similar a los destinos de nuestra Sesión de Mail. Salvamos y activamos los cambios.


En este punto, los servidores WebLogic estan habilitados para notificar por correo electrónico cuando se presente un error 'WL-000337' o 'BEA-000337', los cuales indican un problema en los hijos de ejecución del servidor (StuckThreads).

En la siguiente figura se resalta un ejemplo de la detección de un StuckThread, derivado del thread '8' con 658 segundos de ejecución, superior al máximo permitido antes de ser considerado como Stuck.




Este es un pequeño ejemplo de lo que podemos hacer con WLDF, en donde tenemos otro método de monitoreo más especifico y profundo, como lo es la Instrumentación y su capacidad para el rastreo de peticiones a recursos del sistema o aplicaciones personalizadas.

Espero que les sea utilidad para configurar diferentes alertas con las cuales puedan mejorar la prevención y/o detección de fallas en sus dominios WebLogic.