martes, 21 de noviembre de 2017

Configuración de Heap Size en WebSphere Applicataion Server CLUSTER usando wsadmin

Configuración de Heap Size en WebSphere Applicataion Server CLUSTER usando wsadmin

Para aquellos casos en donde es importante configurar la memoria inicial o máxima de los miembros de un cluster y no tener que batallar tanto cuando el cluster es demasiado grande, aquí les dejo un script para hacer esto en cuestión de minutos.

Pasos.

1. Crea un archivo llamado modifyHeapsPerCluster.py en el bin del profile del DMGR y agrega las siguientes líneas:
def showClusters():
  clusters=AdminConfig.list('ServerCluster').split(java.lang.System.getProperty("line.separator"))
  print "[INFO] Listing all Clusters . . ."
  for clr in clusters:
    cluster = clr.split('(')
    print " " * 15 + "Cluster Name = " + cluster[0]

def showNodes():
  cells = AdminConfig.list('Cell').split()
  for cell in cells:
    nodes = AdminConfig.list('Node', cell).split()
    lista = ['1','2','3','4','5','6']
    listaNodos = []
    global listaNodos
    num = 0
    for node in nodes:
      nombreNodo = AdminConfig.showAttribute(node, 'name')
      print " " * 15 + nombreNodo + " (" + lista[num] + ")"
      listaNodos.append(nombreNodo )
      num = num + 1

def showClusterMems(clsName):
  print "[INFO] Show Cluster Members: " + clsName
  cluster = AdminConfig.getid("/ServerCluster:" +clsName+"/")
  clusterName = AdminConfig.showAttribute(cluster, "name")
  members = AdminConfig.showAttribute(cluster, "members")
  members = AdminUtilities.convertToList(members)
  global listMemembers
  global listNodeMembers
  listMemembers = []
  listNodeMembers = []
  if len(members) > 0:
    AdminUtilities.infoNotice("cluster " + clusterName + " has %s members" % (len(members)))
    for member in members:
      mname = AdminConfig.showAttribute(member, "memberName")
      nname = AdminConfig.showAttribute(member, "nodeName")
      AdminUtilities.infoNotice("Cluster member: " + mname + " " + nname)
      listMemembers.append(mname)
      listNodeMembers.append(nname)

def modifyHeapsPerCluster():
  showClusters()
  clusterName = raw_input("Introduce the name of the clulster: ")
  showClusterMems(clusterName)
  showNodes()
  nodeName = raw_input("Introduce the name of the node's Cluster: ")
  if ( nodeName == "1" ):
    nodeName = listaNodos[0]
  else:
    nodeName = listaNodos[1]

  cluster = AdminConfig.getid("/ServerCluster:" +clusterName+"/")
  clrtName = AdminConfig.showAttribute(cluster, "name")
  members = AdminConfig.showAttribute(cluster, "members")
  members = AdminUtilities.convertToList(members)
  HeapMin = raw_input("\t Introduce the Heap Min: []: ")
  HeapMax = raw_input("\t Introduce the Heap Max: []: ")
  if len(members) > 0:
    miembros = len(members)
    for member in members:
      mname = AdminConfig.showAttribute(member, "memberName")
      print "[INFO] Changing configuration of instance: " + mname
      serverJVM=AdminConfig.getid('/Node:'+nodeName+'/Server:'+mname+'/')
      jvm = AdminConfig.list('JavaVirtualMachine', serverJVM)
      AdminConfig.modify(jvm, [['maximumHeapSize', HeapMax]])
      AdminConfig.modify(jvm, [['initialHeapSize', HeapMin]])
      AdminConfig.save()

modifyHeapsPerCluster()
Una vez hecho lo anterior ejecutalo de la siguiente manera:


{WAS_DMGR_Profile}/bin/wsadmin.sh -lang jython -f modifyHeapsPerCluster.py
Si tienes habilitada la seguridad y no la tienes configurada en el soap.client.properties te solicitara que introduzcas los datos de usuario y password.

Ejemplo:


/WebSphere85/AppServer/profiles/Dmgr01/bin # ./wsadmin.sh -lang jython -f modifyHEapsPerCluster.py -username wasadmin -password *********

WASX7209I: Connected to process "dmgr" on node lcwacmbanxmx02NodeManager01 using SOAP connector; The type of process is: DeploymentManager

[INFO] Listing all Clusters . . .
Cluster Name = Cluster_sire
Cluster Name = Cluster_webfocus82
Introduce the name of the clulster: Cluster_sire
[INFO] Show Cluster Members: Cluster_sire
Cluster Cluster_sire has 2 members
Cluster member: sire lcwacmbanxmx02Node01
Cluster member: sire_cl2 lcwacmbanxmx02Node01
lcwacmbanxmx02Node01 (1)
lcwacmbanxmx02NodeManager01 (2)
Introduce the name of the node's Cluster: 1
Introduce the Heap Min: []: 256
Introduce the Heap Max: []: 512
Changing configuration of instance: sire
Changing configuration of instance: sire_cl2
Change Complete
NOTA. Recuerda ejecutarlo por cada Nodo de miembros que exista dentro del cluster.

Este script está probado en versiones 6.1,7,8,8.5 y 8.5.5.

Deja tus comentarios.



jueves, 25 de junio de 2015

Habilitar seguridad Global de Repositorios Federados con wsadmin

A continuación se muestra el script para poder habilitar la seguridad de la consola administrativa de WAS con ayuda de WSADMIN.

Crear un archivo seguridad.py

####Configuracion de Usuario Primario####
####Ejecutar con seguridad ./wsadmin.sh -lang jython -username user -password password -f seguridad.py
####Ejecutar sin seguridad ./wsadmin.sh -lang jython -f seguridad.py
print "Creando Usuario Primario para la seguridad Global"
AdminTask.configureAdminWIMUserRegistry('[-realmName defaultWIMFileBasedRealm -verifyRegistry false]')
AdminTask.configureAdminWIMUserRegistry('[-autoGenerateServerId true -primaryAdminId wasadmin -ignoreCase true -customProperties -verifyRegistry false]')
AdminTask.updateIdMgrRealm('[-name defaultWIMFileBasedRealm -allowOperationIfReposDown false]')
AdminConfig.save()
print "Usuario Creado Satisfactoriamente"


####Habilitar Seguridad con Repositorios Federados y seguridad de aplicaciones False####
print "Habilitando seguridad Global con Repositorios Federados"
AdminTask.applyWizardSettings('[-secureApps false -secureLocalResources false -adminPassword waspassword -userRegistryType WIMUserRegistry -adminName wasadmin]')
AdminConfig.save()
print "Seguridad Habilitada Corectamente"

print "Reiniciar DMGR"

Deja tus comentarios,

Saludos

Tiempo de Respuesta en access_log

IBM HTTP Server Response Time


Es posible mostrar el tiempo que tarda en responder una petición en Webserver y para ello se configura lo siguiente dentro del httpd.conf:

Definición Original

LogFormat "%h %l %u %t \"%r\" %>s %b" common
CustomLog logs/access.log common

Salida que produce:

127.0.0.1 - - [25/Jun/2015:11:50:40 -0500] "GET /Portal/login.jsp HTTP/1.1" 200 482


Realizar el cambio por:

LogFormat "%h %l %u %t \"%r\" %>s TIME: %D %b" common
CustomLog logs/access.log common

A continuación el ejemplo de la salida que se produce con este cambio:

127.0.0.1 - - [25/Jun/2015:11:51:41 -0500] "GET /Portal/login.jsp HTTP/1.1" 200 TIME: 15001 482

El numero seguido de la palabra TIME es el tiempo en ms que tarda en ser atendida la solicitud del cliente

Esto puede servir para generar métricas de tiempo de respuesta.

Deja tus comentarios

Saludos

