Archive

Archive for April, 2009

WMI – Windows Management Intrumentation. A vista de pajaro

April 28th, 2009 Roberto Clemente 1 comment

¿Que es WMI (Windows Management Instrumentation) y para que sirve?

WMI es la forma que ha tenido microsoft para implementar el concepto de Web-based enterprise management (WBEM), que a su vez es un tipo de estandar tecnológico para facilitar el acceso a la información relativa a la administración IT en un entorno corporativo o empresarial. Existe un modelo comun de información (CIM – Common information model) que es standard para representar sistemas, aplicaciones, redes, dispositivos y otros componentes administrados, en el contexto de una infraestructura de IT. CIM es desarrollado y mantenido por la DMTF (Distributed MAnagement Task Force http://www.dmtf.org/standards/wsman )

Dejando a un lado las definiciones y acercando el concepto al administrador desde un punto de vista útil, WMI nos permite tratar de una forma homogenea y simplificada cualquier tarea de administración desde un punto de vista programático. Esto nos permite la administración remota de máquinas, por ejemplo, teniendo la certeza que el efecto y comportamiento en los diferentes nodos sea exactamente el mismo, con independencia de su ubicación, su hardware, etc.

WMI, dispone de proveedores (WMI Providers http://msdn.microsoft.com/en-us/library/aa394570(VS.85).aspx) y clases (WMI Classes http://msdn.microsoft.com/en-us/library/aa394554(VS.85).aspx)

Uno de los problemas más frecuentes a la hora de entender qué puede hacer WMI por nosotros es que dado el nivel de abstracción necesario para entender su utilidad, no hay muchas herramientas totalmente gráficas que permitan acercar su uso al administrador, y en gran parte quedan ocultas tras interfaces modo comando (Como por ejemplo wmic)

El concepto no obstante es muy sencillo, WMI es un repositorio de información de lectura y escritura que no solo permite embeber en un framework la administración, sino que incluso permite modificarla (Si es aplicable en el caso). Además, la forma de utilizarla es común para todos los proveedores y clases WMI, por lo que aprendiendo a manejar con algun proveedor o clase, nos abrirá un mundo infinito de posibilidades.

¿Como puedo utilizar WMI?

Personalmente os recomiendo acercaros a WMI primero con una herramienta en modo comando llamada wmic, para entender el concepto general, en un solo host, pero, sin lugar a dudas, la mejor manera de utilizar WMI es integrarlo en nuestros scripts de administración, para poder retocar el alcance cada vez que sea necesario.

¿Qué lenguajes pueden hacer uso de WMI?

En realidad, actualmente casi todos los lenguajes pueden atacar a WMI para recuperar o fijar información. De todos ellos, me inclino por VBScript, ASP, o incluso powershell (Que ya hablaremos en otra ocasión de él)

¿Como hago una consulta WMI?

Como avanzabamos anteriormente, deberás aprender a manejar las clases y hay un lenguaje muy similar a SQL, llamado WQL http://msdn.microsoft.com/en-us/library/aa392902(VS.85).aspx que te permitirán manejar sin problemas las consultas y enumeraciones de los objetos WMI

He comenzado a utilizar WMI, pero como saber qué cosas puedo preguntar a WMI? de qué me vale tantas posibilidades, me pierdo y a menudo no encuentro como hacer las preguntas adecuadas.

Lo primero, no te preocupes, al principio es normal perderse en la abstracción del modelo, una vez te habitues te será mas sencillo. Mi consejo en este punto es que utilices la referencia WMI de microsoft para empezar: http://msdn.microsoft.com/en-us/library/aa394572(VS.85).aspx

En esta referencia, tienes disponibles las clases y proveedores de uso mas comun en tecnologias MS, Tomaremos a modo de ejemplo la clases Win32 :

http://msdn.microsoft.com/en-us/library/aa394084(VS.85).aspx

Dentro de cada una de ella verás la definición de la clase, continuando con un ejemplo práctico, tomaremos la Win32_Volume Class: http://msdn.microsoft.com/en-us/library/aa394102(VS.85).aspx

En cada clase, podemos encontrar propiedades y métodos. Los métodos son “funciones” que no devuelven valor, pero que permiten realizar una acción en el objetivo sobre el que se llaman. Hemos escogido esta clase, puesto que es bastante sencillo de entender el alcance de los datos que vamos a recuperar, así como de los métodos que se pueden utilizar.

Ejemplos de métodos en esta clase pueden ser:

chkdsk (Que permite ejecutar un chequeo de disco usando wMI)
AddMountPoint (Añadir punto de montaje)
Format (Formatear el volumen sobre el que se hace la llamada)
Defrag (Defragmentar)
Dismount (Desmontar)
mount (Montar)
[...]

Sin embargo, las propiedades son piezas de información interesantes desde un punto de vista de administración, por ejemplo y manteniendonos en la clase Win32_Volume, podemos recuperar valores como:

Capacity (Tamaño del volumen en Bytes)
Caption (Etiqueta del volumen)
Compressed (Si el volumen estuviese comprimido)
DriveLetter (letra de la unidad)
DriveType:
Value Meaning
0-Unknown
1-No Root Directory
2-Removable Disk
3-Local Disk
4-Network Drive
5-Compact Disk
6-RAM Disk

[...]

WMI Dispone del siguiente API:

http://msdn.microsoft.com/en-us/library/aa393260(VS.85).aspx

Para ejemplos, en la MSDN podras encontrar ayuda:

http://msdn.microsoft.com/en-us/library/aa394585(VS.85).aspx

Hasta la próxima entrega!

Categories: Windows Tags: , ,

HP-UX 11.31: gestión de cores con coreadm

April 24th, 2009 RuBiCK No comments

Hoy os traigo una nueva funcionalidad para la última versión de HP-UX para manejar los cores que puedan generar los procesos. Los usuarios de Solaris y otros unix les resultará familiar pero no ha sido hasta la versión 11.31 cuando se ha incorporado a HP-UX.

Hasta ahora, si se generaba un core, se generaba y guardaba en la ruta la cual el fichero estuviera ubicado. Ahora, podremos gestionar todos los cores que se generen en la máquina de una manera global y centralizada indicando que se guarden todos en un directorio determinado con un formato concreto en vez que todos se llamen core, esta gestión la estableceremos con el comando coreadm.

Tenemos una lista de parámetros para personalizar el nombre que le vamos a dar a los cores que se generen y la siguiente:

         %p   process ID
         %xp  Process ID in hex
         %u   effective user-ID
         %xu  effective user-ID in Hex
         %g   effective group-ID
         %xg  effective group-ID in Hex
         %c   thread's CPU number when the core file was created
         %f   executable file name, up to a maximum of MAXCOMMLEN characters
         %n   system node name (uname -n)
         %t   time-stamp (in UTC time format)
         %%   literal %

Como podemos ver, es bastante personalizable, pero mejor veamos un ejemplo práctico.

Vamos a indicar al sistema que deje todos los cores bajo /var/adm/crash/cores/ pero con un determinado formato que nos indique el usuario, PID y nombre de proceso que lo generó de la siguiente manera:

(root):/root> coreadm -e global -g /var/adm/crash/cores/core.%f.%u.%p

Lanzamos un proceso dejándolo en segundo plano y le forzamos para que genere un core mediante la señal 3 de kill

(root):/root> sleep 100&
[1]     1167
(root):/root> kill -3 %1
(root):/root> jobs
[1] + Quit(coredump)           sleep 100&

Y ahora vamos al directorio donde hemos indicado que nos deje los cores para ver si ha funcionado:

(root):/root> ls -la /var/adm/crash/cores
total 1872
drwxr-xr-x   2 root       sys             96 Apr 21 17:41 .
drwxr-xr-x   4 root       root            96 Apr 21 17:35 ..
-rw-------   1 root       root        284848 Apr 21 17:41 core.sleep.0.1167

Ahora teniendo todos los cores bajo un mismo directorio será mucho más facil tenerlos controlados, hacer algún mini-script para que nos avise una vez se genere algún core etc…

Categories: HP-UX Tags: ,

BACKUP-INCREMENTAL-FROM-SCN

April 23rd, 2009 jospino No comments

Hola a todos, hoy quiero escribir de una de las nuevas funcionalidades de RMAN para la 10g (un poco antiguo porque estamos con la 11g, y hay que empezar a escribir sobre la 11g) que aparece en el capítulo 13 del “Backup and Recovery Advanced Use’s Guide” exactamente en la página 13-24, es usar el “BACKUP INCREMENTAL … FROM SCN”.
¿Cuándo lo utilizo? Pues en mi caso tengo unas cuantas STAND-BY físicas, algunas con un DELAY de 12 horas, y en alguna ocasión a fallado la alarma del DELAY, y como guardo y borro los archive logs del disco tres veces al día, en ocasiones cuando falla la alarma, puedo llegar a encontrarme un DELAY de tres días los lunes, y tendría que recuperar los archive logs de cinta y aplicarlos a la STAND-BY física. Esto te llevaría un tiempo considerable, sobre todo si tienes que pedir a alguien las cintas, dependiendo de la política que tengan, en resumen mucho tiempo.
Ahora en RMAN de la versión 10g, existe esta funcionalidad, que te busca los bloques que han cambiado desde el SCN que le proporcionas y te crea un backup set, del que no deja registro que influya en tus backups de tus políticas para las posibles recuperaciones de la base de datos primaria.
Read more…

Categories: Oracle Tags: , , ,

panic: post_hndlr(): Unresolved kernel interruption

April 22nd, 2009 RuBiCK No comments

Hoy traemos un nuevo y magnífico panic para HP-UX 11.31 tras analizar el dump con la utilidad crashinfo nos quedamos con la siguiente información:


panic: post_hndlr(): Unresolved kernel interruption

Stack Trace:
  IP                  Function Name
  0xe0000000007793a0  $cold_vm_hndlr+0x5b0
  0xe000000001c90780  bubbledown+0x0
  0xe00000000061b6d1  $cold_vx_ireuse+0xce1
  0xe000000000af0450  vx_iget+0x2a0
  0xe000000000b1cc60  vx_dirlook+0x5e0
  0xe000000000c15260  vx_lookup+0x11f0
  0xe000000000c7abd0  lookupname+0x3b0
  0xe000000000cf3f40  lstat+0x60
  0xe000000000be7600  syscall+0x540
End of Stack Trace

Esta situación se soluciona aplicando el parche de kernel PHKL_38041 (requiere reboot)

Tenéis bastante más información en el link del parche.

Categories: HP-UX Tags: ,

HP-UX 11.31 : Agile View Addressing

April 21st, 2009 RuBiCK No comments

Hoy, vamos a adentrarnos en una de las características más esperadas en la última versión de HP-UX que hace referencia a la gestión de dispositivos, por fin, se usan dispositivos persistentes. En versiones anteriores a la 11.31 la vista de dispositivos la llamaremos “legacy view”. Por recordar, si tenemos discos presentados a la máquina y cambia su hardware path, su fichero de dispositivo también cambia e incluso si despresentamos un disco y no borramos su fichero de dispositivo asociado, a la hora de presentar un nuevo disco usará un fichero de dispositivo ya existente además de tener un fichero de dispositivo por cada camino al disco.

Ahora se introducen nuevos conceptos como el “Agile View” mediente el cual el fichero de dispositivo irá vinculado al WWID por lo que por mucho que cambie el harware path será persistente, el fichero de disposivo siempre será el mismo y contendrá todos los caminos asociados. Esto quiere decir que yo no necesitamos software para el multi-pathing como securepath, autopath, powerpath etc..

Esta vista agil, se compone de “Lun Hardware Path” que será el dispositivo final vinculado al WWWID cuyo hardware path vendrá definido en hexadecimal y será el dispositivo que deberemos usar. Por otro lado tendremos los “Lun Path” que serán los distintos caminos que tiene un disco.

Los discos o caminos vistos de manera tradicional tienen el formato /dev/dsk/c#t#d# donde representan la instancia de la controladora, el SCSI target id y Lun. Este dispositivo, siempre irá vinculado al hardware path.
La vista ágil, es virtualizada bajo ficheros con la siguiente notación: /dev/disk/disk# donde el número representa una instancia en formato ágil y tendremos uno por dispositivo.

Para resumir, si tenemos un disco mediante el cual accedemos a través de cuatro caminos, tendremos cuatro dispositivos /dev/dsk/c#t#d# apuntando al mismo disco que podrán cambiar mientras que ahora, tendremos un único dispositivo /dev/disk/disk# el cual nunca cambiará, veamos ejemplos prácticos:
Read more…

Categories: HP-UX, Unix & Linux Tags: ,

TNS-00525

April 20th, 2009 jospino 4 comments

Excelente momento para escribir por un error fácil de solucionar, pero que al buscarlo no encuentras mucho.
El problema aparece cuando intentas levantar el “listener” y tienes el siguiente error:

Error listening on: (ADDRESS=(PROTOCOL=IPC)(KEY= {nombre de la llave}))
TNS-12555: TNS:permission denied
TNS-12560: TNS:protocol adapter error
TNS-00525: Insufficient privilege for operation
HPUX Error: 1: Not owner

Read more…

Categories: Oracle Tags: , , , ,

Bienvenidos al ORA112

April 16th, 2009 jospino No comments

Hola a todos,

Soy John Ospino Rivas y trabajo como DBA (no me gusta esa palabra, demasiado amplia para mi gusto) y me gusta investigar y aprender sobre Oracle y su mundo. Read more…

Categories: Oracle Tags: , ,

Reason 0×56: NaT Consuption Fault

April 8th, 2009 RuBiCK No comments

Erase una vez un HP-UX 11.23 que tras estar funcionando varios años, de repente generó un panic y su consiguiente crash. Este crash hubicado en /var/adm/crash/crash.N es poco analizable por nosotros por lo que había que pasarle el crashinfo el cual genera información algo más legible y nos encontramos con lo siguiente (muestro un pequeño extracto)

Trap information
================

Reason 0x56: NaT Consuption Fault

Interrupt Instruction Pointer:
IIP = 0xdead31.0xe00000000053e7c0, slot 0

Interrupt Instruction Bundle:

tcp_rput+0x22a0(): (@ 0xe00000000053e7c0)
|10756 /ux/core/kern/common/net/netinet/tcp.c
+0x22a0 st8 [r67]=r84
nop.m 0x0
|10758 /ux/core/kern/common/net/netinet/tcp.c
br.call.dptk.many b0=0xe0000000004ba400 // tcp_conn_con()
|10756 /ux/core/kern/common/net/netinet/tcp.c

Tras abrir consulta a soporte nos indicaron que el problema se solucionaba aplicando el parche original PHNE_34671 el cual si lo buscamos en http://itrc.hp.com vemos como el parche PHNE_37897 lo supercede por lo que será el que aplicaremos:

phne_34671

Al instalar este parche recompila kernel y por consiguiente necesita reboot, una vez instalado, a dormir tranquilos :)

Categories: HP-UX Tags: ,

lvrename en hpux

April 6th, 2009 RuBiCK 2 comments

Es una pena que en hpux no exista el comando lvrename que sí que existe en Linux mediante el cual podemos renombrar el nombre a un lvol.

Aunque no exista el comando lvrename como tal, podemos realizar un workaround para renombrar el lvol:

Lo primero de todo será desmontar el lvol sobre el que vamos a trabajar:

host:/root (root) #bdf /mnt
Filesystem          kbytes    used   avail %used Mounted on
/dev/vg00/lvignite 5259264   68107 4866719    1% /mnt
host:/root (root) #umount /dev/vg00/lvignite

Ahora tomamos nota del minor que tiene el lvol que queremos renombrar:

host:/root (root) #ls -la /dev/vg00/lvignite
brw-r-----   1 root       sys         64 0x00000a Jul 24  2007
/dev/vg00/lvignite

Borramos el fichero de dispositivo del lvol y su raw device asociado:

host:/root (root) #rm /dev/vg00/lvignite
host:/root (root) #rm /dev/vg00/rlvignite

Y ahora lo que tendremos que hacer es recrear los ficheros de dispositivo mediante mknod. Podremos ponerle el nombre que queramos siempre y cuando le pongamos el mismo minor y major que hemos visto antes.
Para recrear los ficheros de dispositivos, lo haremos mediante el comando mknod.

El uso del mknod es el siguiente:

mknod name b|c major minor

Donde name es el nombre del fichero de dispositivo a crear, “b” para crear el fichero de acceso en modo bloque o “c” para acceso en modo caracter (raw). El major cuando trabajamos con lvm siempre es 64. Este dato lo sacamos viendo el driver que usa lvm: Read more…

Categories: HP-UX Tags: ,

macOSX: Vodafone Mobile Connect se cuelga al arrancar

April 4th, 2009 RuBiCK No comments

vodafone mobile connectDerrepente, un día cualquiera, al arrancar la aplicación Vodafone Mobile Connect para conectarnos mediante 3G en macOSX se queda colgada al intentar arrancar, no aparece el programa en pantalla cuando el icono muestra que está arrancada la aplicación

Según leo en LOUDHUSH BLOG lo que hay que hacer es:

  1. Salir de la aplicación
  2. Borrar el fichero ”/Library/Application Support/nova media/VMC/ppp_session.log”
  3. Arrancar de nuevo el programa

Esto es provocado por que el programa entra en un bucle infinito a la hora de tratar ese fichero. Más vale tener esta información en algún txt en local por si algún dia necesitamos conectarnos mediante 3G por ejemplo en una guardia y no funciona internet…

Categories: macOSX Tags: