|
MONITOR DBA
Versión 2009
Vladimir Escafi G.
Monitoreo de bases de datos Oracle.
Cuando comencé el desarrollo del esta solución de monitoreo mi idea principal fue la de poder contar con un software simple y funcional, primero que todo, para el monitoreo,supervisión y alertas de bases de datos. Centralizando la operatoria en un sólo punto, ya que si bien existen otras soluciones de monitoreo y alerta, estas implican el uso aunado de crontab,shell,macros, scripts sql, etc,etc. Donde casi siempre se requiere el aplicar todo este conjunto de elementos en cada servidor de base de datos, uno por uno.
Ni hablar de cuando se cambia una clave de sistema operativo o base de datos, o si cambia cualquier aspecto de la revisión...vamos modificando el conjunto servidor por servidor. Nunca me pareció la mejor opción, si bien es cierto con el conjunto de elementos se consigue mantener el monitoreo de las bases de datos o servidores, el control mismo de la solución se pierde. Ya que el conocimiento de cúal es el crontab que ejecuta la shell, que a su vez ejecuta (a través de sqlplus) el script que realiza la revisión de la base de datos, enviando por mail (usando la funcion del servidor para correo) el resultado de detectarse si hay algun problema se va perdiendo con el tiempo, y a medida que la gente va y viene de la empresa. Al final resulta que el poder entender el flujo completo de la solución de monitoreo y alertas es casi tan complejo e involucra tantos componentes como las cadenas de un area de operaciones. Y coincidentemente al final son muy pocas las personas que conocen exactamente como funcionan dichas cadenas.
Me propuse entonces construir una solución de monitoreo de bases de datos que fuese igual de potente, pero muy simple de poder instalar y luego configurar. Que no requiriese de varios componentes para operar y sobre todo, que no implicara el uso de agentes o elemento alguno en los servidores o bases de datos a monitorear. Esto para no causar el más mínimo impacto como también no caer en la problemática de tener que actualizar servidor por servidor algún cambio en las revisiones.
Las primeras versiones funcionaron bien, alertando via pantalla y por correo electrónico de los incidentes ocurridos en las bases de datos registradas.
Pero no estuve conforme; Primero, aún se valían de varios elementos distintos para poder operar,claro que estaban todos reunidos en un mismo punto no disgregados en cada servidor a revisar, pero aún no era lo que yo quería.
La primera versión del monitor la construí en Visual Basic 6, harán unos 5 años atrás. Poseía interfaces de programación de tareas y registro de bases de datos y servidores. Pero pronto me encontré con varios inconvenientes; Visual Basic no es un lenguaje para construir aplicaciones que estén constantemente ejecutándose, y para que el monitoreo fuese constante se requería que la solución estuviese siempre ejecutándose. |
Demos
Instalacion
Esta nueva versión elimina todos los antiguos componentes que conformaban la versión 2007. Consta de dos instaladores, la Consola y el Motor de revisión. El Motor de revisión es el encargado de realizar las tareas que son programadas desde la Consola.
Primeras configuraciones del Motor
Una vez instalados tanto la Consola como el Motor. Cabe mensionar que pueden ir por separados y de hecho debiese ser asi, ya que el Motor debe estar siempre en ejecución, mientras que la Consola sólo para ver información. Por lo tanto la Consola puede ir en nuestro PC o Notebook y el motor de revisión en un servidor 7x24 en nuestro Site.

Consola
La consola es la interfaz encargada de programar la planificación de las tareas a ejecutar por el motor de monitoreo,de fácil istalación, permite ejecutar alguna de las tareas en forma manual, como la revisión de alertas, revisión de tablespaces, revisión de performance,informes,etc.