jueves, 30 de octubre de 2014

Monitor de Proceso que consume más CPU

Como saber que procéso esta consumiendo mas CPU


El día de hoy os traigo un comando para ver que proceso esta consumiendo más CPU en el Servidor.

ps -eo pcpu,pid,user,args | sort -k 1 -r | head -2

Esta informacion puede ser utilizada para detectar Thread Colgados o Memory Leaks.

Algunos de los usos que le he dado es mandar la información a una pagina html la cual se refresca cada 5 seg y en caso de rebasar un umbral establecido disparar algún alertamiento visual o de mensajes. Támbien lo he utilizado para realizar acciones correctivas automatizadas como: Generar Dumps o JavaCore para su posterior Analisis.

 Nota. Este comando se a probado en Solaris y en Linux, pero no dudo que su funcionalidad sea correcta en UNIX.

Visita mi Página donde podras encontrar un poco más de comandos y configuraciones sobre WebSphere Application Server.


htps://agatha-tunnel.codio.io/index.html

Cuenta con muchos errores pero se hace el esfuezo por mejorarla.

Visitame en twitter @takoda16

ó

En Google+ takoda16@gmail.com

lunes, 27 de mayo de 2013

LINUX_UNIX HELP COMMANDS parte 2

Linux-Unix Help Commands

Bueno en esta ocasión y en base a que el post pasado relacionado con comando para UNIX/LINUX fue todo un éxito, en esta ocasión les dejare unos cuanto más, aparte de algunas sugerencias que mas comandos y combinación de los mismo  son utilidades propias del sistema operativo.


Te pasa que llega la ocasión en que uno o varios File System llegan a saturarse y quieres depurar pero no sabes por donde empezar, bueno pues para esto podemos utilizar el comando du, este comando con ayuda de algunos complementos como sort nos ayuda a saber que directorios o archivos son los mas grandes, para no estar divagando entre directorios y subdirectorios, a continuación les dejo el comando que utilizo.

 - du -s * | sort -n

*este comando ordenara los directorios de menos a mayor tamaño.

Otra cosa que debemos saber cuando se lleva a cabo una administración sobre SO Linux/Unix, es que podemos crear Alias, estos son por decirlo de alguna manera comandos que se pueden almacenar en una variable la cual se carga directamente con el perfil del usuario, por ejemplo;

podemos crear un alias con el nombre de pids al cual le podemos pasar el comando 'ps -fea | grep java' (listar los procesos java con todas sus columnas) y para esto solo tenemos que crear el alias en el archivo .profile(unix) ó .bash_profiles(Linux), como a continuación se describe.

 - alias alias_name = 'command'

ejemplo:

alias was_path = 'cd /opt/IBM/WebSPhere/AppServer/'

una vez realizado el cambio debemos recargar el el perfil del usuario con;

- . .prifile ó  . .bash_profile dependiendo del SO

*En caso de no cargar de forma automáticamente volverse a firma y listo.


Con la explicación anterior solo tenemos que escribir desde la linea de comando was_profile y nos posicionara en la ruta indicada. Así podremos optimizar nuestros propios comandos y los mismos del SO.


Te ha pasado que quieres ejecutar dos comando en una sola sentencia, ya sea para que se ejecuten consecutivamente o con una condicion?

Bueno para eso utilizamos;

; - Concatena dos comando, ejecutando primero el de la izquierda seguido del de la derecha

|| - concatena dos comandos, se ejecuta el de la derecha solo si el de la izquierda falla

&& - Concatena dos comando, Se ejecuta el de la derecha si se ejecuta correctamente el la izquierda.


Buenos espero les sea de gran utilidad, no olviden dejar sus comentarios, dar LIKE y pasar la liga entre sus contactos.



miércoles, 22 de mayo de 2013

El caracter ^M en archivos Unix y Linux

El caracter ^M en archivos Unix y Linux

Con demasiada frecuencia ocurre que importamos un texto de MS-DOS a UNIX, y al editarlo con el vi (por ejemplo), sale lleno de "^M" al final de todas las líneas. Esto de los ^M ocurre porque el delimitador de línea de los ficheros de texto en DOS es CR-LF (carriage return-linefeed, o sea, retorno de carro y salto de línea), y en UNIX son simplemente LF. Así, muchas herramientas de UNIX (al menos por defecto), buscan como delimitador de línea el LF, así que al final de cada línea hay un caracter extraño (el CR).
Esto, en vi, se puede arreglar fácilmente con la orden 

 :%s/<Ctrl-V><Ctrl-M>//g
 
NOTA. Con esto me refiero a abrir el archivo con vi y ejecutar el comando anterior.  
 
Descripción del comando: El "%" sirve para que se sustituya en todas las líneas, y no sólo en la actual, la "s" para que se realice una sustitución, el Ctrl-V Ctrl-M es necesario para que el vi no se crea que estamos pulsando un ENTER (Ctrl-V sirve para insertar literales), y, por supuesto, se sustituye por nada, así que entre la segunda y la tercera barras no ponemos nada.

Por si no te gusta el vi, puedes cambiar el formato de los ficheros de texto desde la línea de órdenes, escribiendo:

 sed 's/<Ctrl-V><Ctrl-M>//' fichero-CRLF >fichero-LF
 
Si no conocías el sed (lo más probable, porque si lo conocieras ya se te habría ocurrido a ti el truco), es una herramienta bastante versátil de proceso de texto (no tanto como el perl), y no muy complicada de utilizar. 


lunes, 20 de mayo de 2013

java.lang.UnsatisfiedLinkError on Linux Fedora 17 x86_64 bits

Issue: java.lang.UnsatisfiedLinkError on Linux Fedora 17 

Buenos dias!!!!!!

Hoy le dejo la sulocion a este problema

java.lang.UnsatisfiedLinkError: Could not load SWT library

y es que este error es ocasionado cuando tratas de abrir el WebSphere MQ Explorer, realizar la instalación y configuración de Instalation Manager(El cual es necesario para instalar las ultimas versiones de los productos como MQ, Broker, WAS, Fixes, etc) en modo gráfico. Y es que este error se preseta debido a que la distribución de Linux no cuenta con la librerias adecuadas para lanzar el modo grafico de las tareas antes mencionadas:

1. ./IBMIM command - para lanzar la consola de IM.
2. ./install command - para lanzar la instalacion de IM.
3. ./strmqcfg - para lanzar MQ Explorer.

Para solucionar este problema basta con ejecutar el siguiente comando con privilegios de root.

yum install gtk2.i686 gtk2-engines.i686 PackageKit-gtk-module.i686 PackageKit-gtk-module.x86_64 libcanberra-gtk2.x86_64 libcanberra-gtk2.i686


Nota. Se utiliza YUM debido a la distribución pero podría variar de acuerdo a la misma.

Una vez realizado lo anterior deberíamos poder lanzar el modo gráfico sin ningún problema.

A continuacion el error completo:

----------------------------------------------------------------------------------------------------------------
!ENTRY org.eclipse.osgi 4 0 2013-05-13 22:57:12.833
!MESSAGE Application error
!STACK 1
java.lang.UnsatisfiedLinkError: Could not load SWT library. Reasons:
        /opt/IB/InstallationManager/eclipse/configuration/org.eclipse.osgi/bundles/336/1/.cp/libswt-pi-gtk-3659.so (libXtst.so.6: cannot open shared object file: No such file or directory)
        swt-pi-gtk (Not found in java.library.path)
        /tmp/swtlib-32/libswt-pi-gtk-3659.so (libXtst.so.6: cannot open shared object file: No such file or directory)
        /tmp/swtlib-32/libswt-pi-gtk.so (/tmp/swtlib-32/liblibswt-pi-gtk.so.so: cannot open shared object file: No such file or directory)

----------------------------------------------------------------------------------------------------------------