|
En cuanto la aplicación se colgaba, adiós monitoreo. Pasé entonces a apoyarme en lo que por décadas ha probado funcionar; la ejecución programada de tareas por parte de las bases de datos (jobs,schedulers,etc). Usaría una base de datos para monitorear otras bases de datos.
Entonces reemplacé el background del monitor y dejé en Visual Basic sólo la interfaz de planificación. Pero por debajo se valía de una base de datos para poder efectuar las revisiones, utilizando "jobs" programados para activar cada revisión y su intervalo de tiempo,estos jobs ejecutaban procedimientos almacenados que en definitiva activaban las revisiones.
Cada vez que me encontraba con un problema, lo resolvía apoyándome en el lenguaje de programación que me permitía solucionarlo, o la tecnología que lo hacia. Por ejemplo para la interfaz de informes y de reportes construí un sitio web en asp con flash. Para eso requería de un IIS con conexión a la base de datos "revisora" (puede verse en el link "Demo on Line" de la versión 2007).
Para la ejecución de la revisión de archivos de log de alertas me valí de un componente construído en C para realizar un telnet el cual era usado por un ActiveX en VB6. Oh, sorpresa, VB6 no es multiprocesamiento o multihilos, a pesar que algunos insistan en que se puede emular con ActiveX y algunos Timer...
Para hacer más grande el fardo puse todo sobre una maquina virtual, ya que si se producía algún daño en el monitor o si había que recuperarlo, era mucho mas conveniente y rápido respaldar la máquina virtual y levantarla nuevamente , que instalar y configurar todo.
El que sigue la consigue.
Como ya supondrán algunos, la idea de tener algo simple de instalar y configurar se alejaba más y más mientras solucionaba cada uno de los problemas con los que me encontraba..
Al final logré tener una solución que cumplía las funciones de monitoreo y alerta de eventos en las bases de datos, que no requería agentes y era centralizada, pero a parte de lo complicado que resultaba armarla y configurarla había que añadir que por cada ambiente nuevo a monitorear o grupo (producción, desarrollo, testing,etc) debía contar con una base de datos para efectuar el monitoreo e idealmente un servidor por cada monitor.
Apunté a dos tecnologías con las cuales podría lograr todo lo que me había propuesto. Java y .Net. En esta publicación sólo diré que me decidí por .Net porque resultó mucho mas estable, su Framework es mucho más robusto que la JVM de Java (Que me perdonen los linuxeros).Y java por sí mismo como lenguaje no me bastaba, pues sería como decir que con el sólo hecho de contar con C# (C sharp) de .Net y sin su biblioteca de clases base , su runtime común de lenguaje o soporte de multiprocesos pudiese construir lo que necesitaba.
Me dí la tarea de reconstruirlo totalmente de cero,la programación del monitor mismo sólo era parte de la solución completa, ya que las revisiones en sí a la base de datos y su(s) instancia(s). debían ser lo suficientemente óptimas como para no producir problemas de bloqueos o contenciones que producen otras soluciones de monitoreo .
En esta última versión puedo decir que he logrado el objetivo. Construí una solución que puede bajarse integramente desde mi sitio, y con la filosofía de Microsoft (Next,Next,Next) puede instatalarse, configurarse y comenzar a operar sin problemas.
Me desligué de la base de datos como ente revisor,también de los componentes ActiveX, los procedimientos Pl-Sql, el IIS, las páginas asp,la máquina virtual ,etc,etc. Microsoft .Net ,en su versión 2009, ha probado ser todo eso y más (hasta ahora no ha quedado corto con lo que se me ha ocurrido) y el monitor puede ejecutar las revisiones totalmente en paralelo y multiproceso,ya que construí un motor de ejecución el cual trabaja de forma similiar a los motores de Job de las bases de datos (más aproximado a Sybase Ase, ya que los otros lo tienen incorporado a su software de base de datos).
Otra de las innovaciones es que al tener un motor propio esta solución puede levantar varios de ellos trabajando en forma totalmente independiente. Lo que le permite monitorear varios ambientes o grupos de bases de datos desde un mismo equipo,pero por separado. Posee también en principio, un servidor de correo, el cual le permite enviar correos electrónicos en forma totalmente independiente;pudiendo enviar correos a cuentas externas (gmail,hotmail,yahoo,etc) aún cuando en la empresa esté bloqueado el envío de correos a estas cuentas. Permite mantener un sitio en Internet con la información relevante y de alertas detectadas, permite emitir informes y reportes en formato Pdf, Doc, Exel.
Y lo mejor es que sólo basta con bajarlo , ejecutar los setup.exe y darle "next,next,next" para que quede instalado.Sólo he visto limitantes referentes al Framework instalado en el equipo, pero en la mayoría de los casos el sistema se conecta a Internet y los descarga, digo casi siempre porque obviamente se debe tener una conexión a Internet y los permisos para instalar el Framework, pero una vez actualizado todo es tirar y abrazarse...
Vladimir Escafi (vescafi@gmail.com) |