herramienta libre de monitoreo y control para …
TRANSCRIPT
UNIVERSIDAD CENTRAL “MARTA ABREU” DE LAS VILLAS FACULTAD DE MATEMÁTICA, FÍSICA Y COMPUTACIÓN DEPARTAMENTO DE CIENCIA DE LA COMPUTACIÓN
“HERRAMIENTA LIBRE DE MONITOREO Y CONTROL
PARA POSTGRESQL”
TESIS PRESENTADA EN OPCIÓN AL TÍTULO ACADÉMICO DE MÁSTER
EN CIENCIA DE LA COMPUTACIÓN
Autor:
Ing. Dayani Flores Pérez
Tutor:
Dr. Rosendo Moreno Rodríguez
Santa Clara, 2011
Resumen
I
RESUMEN
El desarrollo y perfeccionamiento de herramientas que complementan la utilización de
las bases de datos ha marcado, sin dudas, un hito en la revolución tecnológica en que
está inmerso el mundo. Sin embargo el privilegio de usar estas herramientas ha sido solo
un sueño para muchos pues los precios a pagar son muy altos. Cuba, incluida en esta
lista, ha tomado algunas alternativas, como la creación de aplicaciones autóctonas que
garanticen una independencia tecnológica. Como parte de esta estrategia se han
necesitado herramientas que además de gestionar las bases de datos, monitoreen el
funcionamiento de estas, es por ello que el objetivo central de esta tesis es el desarrollo
de una aplicación que, aparte de resolver esta problemática, funcione sobre la web 2.0 y
permita identificar los problemas de rendimiento del gestor. Durante su confección se
estudiaron y caracterizaron las herramientas más utilizadas para el monitoreo y control
de bases de datos en PostgreSQL. Para conocimiento de los lectores se describen y
justifican las tecnologías y herramientas de software libre que fueron utilizadas durante
el desarrollo de la aplicación. Se muestran en varias imágenes los Casos de Uso del
sistema, diagramas de clase y de componentes más significativos y se detalla el
diagrama de despliegue que documenta la implantación del sistema. Finalmente y con el
objetivo de facilitar la interacción de los usuarios con la herramienta, se realiza una
descripción de las funcionalidades que posee a través de un esbozo del Manual de
Usuario.
Abstract
II
ABSTRACT
The development and refinement of tools that complement the use of databases has
made, no doubt, a milestone in the technological revolution the world is immersed.
However, the privilege of using these tools has been a dream for many because prices
are too high to pay. Cuba included in this list, has taken some alternatives, like creating
native applications guaranteeing technological independence. As part of this strategy it
has been needed tools are to manage databases, monitor the operation of these, which is
why the main objective of this thesis is to develop an application that besides solving
this problem, work on web 2.0 and allows to identify performance issues of the database
manager. During its development the most used tools for monitoring and control of
PostgreSQL databases were studied and characterized. As additional information for
readers the free software technologies and tools that were used during the development
of the application are described and their used is justified.. Multiple images are shown
in the Use Cases of the system, class diagrams and most significant components and is
also detailed the deployment diagram that documents the implementation of the system.
Finally and in order to facilitate user interaction with the tool, there is a description of
the functionality held through an outline of the User Manual.
Índice
III
ÍNDICE
INTRODUCCIÓN .............................................................................................................. 1
CAPÍTULO I: ASPECTOS GENERALES DEL MONITOREO Y CONTROL PARA
POSTGRESQL. .................................................................................................................. 6
1.1 Gestor de bases de datos PostgreSQL ................................................................. 6
1.1.1. Características de PostgreSQL ..................................................................... 7
1.1.2. Ventajas de PostgreSQL .............................................................................. 8
1.2 Monitoreo. Apuntes generales. ........................................................................... 9
1.3 Herramientas de monitorización para PostgreSQL. .......................................... 10
1.3.1 Nagios ........................................................................................................ 10
1.3.2 Zabbix ........................................................................................................ 11
1.3.3 Pandora FMS ............................................................................................. 11
1.3.4 Zenoss ........................................................................................................ 11
1.3.5 Nino ........................................................................................................... 12
1.3.6 OpenNMS .................................................................................................. 12
1.3.7 MRTG (The Multi Router Traffic Grapher) .............................................. 13
1.3.8 Munin ......................................................................................................... 13
1.3.9 PgFouine .................................................................................................... 14
1.3.10 PQA ........................................................................................................... 15
1.3.11 PGStatinfo .................................................................................................. 15
1.3.12 Pgwatch ...................................................................................................... 16
1.3.13 LogicMonitor - PostgreSQL Monitoring ................................................... 16
1.3.14 Ion Oracle .................................................................................................. 17
1.3.15 Tabla comparativa de las herramientas. ..................................................... 18
1.4 Ambiente de desarrollo de la aplicación. .......................................................... 20
1.4.1 Lenguajes de programación ....................................................................... 21
1.4.1.1 Python .................................................................................................... 21
1.4.1.2 HTML .................................................................................................... 23
1.4.1.3 Java Script .............................................................................................. 24
1.4.1.4 CSS ......................................................................................................... 25
Índice
IV
1.4.2 Frameworks de desarrollo .......................................................................... 25
1.4.2.1 Django .................................................................................................... 26
1.4.3 Librerías ..................................................................................................... 27
1.4.3.1 ExtJS ...................................................................................................... 27
1.4.3.2 Highcharts .............................................................................................. 28
1.4.4 Herramientas complementarias .................................................................. 29
1.4.4.1 Eclipse .................................................................................................... 29
1.4.4.2 Visual Paradigm ..................................................................................... 30
1.5 Conclusiones del capítulo ................................................................................. 31
CAPÍTULO II: FUNCIONALIDADES Y MODELADO DE LA HERRAMIENTA. ......... 32
2.1 Funcionalidades de la herramienta. ................................................................... 32
2.2 Arquitectura del sistema. ................................................................................... 34
2.3 Diagrama de Casos de Uso del Sistema. ........................................................... 36
1.5.1 Descripción de casos de uso. ..................................................................... 37
2.4 Diagramas de clases. ......................................................................................... 43
2.4.1 Módulo Servicio Web ................................................................................ 43
2.4.2 Módulo Interfaz gráfica ............................................................................. 44
2.5 Diagramas de secuencia. ................................................................................... 46
2.6 Diseño de la base de datos. ............................................................................... 49
2.7 Conclusiones del capítulo. ................................................................................ 52
CAPÍTULO III: IMPLEMENTACIÓN Y DESCRIPCIÓN DE USO. .............................. 53
3.1 Implementación. ................................................................................................ 53
3.1.1 Diagramas de componentes. ...................................................................... 53
3.1.2 Diagrama de despliegue. ............................................................................ 56
3.2 Esbozo del manual de usuario. .......................................................................... 58
3.2.1 Área de servicios registrados. .................................................................... 59
3.2.2 Área de estadísticas. ................................................................................... 61
3.2.3 Área de visualización de datos. .................................................................. 64
3.3 Conclusiones del capítulo. ................................................................................ 66
CONCLUSIONES ............................................................................................................ 67
Índice
V
RECOMENDACIONES ................................................................................................... 68
REFERENCIAS BIBLIOGRÁFICAS ............................................................................... 69
BIBLIOGRAFÍA ............................................................................................................... 73
GLOSARIO DE TÉRMINOS ............................................................................................ 75
ÍNDICE DE FIGURAS
Figura 1: Diagrama de integración de tecnologías................................................................ 35
Figura 2: Diagrama de casos de uso del sistema. .................................................................. 36
Figura 3: Diagrama de clases del módulo Servicio Web. .................................................... 44
Figura 4: Diagrama de clases del módulo Interfaz Gráfica. ................................................ 45
Figura 5: Diagrama de secuencia del CU Registrar servicio web....................................... 47
Figura 6: Diagrama de secuencia del CU Mostrar datos de Procesos del SO. .................. 48
Figura 7: Diagrama de secuencia del CU Mostrar datos de Transacciones a las BD. ..... 49
Figura 8: Modelo físico del almacén de datos de la aplicación........................................... 51
Figura 9: Tablas de hechos del almacén de datos de la aplicación. .................................... 52
Figura 10: Diagrama de componentes para el CU Registrar servicio web. ....................... 54
Figura 11: Diagrama de componentes para el CU Mostrar datos de Transacciones a las
BD. .............................................................................................................................................. 55
Figura 12: Diagrama de componentes para el CU Mostrar datos de Procesos del SO. ... 56
Figura 13: Diagrama de despliegue de la aplicación. ........................................................... 57
Figura 14: Interfaz principal de la aplicación. ....................................................................... 58
Figura 15: Área de servicios web registrados. ....................................................................... 59
Figura 16: Interfaz para registrar un nuevo servicio web. ................................................... 60
Figura 17: Menú para gestionar servicios web registrados. ................................................. 60
Figura 18: Interfaz para conectar un servicio web. ............................................................... 60
Figura 19: Interfaz para desconectar un servicio web. ......................................................... 61
Figura 20: Interfaz para eliminar un servicio web. ............................................................... 61
Figura 21: Estadísticas para el Sistema Operativo. ............................................................... 62
Figura 22: Estadísticas para la Tablas de la BD. ................................................................... 63
Figura 23: Interfaz para las estadísticas de los Archivos de registro.................................. 63
Índice
VI
Figura 24: Menú para visualizar las estadísticas. .................................................................. 63
Figura 25: Interfaz donde se ubicarán las métricas por estadísticas. .................................. 64
Figura 26: Interfaz de visualización de gráficas. ................................................................... 64
Figura 27: Interfaz de visualización de tablas. ...................................................................... 65
Figura 28: Listado de tiempo para actualizar las gráficas. ................................................... 66
ÍNDICE DE TABLAS
Tabla 1: Variables dependientes e independientes de la hipótesis de investigación. ........ 3
Tabla 2: Tabla comparativa de las herramientas. ............................................................ 19
Tabla 3: Estadísticas a desarrollar en la herramienta. ...................................................... 33
Tabla 6: Descripción del CU Registrar servicio web. ..................................................... 37
Tabla 4: Descripción del CU Mostrar datos de Procesos del SO. ................................... 39
Tabla 5: Descripción del CU Mostrar datos de Transacciones a las BD. ........................ 41
Introducción
- 1 - Monitoreo y control para PostgreSQL
INTRODUCCIÓN
El término de bases de datos fue escuchado por primera vez en 1963, en un simposio
celebrado en California, EE.UU. ―Una base de datos se puede definir como un conjunto de
información relacionada que se encuentra agrupada o estructurada, o sea, una serie de datos
organizados y relacionados entre sí, los cuales son recolectados y explotados por los
sistemas de información de una empresa o negocio en particular‖.(Valdés, 2008)
Las bases de datos (BD) en la actualidad constituyen el motor impulsor en el desarrollo de
cualquier empresa informatizada por pequeña que fuese. Como consecuencia se han
desarrollado, a escala mundial y de forma vertiginosa, gran cantidad de aplicaciones que
garanticen un perfecto funcionamiento, administración y control de los gestores de bases de
datos.
Los Sistemas Gestores de Bases de Datos (SGBD), pueden definirse como un paquete
generalizado de software, que se ejecuta en un sistema computacional anfitrión,
centralizando los accesos a los datos y actuando de interfaz entre los datos físicos y el
usuario. ―Las principales funciones que debe cumplir un SGBD se relacionan con la
creación y mantenimiento de la base de datos, el control de accesos, la manipulación de
datos de acuerdo con las necesidades del usuario, el cumplimiento de las normas de
tratamiento de datos, evitar redundancias e inconsistencias y mantener la integridad‖.
(Frost, 1989)
El rápido desarrollo de las tecnologías en el amplio mundo de estos gestores ha provocado
una privatización de la mayoría de las herramientas que existen vinculadas al tema, y
aunque estos tiempos son protagonistas de innumerables intentos por hacer de dichas
herramientas una nueva opción con tecnologías libres, es indudable que aún existen
deficiencias.
Cuba es un país bloqueado, y las tecnologías también lo han sido, es por ello que se ha
propuesto migrar hacia plataformas libres que garanticen una independencia en este
sentido. El tema de las bases de datos se suma a lista de cambios que necesita el país, y el
Introducción
- 2 - Monitoreo y control para PostgreSQL
resultado de estudios realizados han arrojado como mejor opción utilizar PostgreSQL como
gestor de bases de datos.
PostgreSQL es un sistema de gestión de bases de datos, objeto-relacional y libre, publicado
bajo la licencia BSD. ―Una de las ventajas de la utilización de este gestor, además de ser
considerado el mejor de código abierto por su amplia gama de características, reside en su
licencia ya que esta no impone ninguna restricción a los desarrolladores de software en lo
referente a la utilización posterior del código en productos derivados y licencias de estos
programas.‖ (Malcer, 2010)
A raíz de la estrategia de migración, se ha concebido crear un sistema cubano para la
gestión de bases de datos con tecnologías libres y sobre la Web 2.0, basado en el
PostgreSQL como SGBD objeto relacional. Sin embargo, a pesar de las características y
mejoras que posee PostgreSQL, se ha hecho común entre los usuarios que lo utilizan
expresar los problemas de rendimiento con el gestor, situación que no cambiará con la
creación de la herramienta cubana, pues ―proporcionalmente el 60% de los problemas de
rendimiento están dados por el mal uso de las expresiones SQL, el 20% se le atribuye a un
mal modelado de la base de datos y el resto pertenece a partes iguales a una mala
configuración ya sea del SGBD o del sistema operativo.‖ (Oliveira, 2008)
En la actualidad los encargados de analizar el funcionamiento de las bases de datos,
identifican estos problemas de rendimiento del gestor PostgreSQL utilizando, en su
mayoría, un conjunto de herramientas que deben ser configuradas por consola, con
interfaces poco atractivas y que proporcionan escasa información de la actividad del gestor.
Esta situación obliga a los administradores a utilizar métodos alternativos para obtener los
datos necesarios, pero debido a la insuficiente documentación del tema en ocasiones esta
tarea se ve entorpecida.
De la situación anterior se identifica el siguiente problema científico: ¿cómo determinar
los problemas que afectan el rendimiento del gestor PostgreSQL?
Introducción
- 3 - Monitoreo y control para PostgreSQL
Por esta razón se plantea como objetivo general de la investigación: elaborar una
herramienta sobre la Web 2.0 para el monitoreo y control de la explotación y
funcionamiento de PostgreSQL, que permita identificar los problemas que afectan el
rendimiento de este gestor.
Del objetivo general de la investigación se derivan los siguientes objetivos específicos:
1. Caracterizar varias de las herramientas de monitoreo y control que existen para
PostgreSQL.
2. Definir las tecnologías de software libre adecuadas que permitan elaborar una
aplicación sobre la Web 2.0 para monitorear el rendimiento de PostgreSQL.
3. Realizar el análisis y diseño de la aplicación utilizando UML.
4. Implementar la aplicación sobre la Web 2.0.
Las especificaciones anteriores permiten la composición de la siguiente hipótesis de
investigación: al desarrollar una herramienta para monitorear el rendimiento del
SGBDOR PostgreSQL, se logrará que los administradores gestionen el funcionamiento e
identifiquen los problemas del mismo, en ejecuciones reales.
Variables
Tabla 1: Variables dependientes e independientes de la hipótesis de investigación.
Independientes Dependientes
Herramienta para monitorear el
funcionamiento de PostgreSQL.
Gestionar el funcionamiento de
PostgreSQL
Identificar los problemas de
rendimiento de PostgreSQL.
Para dar cumplimiento a las tareas planteadas se han seleccionado varios métodos de
investigación. Entre los métodos teóricos están: el Analítico-Sintético para el análisis de
los métodos de monitoreo y control de bases de datos que existen actualmente así como
documentos, técnicas y herramientas, permitiendo la extracción de los elementos más
importantes y la elaboración de conclusiones; y el Análisis Histórico-Lógico para el estudio
Introducción
- 4 - Monitoreo y control para PostgreSQL
de la evolución y desarrollo de las herramientas de monitoreo y control. Se utiliza además
como método empírico la Entrevista, como técnica de recopilación de información. El tipo
de investigación utilizado en la presente tesis es el descriptivo.
Justificación de la investigación
Como parte de la necesidad de Cuba de lograr una independencia tecnológica, se proponen
varias ideas como optimizar el uso de las aplicaciones que pueden ser utilizadas por la poca
cuota monetaria que representan. Es por ello que la identificación de problemas de
rendimiento en PostgreSQL además de apoyar el uso de este gestor y garantizar un mejor
funcionamiento del mismo, le ahorraría a las empresas y usuarios gastos en licencias de
software.
Aportes de la investigación
El valor práctico de esta investigación está en lograr el desarrollo una herramienta, con la
utilización de tecnologías libres y sobre la web 2.0, para monitorear PostgreSQL y que
integrándose a la Interfaz de Administración, agrupe las características de las aplicaciones
de monitoreo y control existentes y posibilite a los usuarios identificar los problemas de
rendimiento del gestor.
El valor metodológico consiste en la integración de varias tecnologías libres como se
detallan a continuación.
Interacción entre la biblioteca de componentes gráficos ExtJS y el framework de
desarrollo Web Django, a través de la confección de una plantilla HTML donde son
incluidos los ficheros JavaScript que contienen la implementación de las interfaces
de usuario publicada a través de una vista en Django. Además, para cargar los datos
de las interfaces se crean vistas en Django, hacia donde serán enviadas las consultas
AJAX de la biblioteca ExtJS en formato JSON.
Comunicación entre Django y las bibliotecas ExtJS y Highcharts, esta última
utilizada para las gráficas. Para lograr un correcto acople y permitir que el código
de las gráficas estuviera embebido en el código JavaScript de la interfaces creadas
Introducción
- 5 - Monitoreo y control para PostgreSQL
con ExtJS se hizo necesario la utilización de consultas en JQuery para la
comunicación con las urls que provee Django.
Interacción entre Django y el protocolo XMLRPC utilizado para la publicación del
servicio web. Para ello se registran en el fichero settings.py de un proyecto Django
los métodos del servicio web que luego son publicados mediante http para ser
accedidos desde la aplicación.
El documento está dividido en tres capítulos que se describen a continuación:
Capítulo I: “Aspectos generales del monitoreo y control para PostgreSQL”: se establecen
los conceptos tratados durante la investigación y se describen las herramientas de
monitoreo y control que existen actualmente para PostgreSQL. Además se justifica la
selección de las tecnologías a utilizar durante el desarrollo de la aplicación.
Capítulo II: “Funcionalidades y modelado de la herramienta”: se exponen las
funcionalidades, arquitectura y modelado de la herramienta a través de diagramas.
Capítulo III: “Implementación y descripción de uso”: se muestran diagramas de
componente y despliegue como representación de la implementación, para concluir con un
esbozo del manual de usuario que especifique la manipulación y uso de la aplicación
Seguidamente se presentan las conclusiones y las recomendaciones del trabajo, así como
las referencias y bibliografía utilizadas.
Capítulo 1
- 6 -- Monitoreo y control para PostgreSQL
CAPÍTULO I: ASPECTOS GENERALES DEL MONITOREO
Y CONTROL PARA POSTGRESQL.
Dentro del estudio y desarrollo de sistemas tecnológicos en el campo electrónico y
computacional, se hace necesario satisfacer las necesidades de la industria, las mismas
que requieren herramientas que automaticen labores pesadas y realicen controles
autónomos, ayudando a un desarrollo más rápido y óptimo de tareas, que de otro modo,
se convertirían en actividades tediosas y susceptibles de errores. Una de las tareas más
importantes de los administradores de sistemas o de redes, es realizar periódicamente el
monitoreo de su entorno, para encontrar tendencias y anticiparse a los problemas.
Es por ello que en este capítulo se exponen algunos apuntes generales sobre el
monitoreo y las principales características del gestor de bases de datos que se desea
monitorear. Además se realiza un estudio de las herramientas más conocidas en este
tema complementada con una tabla comparativa, así como las tecnologías utilizadas para
el desarrollo de la herramienta de monitoreo objetivo de esta tesis.
1.1 Gestor de bases de datos PostgreSQL
PostgreSQL es un Sistema de Gestión de Bases de Datos Objeto-Relacionales
(ORDBMS) que ha sido desarrollado de varias formas desde 1977. ―Comenzó como un
proyecto denominado Ingres en la Universidad Berkeley de California. Ingres fue más
tarde desarrollado comercialmente por la Relational Technologies/Ingres Corporation.
En 1986 otro equipo dirigido por Michael Stonebraker de Berkeley continuó el
desarrollo del código de Ingres para crear un sistema de bases de datos objeto-
relacionales llamado Postgres. En 1996, debido a un nuevo esfuerzo de código abierto y
a la incrementada funcionalidad del software, Postgres fue renombrado a PostgreSQL,
tras un breve periplo como Postgres95. El proyecto PostgreSQL sigue actualmente un
activo proceso de desarrollo a nivel mundial gracias a un equipo de desarrolladores y
contribuidores de código abierto.
Capítulo 1
- 7 -- Monitoreo y control para PostgreSQL
PostgreSQL está ampliamente considerado como el sistema de bases de datos de código
abierto más avanzado del mundo‖.(González, Carlos D. 2011)
1.1.1. Características de PostgreSQL
PostgreSQL proporciona un gran número de características que normalmente sólo se
encontraban en las bases de datos comerciales tales como DB2 u Oracle. La siguiente es
una breve lista de algunas de esas características, a partir de PostgreSQL 7.1.x.
“Objeto-Relacional: aproxima los datos a un modelo objeto-relacional, y es
capaz de manejar complejas rutinas y reglas. Ejemplos de su avanzada
funcionalidad son consultas SQL declarativas, control de concurrencia multi-
versión, soporte multi-usuario, transacciones, optimización de consultas,
herencia, y arreglos.
Altamente extensible: soporta operadores, métodos de acceso y tipos de datos
definidos por el usuario.
Soporte SQL: soporta la especificación SQL99 e incluye características
avanzadas tales como las uniones (joins) de SQL92.
Integridad referencial: soporta integridad referencial, la cual es utilizada para
garantizar la validez de los datos de la base de datos.
API Flexible: la flexibilidad del API de PostgreSQL ha permitido a los
vendedores proporcionar soporte al desarrollo fácilmente para el RDBMS
PostgreSQL. Estas interfaces que incluye pueden ser escritas en el lenguaje
Object Pascal, Python, Perl, PHP, ODBC, Java/JDBC, Ruby, TCL, C/C++, y
Pike.
Lenguajes procedurales: tiene soporte para lenguajes procedurales internos,
incluyendo un lenguaje nativo denominado PL/pgSQL. Este lenguaje es
comparable al lenguaje procedural de Oracle, PL/SQL. Otra ventaja de
PostgreSQL es su habilidad para usar Perl, Python, o TCL como lenguaje
procedural embebido.
Cliente/Servidor: usa una arquitectura proceso-por-usuario cliente/servidor. Esta
es similar al método del Apache 1.3.x para manejar procesos. Hay un proceso
Capítulo 1
- 8 -- Monitoreo y control para PostgreSQL
maestro que se ramifica para proporcionar conexiones adicionales para cada
cliente que intente conectar a PostgreSQL. (González, Carlos D. 2011)
Restricciones y disparadores: tienen la función de mantener la integridad y
consistencia en la BD. Consisten en la ejecución de acciones antes o después de
un evento de BD.
Múltiples tipos de datos predefinidos: como todos los manejadores de bases de
datos, PostgreSQL implementa los tipos de datos definidos para el estándar
SQL3 y aumenta algunos otros.
Conectividad TCP/IP, JDBC y ODBC.
Interfaz con diversos lenguajes: C, C++, Java, Delphi, Python, Perl, PHP, Bash,
etc‖. (Camps Paré, Rafael 2005)
1.1.2. Ventajas de PostgreSQL
El sistema de gestión de bases de datos PostgreSQL ofrece muchas ventajas respecto a
otros sistemas de bases de datos, algunas de ellas son:
“Instalación ilimitada, ya que no hay costo asociado a la licencia del software.
Esto tiene varias ventajas adicionales:
Modelos de negocios más rentables con instalaciones a gran escala.
No existe la posibilidad de ser auditado para verificar cumplimiento de
licencia en ningún momento.
Flexibilidad para hacer investigación y desarrollo sin necesidad de incurrir
en costos adicionales de licenciamiento.
Mejor soporte, pues cuenta con una importante comunidad de profesionales.
Ahorros considerables en costos de operación ya que el software ha sido
diseñado y creado para tener un mantenimiento y ajuste mucho menor que los
productos de los proveedores comerciales, conservando todas las características,
estabilidad y rendimiento.
Capítulo 1
- 9 -- Monitoreo y control para PostgreSQL
Estabilidad y confiabilidad, puesto que PostgreSQL nunca ha presentado caídas
en varios años de operación de alta actividad.
Extensible ya que el código fuente está disponible para todos sin costo.
Multiplataforma pues PostgreSQL está disponible en casi cualquier Unix y para
Windows.
Diseñado para ambientes de alto volumen ya que usa una estrategia de
almacenamiento de filas llamada MVCC para conseguir una mejor respuesta en
ambientes de grandes volúmenes.
Herramientas gráficas para administrar las bases de datos (pgAdmin, pgAccess)
y para hacer diseño de bases de datos (Tora, Data Architect)‖.(Grupo de
desarrollo, 2003)
1.2 Monitoreo. Apuntes generales.
Monitoreo es un término no incluido en el diccionario de la Real Academia Española
(RAE). ―Su origen se encuentra en monitor, que es un aparato que toma imágenes de
instalaciones filmadoras o sensores y que permite visualizar algo en una pantalla. El
monitor, por lo tanto, ayuda a controlar o supervisar una situación, es por ello que el
monitoreo, a rasgos generales, consiste en la observación del curso de uno o más
parámetros para detectar eventuales anomalías”.(Grupo "Definición.de", 2008)
Este concepto se traduce a los sistemas gestores de bases de datos, a los cuales es
necesario monitorear para garantizar un funcionamiento óptimo. Sin embargo, para que
esto sea completo debe incluir varios aspectos, entre los que se encuentran:
―Monitoreo en tiempo real‖, determinado por la forma en que se presentan los
datos, ya sea en gráficos, tablas, alarmas u otros.(García, 2008)
―Monitoreo en el tiempo o por datos históricos‖, establecido por la capacidad de
mostrar datos tomados con anterioridad, principalmente utilizados para hacer
estudios de corto, mediano y largo plazo. (Retout, 2008)
Capítulo 1
- 10 -- Monitoreo y control para PostgreSQL
Estadísticas recolectadas, que pueden ser obtenidas de las ―tablas del catálogo, el
sistema operativo y los archivos de registro‖. (Consorcio SIU, 2011)
1.3 Herramientas de monitorización para PostgreSQL.
En la actualidad se han desarrollado un amplio número de herramientas con el propósito
de monitorear recursos, sistemas o sencillamente gestores de bases de datos, algunas
especializadas y otras no. En su mayoría presentan deficiencias o inconvenientes, por lo
que se ha decidido realizar un análisis de algunas de estas herramientas con el objetivo
de seleccionar sus características y desventajas más significativas y tenerlas en cuenta
durante la elaboración de la aplicación propuesta, sin olvidar que la misma deberá ser
especializada en el monitoreo para el gestor PostgreSQL. Como parte del estudio de
mercado se incluirán además herramientas de propósito general y para el sistema gestor
de bases de datos Oracle por su amplia aceptación a nivel mundial.
1.3.1 Nagios
Originalmente llamado NetSaint (años 1999 a 2001), Nagios es un monitor de servidores
y aplicaciones diseñado originalmente para informar de problemas de una forma
proactiva, reportándolos vía email, SMS, mensaje instantáneo y/o solucionándolos
automáticamente antes de que el cliente o usuario final pueda darse cuenta de los
mismos. ―Probablemente Nagios haya sido el padre de todos los sistemas de
monitorización bajo Linux, pudiendo tanto su servidor como los agentes, ejecutarse
únicamente desde este entorno. Estos agentes, permiten monitorear equipos instalados
en cualquier lugar con cualquier tipo de conexión. Ellos son los que se encargan de
recoger los datos y enviarlos a un servidor central.
La potencia de Nagios viene dada por un sistema de plugins externos, encargados de
enviar la información requerida. Estos plugins pueden programarse de una forma
sencilla en bash o en Perl, dando una potencia y flexibilidad sin igual a la herramienta.
Aunque la configuración es poco amigable, está basado en Web, donde se puede
consultar el estado actual de los equipos, históricos e informes. Su sistema de alarmas es
Capítulo 1
- 11 -- Monitoreo y control para PostgreSQL
perfecto para dar un vistazo y ver qué está fallando dentro de la red‖. (Grupo Nagios,
2009)
1.3.2 Zabbix
Zabbix (nacido en el año 2001) es una solución de monitorización de bajo coste, capaz
de recoger datos de cualquier aplicación o servidor, con un sistema de envío y captura de
datos a través de sus agentes. Es importante señalar que ―Zabbix es capaz de monitorear,
además, equipos Windows, AIX, FreeBSD, HP-UX, OpenBSD y Solaris ―desde dentro‖
y personalizar sus agentes con parámetros definidos por el usuario. La ventaja de Zabbix
reside en su interfaz web soportado por una base de datos SQL (MySQL, PostgreSQL o
SQLite). Posee un sistema proactivo que permite solucionar automáticamente los
problemas, un sistema de monitorización, alertas y visualización de gráficos que no
tienen otros sistemas de monitorización, ni siquiera los mejores programas comerciales‖.
(Grupo Zabbix, 2001)
1.3.3 Pandora FMS
Relativamente joven (Año 2005), Pandora FMS (Free Monitoring System) permite, a
través de agentes analizar el estado y rendimiento de los diferentes parámetros ofrecidos
por cualquier plataforma del mercado (Linux, Solaris, MS Windows, AIX y otros).
―Todas las comunicaciones se realizan a través de SSH, FTP, NFS o un contenedor
XML para transportar los datos que se guardarán en una base MySQL de un Servidor
Central, el cual, será el encargado de recopilar cada uno de esos datos y mostrarlos en
una magnífica interfaz Web. Hay que recalcar que Pandora FMS permite controlar
sistemas Windows a través de WMI, ideal para redes en compañías con instalaciones
mixtas Linux/Windows‖. (Grupo Pandora FMS, 2005)
1.3.4 Zenoss
Zenoss del año 2006, es un software que sorprende por su capacidad e interfaz
simplemente echando un vistazo a su página Web. Funciona sobre Linux, FreeBSD y
Capítulo 1
- 12 -- Monitoreo y control para PostgreSQL
como novedad, sobre Mac OS X y VMWare Player, pudiendo ejecutarse de ésta manera
sobre Linux o Windows de la forma más sencilla posible. ―Zenoss se distribuye en rpm
para su instalación automática bajo RedHat, CentOS y Fedora Core 6. Para Suse,
Debian, Ubuntu, FreeBSD, Gentoo, Solaris 10 y Mac OS X, se distribuyen las fuentes
para ser compilados en cada uno de los sistemas mencionados.
Tiene una interfaz similar al de Nagios. De hecho, puede importar sus plugins y, aunque
su configuración no es todo lo sencilla que debería, es capaz de detectar los equipos de
nuestra red automáticamente utilizando SSH. Zenoss no necesita agentes en las
máquinas remotas, ya que con SSH puede ejecutar de forma segura cualquier comando
que deseemos para extraer todo tipo de información. Para monitorear máquinas
Windows, utiliza un binario que conecta usando WMI para modelar sus servicios. Por
último, mencionar que el sistema de gráficos que utiliza es similar al de MRTG‖. (Grupo
Zenoss, 2005)
1.3.5 Nino
―Permite gestionar enrutadores, conmutadores, servidores y aplicaciones. Está pensado
para redes locales, ya que no dispone de agentes que puedan reportar a un servidor
central. Basado en Web, Nino no destaca por su interfaz, nada cómodo de gestionar.
Utiliza SNMP, HTTP/TCP y WMI. Sus gráficos son suficientes para una pequeña red
con máquinas Linux y Windows‖. (Gerstel, Jorgen 2009)
1.3.6 OpenNMS
Es experto en monitorear equipos en una red local a través de SNMP con un sistema
muy robusto de notificaciones. Es, junto con Nagios, el padre de la monitorización
remota. ―Posee una buena interfaz web, aunque la evaluación de los datos mostrados se
hace a veces complicada. Su demo en línea puede dar una muy buena idea de su
funcionamiento y evaluarlo sin necesidad de instalarlo en nuestro equipo‖. (Grupo
OpenNMS, 2000)
Capítulo 1
- 13 -- Monitoreo y control para PostgreSQL
1.3.7 MRTG (The Multi Router Traffic Grapher)
―MRTG es la referencia para la monitorización y medición de carga en una red. Escrito
en Perl, puede trabajar en Linux, Unix, Windows Mac OS y NetWare y utiliza SNMP
para recoger los datos. Aunque su instalación y configuración no es muy intuitiva, su
consumo de recursos es tan pequeño y su información tan valiosa que merece la pena
instalarlo. Utiliza RRDtool como sistema de base de datos para MRTG y Cacti como
interfaz Web para RRDtool‖. (Oetiker, Tobias 2011)
1.3.8 Munin
Munin es un programa de monitorización de servidores que genera estadísticas sobre el
funcionamiento de los recursos como memoria, disco duro y servicios. Utiliza las
herramientas RRDtool para generar gráficas de rendimiento de los parámetros del
sistema analizado. ―Utiliza una interfaz web para mostrar las gráficas generadas, permite
trabajar de forma distribuida, mostrando la información de varios servidores. Para ello se
instala en un servidor la parte servidora de Munin y en el resto la parte cliente, que
mandará los datos recopilados al servidor para que éste los muestre. Está hecho en Perl y
permite el uso de plugins, lo cual lo hace realmente versátil. Algunos de esto plugins
permiten:
Mostrar el número de conexiones en idle, espera y conectadas
(pg__connections).
Mostrar el tamaño de base de datos suministrado por pg_database_size
(pg__db_size).
Mostrar todos los posibles bloqueos desde PostgreSQL (pg__locks).
Mostrar todos datos desde una base de datos para una vista específica
(pg__stat_database).
Mostrar todos las columnas en pg_stat_*_tables, excepto *vacuum y *analyze
(pg__stat_tables).
Capítulo 1
- 14 -- Monitoreo y control para PostgreSQL
Mostrar todas las columnas en pg_statio_*_tables (pg__statio_tables) y mostrar
todas las columnas en pg_stat_bgwriter (pg__stat_bgwriter)‖.(Grupo Munin,
2009)
1.3.9 PgFouine
Esta herramienta es un analizador de registros desarrollada en PHP, orientada a objetos y
utiliza los archivos de registro (log file) para generar informes detallados que
proporcionan la información necesaria para optimizar y acelerar el trabajo en el gestor
PostgreSQL. PgFouine es un software gratuito y se distribuye bajo la licencia GPL. El
mismo fue diseñado para analizar grandes archivos de registro con baja utilización de
memoria y basado en el analizador PQA que se describirá más adelante. Desde la
primera versión de PgFouine, liberada en noviembre del 2005, su grupo de desarrollo ha
realizado cambios, correcciones y adición de nuevas funcionalidades hasta obtener la
versión 1.2 publicada en febrero del año 2010.
Algunas de sus características son:
―Soporta la función de log_prefix de PostgreSQL 8.x.
Genera informes de errores y opciones de líneas de comando para dichos
informes.
Genera informes de las estadísticas por hora, con la creación de gráficos.
Posibilita el filtrado de las consultas de bases de datos o usuarios.
Posee opciones de titularidad, syslogident y memoryLimit.
Contiene además el analizador de registro Vacuum Verbose y una herramienta
llamada Tsung para generar archivos de registro en XML.
Soporte para listas y expresiones regulares en bases de datos de usuario y
opciones de filtro.
Además de las características mencionadas PgFouine utiliza GeSHi para colorear
consultas SQL, Artichow para dibujar gráficos, SimpleTest para las pruebas unitarias y
Sorttable para hacer varias tablas ordenadas dinámicamente‖.(Copeland, 2010)
Capítulo 1
- 15 -- Monitoreo y control para PostgreSQL
1.3.10 PQA
Practical Query Analysis (PQA) es una herramienta desarrollada en Ruby bajo la
licencia BSD, que genera reportes en formato HTML de las consultas más lentas, las
más frecuentes, por tipo (select/insert/update/delete) para PostgreSQL y MySQL. La
primera versión distribuida en mayo del 2004 constituyó la base para una sucesión de
cambios y mejoras en la aplicación, hasta obtener la versión 1.6 publicada en noviembre
del 2005.
Entre sus principales características se encuentran:
―Normalización de consultas.
Creación de reportes por frecuencia de las consultas.
Exporta las consultas en formato HTML.
Colorea las palabras claves de SQL en el informe HTML.
Contiene soporte para el uso de los archivos de registro de PostgreSQL.
Contiene soporte para analizar la duración de las consultas de PostgreSQL.
Posee capacidad para manejar los registros LOG_PID / log_timestamp /
log_connection de PostgreSQL.
Posee soporte para el análisis de los archivos de registro de MySQL.
Un reporte general realizado con la herramienta proporcionaría cuatro tipos de
estadísticas: consultas por tipo, consulta que ocupó la mayoría del tiempo, consultas más
lentas y consultas más frecuentes‖. (Copeland, 2005)
1.3.11 PGStatinfo
Es una herramienta para monitorear las estadísticas y la actividad de PostgreSQL. Ha
sido desarrollado en C y Perl, y distribuido bajo la licencia BSD. ―Se basa
principalmente en las estadísticas recogidas de la tabla pg_stats de PostgreSQL. Esta
tabla proporciona el acceso a la información almacenada en el catálogo pg_statistic. Esta
vista permite el acceso sólo a las filas de pg_statistic que corresponden a las tablas a las
Capítulo 1
- 16 -- Monitoreo y control para PostgreSQL
que el usuario tiene permiso para leer, por lo que es seguro permitir el acceso de lectura
pública de este punto de vista‖.(Kasahara, 2009)
1.3.12 Pgwatch
Pgwatch es una herramienta fácil de usar de la empresa Cybertec. Funciona solo para
PostgreSQL 9,0. Este sistema recoge estadísticas periódicamente de las BD PostgreSQL
que le interesan y almacena toda la información en una base de datos PostgreSQL local.
Tiene un amplio conjunto de gráficos predefinidos que recogen información de:
―I/O de disco.
Caché en el tiempo.
Caché de tablas / índices.
La actividad del sistema.
Conexiones de base de datos.
Consultas activas.
Número de transacciones (commit, rollback, etc).
Optimizador de la información.
Exploraciones secuenciales.
Examen de los índices.
Pgwatch además proporciona una hoja de trabajo para utilizar SQL y ejecutar consultas
en el servidor, el tamaño de las bases de datos y un dashboard para obtener una visión
rápida de lo que está pasando‖.(Grupo Pgwatch, 2002)
1.3.13 LogicMonitor - PostgreSQL Monitoring
Con LogicMonitor se puede dar seguimiento de varias bases de datos PostgreSQL en
cuestión de minutos. No necesita secuencias de comando para instalarlo, ni bibliotecas
que configurarlo. LogicMonitor descubre automáticamente las bases de datos
PostgreSQL, e informa de todos los indicadores importantes de rendimiento. Además
controla la salida de cualquier consulta, y la monitorización de aplicaciones específicas.
La herramienta recopila algunas estadísticas como:
Capítulo 1
- 17 -- Monitoreo y control para PostgreSQL
―CPU
I/O de disco
Memory/Swap
Actividad de la BD
Operaciones de la BD
Ejecución de consultas.
Uso de disco.
Conexiones
Bloqueos.
LogicMonitor está disponible para suscripciones mensuales. Los precios se basan en el
número de dispositivos, por ejemplo:
Un total de 15 equipos: $ 20 al mes por cada dispositivo.
16 a 20 equipos: $ 13 al mes por cada dispositivo adicional.
21 a 50 equipos: $ 11 al mes por cada dispositivo adicional.
51 a 75 equipos: $ 9 al mes por cada dispositivo adicional.
Desde 76 hasta 100 dispositivos: $ 7 al mes por cada dispositivo adicional.
La herramienta almacena los datos de hasta 1 año, así que es fácil ver las tendencias
históricas, detectar patrones de uso, y estimar las necesidades de crecimiento
futuro‖.(Grupo LogicMonitor, 2008)
1.3.14 Ion Oracle
Ion Oracle es una nueva herramienta de ajuste de rendimiento que analiza el estado de
sus bases de datos Oracle. Ion es capaz de obtener una visión única del rendimiento de
su sistema de Oracle. Está formado por tres partes integrantes:
Ion Expert: analiza los eventos de espera, los parámetros de E/S, y mucho más
para ofrecer asesoramiento adaptado a su sistema.
Capítulo 1
- 18 -- Monitoreo y control para PostgreSQL
Ion Metrics: permite trazar cualquier métrica, visualizar los datos a través del
tiempo, un promedio por hora del día o el día de la semana, e incluso con líneas
de tendencia y predicción.
Ion Scripts: proporciona más de un centenar de estadísticas útiles en formato de
gráficos y texto, para ayudar a analizar el sistema.
―Posee muchas características distribuidas en las tres partes descritas con anterioridad
entre las que se encuentran:
Permite acceder a los componentes básicos en casi cualquier métrica utilizada en
el sistema.
Muestra informes personalizables.
Compatible con la versión de Oracle 10g y 11g.
Contiene una interfaz de eventos para el monitoreo detallado a nivel de sesión y
de sistema.
Realiza un monitoreo en tiempo real y el tiempo.
Monitoriza y controla los bloqueos.
Permite ver los detalles al momento e históricos de los objetos como las tablas,
índices, vistas materializadas, uso de CPU y más.
Posee cuadros de mando personalizados para un seguimiento regular
Controla los objetos y el crecimiento de las base de datos.‖(Burleson Enterprises
2009)
1.3.15 Tabla comparativa de las herramientas.
Como se muestra en la tabla 2 se realiza un resumen de las herramientas explicadas en
acápites anteriores. De forma general se pueden observar que las mismas pueden ser de
propósito específico y de propósito general, prestándole menor atención a estas últimas
puesto que la herramienta desarrollada se dedicará de forma exclusiva al monitoreo del
gestor PostgreSQL.
Capítulo 1
- 19 -- Monitoreo y control para PostgreSQL
Tabla 2: Tabla comparativa de las herramientas.
De aquellas que son de interés en este estudio se puede apreciar que existen algunas
herramientas propietarias, y aunque se encuentran bastante completas en cuestión de
funcionalidades, son inaccesibles para la mayoría de los usuarios por sus altos impuestos
en licencias.
Por otra parte las herramientas libres como PgFouine, PQA y PGStatinfo carecen de
funcionalidades y deben ser configuradas por consola, característica que les quita
prestigio ante los usuarios pues hacen el trabajo más engorroso.
Munin, sin embargo es una herramienta bastante completa pero pasa por alto la
obtención de estadísticas de los archivos del registro del gestor y no permite un
monitoreo por datos históricos.
Herramientas
Libre Web Propósito
específico
Tipo de monitoreo Tipo de estadísticas Deficiencias
principales
Nagios X X Tiempo real
Zabbix X X Tiempo real y por
datos históricos
Pandora FMS X X Tiempo real
Zenoss X X Tiempo real y por
datos históricos
Nino X X Tiempo real
OpenNMS X X Tiempo real y por
datos históricos
MRTG X X Tiempo real y por
datos históricos
Munin X X X Tiempo real SO y Tablas del
catálogo
Falta archivos de
registro del gestor
PgFouine X Cliente X Tiempo real Log Configuración por
consola
PQA X Cliente X Tiempo real Tablas del catálogo Configuración por
consola
PGStatinfo X Cliente X Tiempo real Tablas del catálogo Configuración por
consola
Pgwatch X X X Tiempo real y por
datos históricos
SO y tablas del
catálogo
Solo para
PostgreSQL 9.0
LogicMonitor X X Tiempo real y por
datos históricos
SO y tablas del
catálogo
Propietario
Ion Oracle X Tiempo real y por
datos históricos
SO y tablas del
catálogo
Propietario
Capítulo 1
- 20 -- Monitoreo y control para PostgreSQL
Una de las herramientas más completa es Pgwatch, pues cumple con la mayoría de las
funcionalidades que se buscan en un monitoreo correcto a excepción de la extracción de
datos de los archivos del registro, sin embargo suponiendo que esto no fuera tan
importante se presenta una deficiencia que es imposible obviar pues esta herramienta
solo funciona para PostgreSQL 9.0, haciéndola inaccesible para aquellos usuarios que no
trabajen sobre dicha versión.
Por lo anteriormente expuesto se concluye que la aplicación a desarrollar deberá
contener las funcionalidades presentes en estas herramientas y además aquellas de las
que son carentes. Las características que poseerá la herramienta propuesta se expondrán
en próximos acápites.
1.4 Ambiente de desarrollo de la aplicación.
Con el desarrollo de las tecnologías, libres y propietarias, se han incrementado las
opciones de selección de un ambiente de desarrollo adecuando y ajustable a las
características de un determinado software.
Para el caso de la herramienta a desarrollar, objetivo de esta tesis, se decide optar por
tecnologías libres, debido a los altos precios que impone el software propietario.
Tomando como base las particularidades del monitoreo para un SGBD y lo que deberá
mostrar dicha herramienta se decide utilizar:
HTML, JavaScript y CSS como lenguaje de programación del lado del cliente,
pues la aplicación deberá ser Web.
Python como lenguaje de programación del lado del servidor.
Librería ExtJS en su versión 3.0 para las interfaces de usuario.
Librería Highcharts para graficar las estadísticas que se mostrarán en la
herramienta.
Capítulo 1
- 21 -- Monitoreo y control para PostgreSQL
Django escrito en Python como framework web para la comunicación cliente -
servidor.
XMLRPC para la publicación del servicio web con la utilización de la librería
xmlrpclib para Python.
Psycopg2 para conectarse utilizando Python a los servidores en PostgreSQL.
Eclipse como IDE de programación.
Visual Paradigm para el modelado de la herramienta.
A continuación se describen las características de las herramientas seleccionadas.
1.4.1 Lenguajes de programación
Los lenguajes de programación descritos en este acápite se dividen en dos tipos:
Lenguajes del lado del servidor que son reconocidos, ejecutados e interpretados
por el propio servidor y que se envían al cliente en un formato comprensible
para él.
Lenguajes del lado cliente y que pueden ser directamente comprendidos por el
navegador y no necesitan un pre tratamiento.
1.4.1.1 Python
Python es un lenguaje de guión o scripting independiente de plataforma y orientado a
objetos, preparado para realizar cualquier tipo de programa, desde aplicaciones
Windows a servidores de red o incluso, páginas web. Es un lenguaje interpretado que
ofrece ventajas como la rapidez de desarrollo e inconvenientes como una menor
velocidad. En los últimos años el lenguaje se ha hecho muy popular, gracias a varias
razones como:
Capítulo 1
- 22 -- Monitoreo y control para PostgreSQL
La cantidad de librerías que contiene, tipos de datos y funciones incorporadas en
el propio lenguaje, que ayudan a realizar muchas tareas habituales sin necesidad
de tener que programarlas desde cero.
La sencillez y velocidad con la que se crean los programas.
La cantidad de plataformas en las que se desarrollar, como Unix, Windows,
OS/2, Mac, Amiga y otros.
Es gratuito, incluso para propósitos empresariales.
Entre sus principales características se encuentran:
“Propósito general, pues se pueden crear todo tipo de programas.
Multiplataforma.
Interpretado, ya que no se debe compilar el código antes de su ejecución.
Interactivo, pues dispone de un intérprete por línea de comandos en el que se
pueden introducir sentencias. Cada sentencia se ejecuta y produce un resultado
visible.
Orientado a Objetos.
Funciones y librerías, ya que dispone de muchas funciones incorporadas en el
propio lenguaje, para el tratamiento de strings, números, archivos, etc. Además,
existen muchas librerías que se importan en los programas para tratar temas
específicos como la programación de ventanas o sistemas en red o cosas tan
interesantes como crear archivos comprimidos en .zip.
Sintaxis clara, pues tiene una sintaxis muy visual, gracias a una notación
identada (con márgenes) de obligado cumplimiento. Para separar las porciones
de código en Python se debe tabular hacia dentro, colocando un margen al
código que iría dentro de una función o un bucle. Esto ayuda a que todos los
programadores adopten unas mismas notaciones y que los programas de
cualquier persona tengan un aspecto muy similar‖.(Python community, 1990)
Capítulo 1
- 23 -- Monitoreo y control para PostgreSQL
Xmlrpclib
Esta es una librería de Python que tributa a XMLRPC para la comunicación con el
servicio web. XMLRPC es un protocolo de llamada a procedimiento remoto que usa
XML para codificar los datos y HTTP como protocolo de transmisión de mensajes.
―Es un protocolo muy simple ya que solo define unos cuantos tipos de datos y comandos
útiles, además de una descripción completa de corta extensión. La simplicidad del
XMLRPC está en contraste con la mayoría de protocolos RPC que tiene una
documentación extensa y requiere considerable soporte de software para su uso‖.
(Mateu, 2008)
Psycopg2
La combinación de Python y PostgreSQL es potente, sobre todo cuando se utiliza el
driver psycopg2. ―Es un driver para interactuar con PostgreSQL desde el lenguaje de
script Python. Está escrito en C y proporciona para llevar a cabo de manera eficiente
toda una gama de operaciones de SQL en bases de datos PostgreSQL. Permite múltiples
conexiones u objetos de conexión, además con su utilización se obtienen los datos como
un diccionario de Python. Además posibilita consultas asincrónicas, un filtrado
automático y un agrupamiento de conexiones‖. (Varrazzo, 2010)
1.4.1.2 HTML
HyperText Mark-Up Language (HTML), que en español seria Lenguaje para el Formato
de Documentos de Hipertexto, es un lenguaje de marcas hipertextuales, diseñado para
estructurar textos para generar páginas web. Gracias a Internet y a los navegadores web,
el HTML se ha convertido en el formato más fácil para la creación de páginas web
debido a su sencillez.
―El lenguaje HTML es un estándar reconocido en todo el mundo y cuyas normas define
un organismo sin ánimo de lucro llamado World Wide Web Consortium, más conocido
como W3C. Como se trata de un estándar reconocido por todas las empresas
Capítulo 1
- 24 -- Monitoreo y control para PostgreSQL
relacionadas con el mundo de Internet, una misma página HTML se visualiza de forma
muy similar en cualquier navegador de cualquier sistema operativo.
El propio W3C define el lenguaje HTML como un lenguaje reconocido universalmente
y que permite publicar información de forma global". Desde su creación, el lenguaje
HTML ha pasado de ser un lenguaje utilizado exclusivamente para crear documentos
electrónicos a ser un lenguaje que se utiliza en muchas aplicaciones electrónicas como
buscadores, tiendas online y banca electrónica. HTML es un lenguaje utilizado
únicamente para dar estructura a una página web. El estilo de la propia página web
vendrá dado por un enlace a una hoja CSS.‖ (Prado, 2007)
La mayoría de las etiquetas del lenguaje HTML son semánticas. La interpretación de las
etiquetas es realizada por el navegador web. ―El lenguaje HTML es extensible, se le
pueden añadir características, etiquetas y funciones adicionales para el diseño de páginas
web, generando un producto vistoso, rápido y sencillo‖.(Grupo Hooping, 2008)
1.4.1.3 Java Script
JavaScript es un lenguaje de programación que permite a los desarrolladores crear
acciones en sus páginas web. Puede ser utilizado por profesionales y para quienes se
inician en el desarrollo y diseño de sitios web. No requiere de compilación ya que el
lenguaje funciona del lado del cliente, los navegadores son los encargados de interpretar
estos códigos.
―JavaScript tiene la ventaja de ser incorporado en cualquier página web, puede ser
ejecutado sin la necesidad de instalar otro programa para ser visualizado.
Es necesario resaltar que hay dos tipos de JavaScript: por un lado está el que se ejecuta
en el cliente, este es el JavaScript propiamente dicho, aunque técnicamente se denomina
Navigator JavaScript. Pero también existe un JavaScript que se ejecuta en el servidor, es
más reciente y se denomina LiveWire JavaScript.‖ (Valdés, 2007)
Tiene como características principales las siguientes:
Capítulo 1
- 25 -- Monitoreo y control para PostgreSQL
―Es interpretado por el cliente.
Está basado en objetos. No emplea clases ni herencia.
Su código se integra en las páginas HTML, incluido en las propias páginas.
No es necesario declarar los tipos de variables que van a utilizarse.
Las referencias a objetos se comprueban en tiempo de ejecución, por lo tanto no
se compila‖. (Rubio, 2006)
1.4.1.4 CSS
CSS (Cascading Style Sheets, u Hojas de Estilo en Cascada) es la tecnología
desarrollada por el World Wide Web Consortium (W3C) con el fin de separar la
estructura de la presentación. Posibilita el control de características gráficas tales como
imágenes y colores de fondo, márgenes exactos y bordes, para evitar el trabajoso y a
veces poco gratificante diseño de tablas complejas para un plan, que incluye
frecuentemente tablas anidadas y complicados algoritmos de combinación de celdas.
―Se podría decir que los beneficios de usar CSS son dobles. Por un lado, se evita hacer a
los archivos demasiado pesados (excluyendo el largo código requerido para las tablas
anidadas y el añadido de características gráficas), y se define el estilo visual de un sitio
entero sin necesidad de hacerlo etiqueta por etiqueta, para cada una de las páginas. Por
otro, trabaja con estándares, y separa hasta cierto punto la estructura de la presentación,
logrando una manera más nítida de trabajar, y lo que es más: en un sencillo documento
CSS, se define una "plantilla gráfica" para todo un sitio. Vale decir, que cualquier
cambio hecho a un estilo CSS, se reflejará en todos los elementos que sean referidos a
éste, automáticamente, con sólo editar un sencillo documento‖ CSS.(Barcia, 2003)
1.4.2 Frameworks de desarrollo
Un framework, en el desarrollo de software es una estructura de soporte definida en la
cual otro proyecto de software puede ser organizado y desarrollado.
Capítulo 1
- 26 -- Monitoreo y control para PostgreSQL
1.4.2.1 Django
Django es un framework de desarrollo web de código abierto, escrito en Python, que
cumple en cierta medida el paradigma del Modelo Vista Controlador. Fue desarrollado
en origen para gestionar varias páginas orientadas a noticias de la World Company de
Lawrence, Kansas, y fue liberada al público bajo una licencia BSD en julio de 2005. La
versión estable (a septiembre de 2008) es la 1.0.
Características de Django:
―Es un mapeador objeto-relacional.
Permite crear aplicaciones ―enchufables‖ que pueden instalarse en cualquier
página gestionada con Django.
Es una API de base de datos robusta.
Incorpora ―vistas genéricas‖ que ahorra tener que escribir la lógica de ciertas
tareas comunes.
Es un sistema extensible de plantillas basado en etiquetas, con herencia de
plantillas.
Contiene un despachador de URLs basado en expresiones regulares.
Es un sistema middleware para desarrollar características adicionales; por
ejemplo, la distribución principal de Django incluye componentes middleware
que proporcionan cacheo, compresión de la salida, normalización de URLs,
protección CSRF y soporte de sesiones.
Posee soporte de internacionalización, incluyendo traducciones incorporadas de
la interfaz de administración.
Provee documentación incorporada accesible a través de la aplicación
administrativa (incluyendo documentación generada automáticamente de los
modelos y las librerías de plantillas añadidas por las aplicaciones)‖.(Kaufmann,
2008)
Capítulo 1
- 27 -- Monitoreo y control para PostgreSQL
1.4.3 Librerías
Las librerías en el desarrollo de software son de gran importancia, ya que enriquecen los
lenguajes de programación incorporando funcionalidades nuevas y facilitando el trabajo
con los mismos.
1.4.3.1 ExtJS
Con ExtJS, se puede desarrollar aplicaciones web con facilidad. Lo mejor de todo es que
ofrece una colección enciclopédica de elementos para la creación de interfaces de
usuario con un elegante tema de partida. Estas son sólo algunas de las razones por las
que ExtJS es la principal elección de los desarrolladores de todo el mundo. De forma
general ExtJS brinda soporte para:
Construir interfaces gráficas complejas y dinámicas.
Comunicar datos de forma asíncrona con el servidor.
Diversos navegadores como: Internet Explorer, Firefox, Safari y Opera.
―ExtJS incluye componentes UI8 del alto rendimiento y personalizables, modelo de
componentes extensibles, un API fácil de usar y presenta dos tipos de licencia open
source y comercial. Los principales beneficios de esta librería son:
Permite un balance entre Cliente – Servidor: La carga de procesamiento se
distribuye, permitiendo que el servidor, al tener menor carga, pueda manejar más
clientes al mismo tiempo.
Comunicación asíncrona: En este tipo de aplicación el motor de render puede
comunicarse con el servidor sin necesidad de estar sujeta a un clic o una acción
del usuario, dándole la libertad de cargar información sin que el cliente se de
cuenta.
Eficiencia de la red: El tráfico de red puede disminuir al permitir que la
aplicación elija que información desea transmitir al servidor y viceversa, sin
embargo la aplicación que haga uso de la pre-carga de datos puede que revierta
este beneficio por el incremento del tráfico.‖ (Grupo Sencha, 2011)
Capítulo 1
- 28 -- Monitoreo y control para PostgreSQL
1.4.3.2 Highcharts
Highcharts es una biblioteca de gráficos escritos en JavaScript puro, que ofrece una
forma fácil de añadir gráficos interactivos a su sitio web o aplicación web. Actualmente
soporta gráficos de línea, spline o curvos, área, área-spline, columnas, barras, pastel y de
dispersión.
Entre sus principales características se encuentran:
“Compatible. Funciona en todos los navegadores modernos, incluyendo el
iPhone / iPad e Internet Explorer desde la versión 6. En los navegadores
estándares usa SVG para la representación de gráficos.
Gratis para uso no comercial.
Libre. Highcharts es de código abierta. Bajo cualquiera de las licencias, libres o
no, se le permite descargar el código fuente y hacer tus propias ediciones. Esto
permite modificaciones personales y una gran flexibilidad.
Puro JavaScript. Highcharts se basa únicamente en las tecnologías de navegador
nativo y no requiere plugins del lado del cliente como Flash o Java. Además no
es necesario instalar nada en su servidor, ni PHP o ASP.NET. Highcharts sólo
necesita dos archivos JS a ejecutar y opcionalmente según lo que se desea
desarrollar también incluye jQuery, MooTools o Prototype.
Numerosos tipos gráficos. Como se explico anteriormente esta librería soporta
una gama de gráficos y cualquiera de ellos pueden ser combinados en uno solo.
Sintaxis de configuración sencilla. Highcharts no requiere conocimientos
especiales de programación para configurarlo. Las opciones se presentan en una
estructura de JavaScript Object Notation, que es básicamente un conjunto de
claves y valores conectados por dos puntos, separados por comas y se agrupan
por llaves.
Dinámico. A través de una API completa se puede agregar, quitar y modificar la
serie y los puntos o modificar los ejes en cualquier momento después de la
creación gráfica. En combinación con jQuery, MooTools o API AJAX de
Capítulo 1
- 29 -- Monitoreo y control para PostgreSQL
Prototype, se pueden realizar gráficos en tiempo real y en constante actualización
con los valores del servidor, lo que suministra el usuario y mucho más.
Varios ejes.
Etiquetas Tooltip.
Fecha y hora en los ejes.
Exportar e imprimir. Con el módulo de exportación habilitado, los usuarios
pueden exportar el gráfico a PNG, JPG, PDF o SVG o imprimir el gráfico
directamente desde la página web.
Zoom. Al hacer zoom sobre un gráfico se puede examinar una parte
especialmente interesante de los datos más de cerca. El zoom puede ser en la
dimensión X o Y, o ambas cosas.
Carga de datos externos.
Tabla invertida o eje invertido.
Rotación de texto para las etiquetas.‖ (Grupo Highcharts, 2010)
1.4.4 Herramientas complementarias
Las herramientas de desarrollo son aquellos programas o aplicaciones que tienen gran
importancia en el desarrollo de un programa, apoyando el proceso activo de
construcción del mismo.
1.4.4.1 Eclipse
Eclipse es un entorno de desarrollo integrado de código abierto multiplataforma para
desarrollar aplicaciones. Esta plataforma, típicamente ha sido usada para desarrollar
entornos de desarrollo integrados (del inglés IDE).
En cuanto a las aplicaciones clientes, eclipse provee al programador con frameworks
muy ricos para el desarrollo de aplicaciones gráficas, definición y manipulación de
modelos de software, aplicaciones web, etc. De forma general Eclipse posee las
siguientes características:
―Editor de texto con resaltado de sintaxis.
Capítulo 1
- 30 -- Monitoreo y control para PostgreSQL
La compilación es en tiempo real.
Tiene pruebas unitarias con JUnit, control de versiones con CVS e integración
con Ant.
Asistentes (wizard) para la creación de proyectos, clases, test, etc.
Refactorización.
A través de plugins libremente disponibles es posible añadir control de versiones
con Subversion e integración con Hibernate.
El entorno de desarrollo integrado (IDE) de Eclipse emplea módulos (en inglés plug-in)
para proporcionar toda su funcionalidad al frente de la plataforma de cliente enriquecido,
a diferencia de otros entornos monolíticos donde las funcionalidades están todas
incluidas, las necesite el usuario o no. Este mecanismo de módulos es una plataforma
ligera para componentes de software. Adicionalmente a permitirle a Eclipse extenderse
usando otros lenguajes de programación como son C/C++ y Python.
En el caso de la herramienta a desarrollar se utilizarán los plugins:
Pydev para el trabajo con Python.
Subversive para el control de versiones del código fuente de la
aplicación.‖(Eclipse Foundation, 2011)
1.4.4.2 Visual Paradigm
―Visual Paradigm para UML es una herramienta Case Cruzado de Ciclo de Vida,
multiplataforma (Windows/Linux/Mac OS X). Además soporta un conjunto de lenguajes
(Java, C ++, PHP, Ada y Python), tanto en generación de código como ingeniería
inversa. Se caracteriza por lo siguiente:
En adición al soporte de Modelado UML esta herramienta provee el modelado de
procesos de negocios.
Posee un generador de mapeo de objetos-relacionales para los lenguajes de
programación Java .NET y PHP.
Capítulo 1
- 31 -- Monitoreo y control para PostgreSQL
Para desarrolladores independientes existe una versión llamada Community
Edition en la que se caracteriza por ser de uso No Comercial.
Navegación intuitiva entre código y el modelo.
Poderoso generador de documentación y reportes UML PDF/HTML/MS Word.
Demanda en tiempo real, modelo incremental de viaje redondo y sincronización
de código fuente.
Superior entorno de modelado visual.
Soporte completo de notaciones UML.
Diagramas de diseño automático sofisticado.
Análisis de texto y soporte de tarjeta CRC‖. (Sierra, 2009)
1.5 Conclusiones del capítulo
Luego de realizar un estudio de las herramientas de monitoreo analizadas en este
capítulo e identificar algunas potencialidades y deficiencias en las mismas, se llegó a la
conclusión de elaborar un sistema de monitoreo sobre la Web 2.0 para PostgreSQL que
contenga las principales características identificadas, entre las que se encuentran:
Monitoreo en el tiempo y por datos históricos.
Extracción de estadísticas del sistema operativo, de las tablas del catálogo y los
archivos del registro del gestor PostgreSQL.
Además la herramienta de monitoreo se mostrará a los usuarios mediante una interfaz
sencilla e intuitiva, utilizándose para su elaboración el ambiente de desarrollo
seleccionado que incluye HTML, JavaScript, CSS y Python como lenguajes de
programación, las librería ExtJS y Highcharts, el framework Django, xmlrpclib y el
driver Psycopg2 de Python y como herramientas complementarias Eclipse y Visual
Paradigm.
Capítulo II
- 32 -- Monitoreo y control para PostgreSQL
CAPÍTULO II: FUNCIONALIDADES Y MODELADO DE LA
HERRAMIENTA.
Para lograr un conocimiento amplio de un sistema de software se hace necesario
documentarlo pues esto evita errores de concepto y ayuda durante la elaboración del
mismo. Los implementadores e incluso los clientes de un software encuentran en el
modelado de un sistema informático un pilar importante pues permite obtener una visión
y a veces hasta la solución a los problemas que puedan aparecer durante el
entendimiento del negocio.
En el presente capítulo se realiza una detallada descripción de las funcionalidades y
arquitectura de la herramienta de monitoreo para PostgreSQL complementándose, como
parte del modelado de esta, con diagramas de casos de uso del sistema, clases, secuencia
y diseño de la base de datos.
2.1 Funcionalidades de la herramienta.
El estudio de las aplicaciones de monitoreo analizadas en el capítulo anterior, permitió
obtener una visión general de las características y funcionalidades que no deben faltar
durante la elaboración de la herramienta. Tomando esto como base, se adicionaron
además algunas particularidades que le confieren un valor agregado, como la
implementación de un servicio web con el objetivo de intercambiar información en la
red de computadoras que se deseen monitorear. A continuación se listan las
características iniciales que posee la herramienta.
Monitoreo de varios servidores a la vez haciendo uso de un servicio web.
Monitoreo en tiempo real con la utilización de gráficas y tablas.
Monitoreo en el tiempo para mostrar reportes, en gráficas y tablas, de datos
extraídos y guardados con anterioridad en un almacén de datos creado en
PostgreSQL.
Mostrar métricas de las estadísticas solicitadas a los servidores.
Extraer estadísticas del sistema operativo en que se encuentra el servidor
PostgreSQL, de las tablas del catálogo y de los archivos del registro.
Capítulo II
- 33 -- Monitoreo y control para PostgreSQL
En la tabla 3 se muestran las estadísticas identificadas hasta el momento y que formarán
parte de la solución final de la herramienta. Además se detallan las desarrolladas en su
primera versión teniendo en cuenta la existencia de dos módulos, uno para el servicio
Web (SW) y otro para la Interfaz de Usuario (IU). Partiendo del hecho de que ambos
módulos no se encuentran al mismo nivel de desarrollo se especifica en la tabla a cuál
pertenece cada estadística.
Tabla 3: Estadísticas a desarrollar en la herramienta.
Estadísticas
Sistema
operativo
(IU) Carga del sistema. Muestra el número de interrupciones por
segundo y el número de cambios de contexto por segundo.
(IU) Procesos. Expone el número de procesos esperando su tiempo de
ejecución y el número de procesos en espera ininterrumpible.
(IU) Uso de la CPU. Muestra los porcentajes de tiempo total de CPU,
entre los que se encuentran: % que estuvo el procesador ocupado
con tareas del usuario, % que estuvo ocupado con tareas del
sistema, el tiempo de inactividad y el tiempo de espera para los
procesos.
(IU) Carga de memoria. Muestra la cantidad de Swap que se está
usando, la memoria RAM libre, la cantidad de memoria empleada
como búferes y la cantidad de memoria que ha sido cacheada, todas
ellas en kilobytes.
(IU) Uso de la swap. Muestra en Kb/s la cantidad de memoria traída del
espacio de trasiego desde disco y la cantidad de memoria trasegada
al disco.
(SW) Tráfico de la red. Muestra la cantidad de bloques enviados y
recibidos satisfactoriamente, la cantidad con errores y los perdidos.
(SW) Utilización de disco. Para la utilización del disco por sistema de
ficheros se muestra la cantidad usada y su porciento, la cantidad
disponible y donde está montado.
(IU) I/O (Input/output). Muestra en bloques/s aquellos que fueron
enviados a un dispositivo de bloques y los que fueron recibidos
desde un dispositivo de bloques.
Tablas del
catálogo
(IU) Conexiones. Muestra la cantidad de conexiones por bases de datos.
(IU) Transacciones. Muestra la cantidad de commit y rollback por bases
de datos.
(SW) Ins/Upd/Del por tabla. Muestra las tuplas insertadas, actualizadas
y eliminadas por tablas de una base de dato.
(SW) Ins/Upd/Del por BD. Muestra las tuplas insertadas, actualizadas y
eliminadas por bases de datos.
(SW) Planes de consulta por BD. Muestra para cada tabla de las bases
Capítulo II
- 34 -- Monitoreo y control para PostgreSQL
de datos el número de tuplas secuenciales iniciadas, el número de
tuplas secuenciales leídas, el número de índice de tuplas
secuenciales iniciadas y el número de índice de las tuplas leídas.
(SW) Bloqueos. Muestra por bases de datos el nombre de la modalidad
de los bloqueos que tiene y la cantidad de ellos.
(SW) I/O por bloques leídos. Muestra para cada tabla de las bases de
datos el número de bloques leídos, el índice de esos bloques leídos
por tablas, los bloques leídos de la tabla Toast y el índice de esos
bloques.
(SW) Uso de disco de la BD. Muestra la cantidad de páginas por tablas
de las bases de datos.
(SW) Tamaño de las BD. Muestra el tamaño por bases de datos.
(SW) Tamaño de los Tablespace. Muestra el tamaño de los tablespace.
Archivos
de registro
Cantidad de consultas normalizadas.
Cantidad de consultas.
Duración total de consultas.
Fecha de primera consulta.
Fecha de última consulta.
Consultas por tipo.
Consultas más lentas.
2.2 Arquitectura del sistema.
En la construcción de un software influyen, entre otros factores, las tecnologías que se
utilizan para ello. Una complementación errónea de estas tecnologías afectará en gran
medida la calidad del producto, es por ello que teniendo en cuenta que el propósito de la
herramienta a desarrollar es monitorear en tiempo real y en el tiempo varios servidores
PostgreSQL se decide optar por la arquitectura reflejada en la figura 1.
La integración de las tecnologías a manejar para el desarrollo de la herramienta de
monitoreo se realiza teniendo en cuenta el lugar dentro de la arquitectura en que se
utilizará, dígase en el cliente, el servidor y si pertenece a componentes externos.
En el Cliente se complementan dos tecnologías. Una de ellas es la librería Highcharts,
para la creación de los gráficos que son visualizados en la interfaz de usuario con el uso
de la librería ExtJS. A través de esta última mediante consultas AJAX se visualizan las
funcionalidades del proyecto proyMonitoreo creado en Django en la parte Servidor de la
aplicación. Este proyecto escrito en Python cuenta con los módulos:
Capítulo II
- 35 -- Monitoreo y control para PostgreSQL
Común: que está compuesto por las clases utilizadas de forma más frecuente en
el proyecto o de propósito general.
Monitoreo: donde se encuentran las clases controladoras de la aplicación, que
usarán el protocolo XMLRPC para conectarse a los Componentes externos
mediante http al Servicio Web. Este servicio web desarrollado en Python utilizará
Psycopg2 para conectarse a los Servidores PostgreSQL que se deseen
monitorear.
El proyecto proyMonitoreo de forma general usa Psycopg2 para conectarse al Almacén
de datos en PostgreSQL con el objetivo de guardar y extraer información del mismo.
Figura 1: Diagrama de integración de tecnologías.
Capítulo II
- 36 -- Monitoreo y control para PostgreSQL
2.3 Diagrama de Casos de Uso del Sistema.
Un diagrama de casos de uso (CU) muestra la relación entre los actores y los casos de
uso del sistema. Representa la funcionalidad que ofrece el sistema en lo que se refiere a
su interacción externa. Los casos de uso no son parte del diseño (cómo), sino parte del
análisis (qué). De forma que al ser parte del análisis ayudan a describir qué es lo que el
sistema debe hacer.
Figura 2: Diagrama de casos de uso del sistema.
En la figura 2 se muestra el diagrama de casos de uso del sistema para el módulo
Interfaz de Usuario de la primera versión de la herramienta de monitoreo en el que se
reflejan once CU, de los cuales Desconectar servicio es extendido de Gestionar servicio
web que a su vez incluye el CU Conectar servicio. Este CU Gestionar servicio web
incluye los CU:
Registrar servicio web
Modificar servicio web
Eliminar servicio web.
Capítulo II
- 37 -- Monitoreo y control para PostgreSQL
El actor que inicia los CU es un usuario, que puede ser un administrador de base de
datos, dado que debe dominar el funcionamiento de los servidores que desea monitorear
y conocer las credenciales de acceso a los mismos.
2.3.1 Descripción de casos de uso.
Las descripciones de casos de uso son reseñas textuales del caso de uso, es por ello que
es una descripción informal en lenguaje natural o en lenguaje estructurado y se centra en
lo que debe hacerse, no en la manera de hacerlo.
A continuación se describen los CU Mostrar datos de Procesos del SO, Mostrar datos
de Transacciones a las BD y Registrar servicio web.
CU Registrar servicio web
Tabla 4: Descripción del CU Registrar servicio web.
Caso de Uso: Registrar servicio web
Actores: Usuario.
Resumen: El caso de uso se inicia cuando el usuario necesita registrar un
nuevo servicio web. El sistema proporciona la interfaz
necesaria para realizar esta operación finalizando así el CU.
Precondiciones:
Flujo normal de eventos
Acción del Actor Respuesta del Sistema
1. El usuario selecciona la opción
Registrar servicio.
2. Muestra la interfaz Registrar un nuevo
servicio que posee los componentes
correspondientes a los datos del
Servicio Web entre los que se
encuentran:
Nombre
Host
Capítulo II
- 38 -- Monitoreo y control para PostgreSQL
Puerto
3. El usuario introduce los datos
solicitados.
4. El usuario selecciona la opción
Siguiente.
5. Muestra la interfaz que posee los
componentes correspondientes a los
datos del Servidor de bases de datos
entre los que se encuentran:
Puerto
Usuario
Clave
6. El usuario introduce los datos
solicitados.
7. El usuario selecciona la opción
Aceptar.
8. Comprueba que no existan campos
vacios.
9. Registra el nuevo servicio con los datos
introducidos por el usuario.
10. Retorna a la interfaz principal de la
aplicación y refresca el árbol de
componentes.
Prototipo de Interfaz
Capítulo II
- 39 -- Monitoreo y control para PostgreSQL
Flujos Alternos
Flujo Alterno 8a “Existen campos vacios.”
Acción del Actor Respuesta del Sistema
8a.1 Comprueba que existen campos
vacíos.
8a.2 Muestra el mensaje de información
―Faltan campos por llenar‖.
8a.3 El usuario selecciona la opción
―Aceptar‖.
8a.4 Muestra nuevamente la interfaz
Registrar un nuevo servicio para reiniciar
el proceso de entrada de datos.
Prototipo de Interfaz
Poscondiciones: Servicio registrado.
CU Mostrar datos de Procesos del SO.
Tabla 5: Descripción del CU Mostrar datos de Procesos del SO.
Caso de Uso: Mostrar datos de Procesos del SO
Actores: Usuario
Resumen: El caso de uso se inicia cuando el usuario selecciona en el árbol
de los servicios web registrados un servicio. Una vez
seleccionado el mismo, elige en el árbol de estadísticas el tipo
de estadísticas del Sistema Operativo que desea visualizar y
selecciona la opción Mostrar. Seguidamente el sistema muestra
en vista gráfica y tabular cómo se comporta la estadística del
sistema operativo seleccionada, finalizando así el CU.
Precondiciones: Debe existir un servicio registrado.
Capítulo II
- 40 -- Monitoreo y control para PostgreSQL
Flujo normal de eventos
Acción del Actor Respuesta del Sistema
1. El usuario selecciona un servicio web
en el árbol de los servicios web
registrados.
2. El usuario selecciona en el árbol de
estadísticas el tipo Sistema Operativo.
3. Muestra los tipos de estadísticas
específicas del Sistema Operativo que
se pueden consultar en la aplicación:
Procesos
Sistema
CPU
Memoria
Swap
Input/Output
4. El usuario selecciona a través de clic
derecho la opción Mostrar del tipo de
estadística Procesos para visualizar su
comportamiento.
5. Muestra una gráfica y una tabla que
contienen el comportamiento en tiempo
real de la cantidad de los procesos
activos en el servidor.
Prototipo de Interfaz
Capítulo II
- 41 -- Monitoreo y control para PostgreSQL
Flujos Alternos
Flujo Alterno 1a “No selecciona un servicio web en el árbol”.
Acción del Actor Respuesta del Sistema
1a.1 Muestra el mensaje de información
“Debe seleccionar un servicio en el
árbol”.
1a.2 El usuario selecciona la opción
“Aceptar”.
1a.3 Muestra nuevamente la interfaz
principal de la aplicación.
Prototipo de Interfaz
Poscondiciones: Estadísticas visualizadas.
CU Mostrar datos de Transacciones a las BD.
Tabla 6: Descripción del CU Mostrar datos de Transacciones a las BD.
Caso de Uso: Mostrar datos de Transacciones a las BD
Actores: Usuario
Resumen: El caso de uso se inicia cuando el usuario selecciona en el árbol
de los servicios web registrados un servicio. Una vez
seleccionado el mismo, elige en el árbol de estadísticas el tipo
de estadísticas de las tablas de la base de datos que desea
visualizar y selecciona la opción mostrar. Seguidamente el
sistema muestra en vista gráfica y tabular cómo se comporta la
estadística de las tablas de la base de datos seleccionada,
finalizando así el CU.
Precondiciones: Debe existir un servicio registrado.
Flujo normal de eventos
Acción del Actor Respuesta del Sistema
1. El usuario selecciona un servicio web
en el árbol de los servicios web
Capítulo II
- 42 -- Monitoreo y control para PostgreSQL
registrados.
2. El usuario selecciona en el árbol de
estadísticas el tipo Tablas de la BD.
3. Muestra los tipos de estadísticas
específicas de las tablas de la BD que se
pueden consultar en la aplicación:
Conexiones
Transacciones
4. El usuario selecciona a través de clic
derecho la opción Mostrar del tipo de
estadística Transacciones para
visualizar su comportamiento.
5. Muestra una gráfica y una tabla que
contienen el comportamiento en tiempo
real de las transacciones a las bases de
datos del servidor.
Prototipo de Interfaz
Flujos Alternos
Flujo Alterno 1a “No selecciona un servicio web en el árbol.”
Acción del Actor Respuesta del Sistema
1a.1 Muestra el mensaje de información
“Debe seleccionar un servicio en el
árbol”.
Capítulo II
- 43 -- Monitoreo y control para PostgreSQL
1a.2 El usuario selecciona la opción
―Aceptar‖.
1a.3 Muestra nuevamente la interfaz
principal de la aplicación.
Prototipo de Interfaz
Poscondiciones: Estadísticas visualizadas.
2.4 Diagramas de clases.
Un diagrama de clases es un tipo de diagrama estático que describe la estructura de un
sistema mostrando sus clases, atributos y las relaciones entre ellos. Los diagramas de
clases son utilizados durante el proceso de análisis y diseño de los sistemas, donde se
crea el diseño conceptual de la información que se manejará en el sistema, y los
componentes que se encargarán del funcionamiento y la relación entre uno y otro.
Para el desarrollo de la herramienta se hizo necesario crear dos módulos, una aplicación
web de interfaz gráfica y un servicio web ambos implementados en Python. A
continuación se detallan los diagramas de clases de cada una de ellos.
2.4.1 Módulo Servicio Web
En la figura 3 se muestra el diagrama de clases para el módulo Servicio Web en el que
se reflejan dos clases que se explican a continuación.
classCatalogo: La función de esta clase es conectarse a la base de datos
PostgreSQL y a través de consultas SQL extraer datos de las tablas o vistas del
catálogo entre las que se encuentran pg_stat_activity, pg_stat_database,
pg_stat_all_tables, pg_locks, pg_stat_database, pg_database,
pg_statio_user_tables, pg_class, pg_database_size, y pg_tablespace.
Capítulo II
- 44 -- Monitoreo y control para PostgreSQL
classComandos: Los métodos de esta clase ejecutan comandos SHELL para
obtener datos del sistema operativo en el que se encuentra el servidor
PostgreSQL. Entre los comandos utilizados se hallan vmstat, ifconfig –s y df.
Figura 3: Diagrama de clases del módulo Servicio Web.
2.4.2 Módulo Interfaz gráfica
En la figura 4 se refleja el diagrama de clases para el módulo Interfaz Gráfica en el que
se muestran seis clases que se explican a continuación.
AppMessage: Esta clase en utilizada preferentemente en las vistas del proyecto
Django y su función es encodar y desencodar a formato JSON los datos en la
aplicación. En caso de encodar se transforma las listas y los diccionarios de
Python a Objetos JavaScript, y cuando se desencoda los arreglos o objetos
JavaScript son convertidos en listas o diccionarios Python respectivamente. Hace
uso del módulo simpleJson de Django.
TreeObjectManager: La función de esta clase es proporcionarle al árbol
explorador de la interfaz los nodos a cargar en cada nivel del árbol.
controladoraServicioWeb: Esta clase es la encargada de manipular los métodos
creados en las clases classCatalogo y classComandos de las que obtiene, vía http
y usando XMLRPC, los datos de los servidores que se monitorean.
Capítulo II
- 45 -- Monitoreo y control para PostgreSQL
controladoraServicioAdmin: Esta clase es utilizada para administrar los
servicios web a monitorear, que incluye registrarlos, modificarlos, eliminarlos.
Esta clase hace uso del las clases del modelo definida en el módulo models.py del
proyecto Django.
EngineFactory: Esta clase tiene la función de crear una conexión al servidor.
Views: es un módulo del proyecto Django para visualizar las vistas de la
aplicación.
Figura 4: Diagrama de clases del módulo Interfaz Gráfica.
Capítulo II
- 46 -- Monitoreo y control para PostgreSQL
2.5 Diagramas de secuencia.
Un diagrama de secuencia muestra la interacción de un conjunto de objetos en una
aplicación a través del tiempo y se modela para cada caso de uso. Además contiene
detalles de implementación del escenario, incluyendo los objetos y clases que se usan
para ello, y los mensajes intercambiados entre los objetos.
La comunicación entre las clases de la aplicación es muy alta debido a las dependencias
existentes entre las mismas. De forma general entre ambos módulos coexiste una
secuencia comenzando por la IU de Django, la clase controladora y el módulo SW.
La aplicación web en Django muestra las interfaces necesarias para obtener los datos
deseados. Estas interfaces, de forma transparente al usuario, llaman a las vistas donde se
encoda y desencoda en formato JSON la información que es tomada de la clase
controladora. Estas últimas son las encargadas de comunicarse con el SW pero para ello
necesitan utilizar, a través de una clase auxiliar, la clase del modelo de Django para el
acceso al almacén de datos que contiene la información de los servicios web registrados.
El SW, por otro lado, posee dos clases que son las encargadas de obtener la información
del servidor en que se encuentran ejecutándose, una de ellas destinada a extraer informes
de las tablas o vistas del catalogo de PostgreSQL y la otra del sistema operativo. Estos
datos son mostrados vía http con la utilización de XMLRPC y consumidos por los
métodos de la clase controladoras de la IU.
La mejor opción para reflejar esta relación entre las clases es a través de diagramas de
secuencia es por ello que a continuación se representan para los CU Registrar servicio
web, Mostrar datos de procesos del SO y Mostrar datos de Transacciones a las BD.
Capítulo II
- 47 -- Monitoreo y control para PostgreSQL
Figura 5: Diagrama de secuencia del CU Registrar servicio web.
En la figura 5 se representa el diagrama de secuencia para el CU Registrar servicio web
donde se refleja al usuario que desea registrar un nuevo servicio web. Para esto se envía
una solicitud a una vista en Django que carga los datos y los envía a la clase
ManageServicioAdm donde son registrados utilizando la clase models de Django para
acceder a la tabla ServicioAdm del almacén de datos en PostgreSQL y guardarlos en la
misma. Una vez almacenados los datos se envía un mensaje de confirmación indicando
que la operación se realizó satisfactoriamente.
En la figura 6 se refleja el CU Mostrar datos de Procesos del SO donde se muestra al
usuario que desea visualizar la cantidad de procesos en espera ininterrumpible y en
espera de ejecución de un determinado servidor. Para esto se envían dos solicitudes por
separado a dos vistas en Django con el objetivo de cargar el comportamiento de los
procesos. Estas vistas solicitan a la clase controladora los datos requeridos, quien para
ello se vale de la clase ManageServicioAdm, para obtener los datos del servicio web al
que se desea conectar, y classComando ,que a través de una ejecución a un comando
SHELL recopila la información que se necesita. Terminada esta operación los datos son
enviados a las vistas donde son procesados y mostrados en la interfaz de usuario a través
de una gráfica y una tabla.
Capítulo II
- 48 -- Monitoreo y control para PostgreSQL
Figura 6: Diagrama de secuencia del CU Mostrar datos de Procesos del SO.
En la figura 7 se encuentra representado para el CU Mostrar datos de Transacciones a
las BD donde se muestra al usuario que desea visualizar el comportamiento de las
transacciones de las BD de un determinado servidor. Para ello se envían dos solicitudes
por separado a dos vistas en Django con el objetivo de cargar el comportamiento de las
transacciones. Las vistas a su vez piden a la clase controladora los datos solicitados
quien para obtener esta información se vale de las clases ManageServicioAdm, para
obtener los datos del servicio web al que se desea conectar, y classCatalogo que a través
de una consulta SQL recopila la información en cuestión. Terminado este proceso los
datos son enviados a las vistas donde son procesados y mostrados en la interfaz de
usuario a través de una gráfica y una tabla.
Capítulo II
- 49 -- Monitoreo y control para PostgreSQL
Figura 7: Diagrama de secuencia del CU Mostrar datos de Transacciones a las BD.
2.6 Diseño de la base de datos.
El diseño de la base de datos es un pilar importante para el desarrollo de los sistemas
informáticos, pues en él se muestran las tablas y las relaciones existentes entre ellas.
Como la mayoría de las aplicaciones de gestión la herramienta de monitoreo necesita
tener datos persistentes, pero ¿por qué utilizar un Almacén de Datos en PostgreSQL?
Para responder esta interrogante es válido aclarar que se utiliza PostgreSQL por ser un
sistema gestor de bases de datos libre y robusto. La idea de crear un almacén de datos
surge por la necesidad de obtener un monitoreo en el tiempo de los servidores
registrados en la aplicación, ya que un almacén o data warehouse, es un proceso
continuo que mezcla los datos de varias fuentes heterogéneas, incluyendo datos
históricos y adquiridos para soportar la constante necesidad de consultas estructuradas,
reportes analíticos y soporte de decisiones.
Capítulo II
- 50 -- Monitoreo y control para PostgreSQL
Algunas de las justificaciones para un emprendimiento del almacén de datos es que son
sistemas no integrados, soporta múltiples e incompatibles estructuras de datos, posee
muchos puntos de entrada a los datos, proporciona un manejo de información histórica
para facilitar las actividades de reporteo y análisis de usuarios y provee una vista única
del negocio.
Para la herramienta se utilizó un esquema en estrella en el que una sola tabla de hechos
está relacionada a cada tabla dimensión. Para el caso de las tablas de dimensiones, estas
son enlazadas a la tabla de hechos mediante referencias de una llave foránea. Además la
llave primaria en la tabla de hechos se compone de una relación de las llaves primarias
de las tablas dimensiones.
En la figura 8 se exponen la tabla ServicioAdm, que contiene la información de los
servicios registrados, y un ejemplo de varias tablas de hechos con sus respectivas tablas
dimensiones, entre las que se encuentran:
CantConexiones con las tablas dimensiones:
CantConexionesServidor
CantConexionesBD
CantConexionesTiempo
CargaMemoria con las tablas dimensiones:
MemoriaServidor
MemoriaTiempo
UsoSwap con las tablas dimensiones:
SwapServidor
SwapTiempo
Capítulo II
- 51 -- Monitoreo y control para PostgreSQL
Figura 8: Modelo físico del almacén de datos de la aplicación.
En la figura 9 se reflejan el resto de las tablas de hechos del almacén de datos de la
aplicación para su primera versión. Cada una de estas tablas poseen dos tablas
dimensiones referentes al tiempo y al servidor a excepción de la tabla cantTransacciones
que además se le agrega la dimensión cantTransaccionesBD. Cabe destacar en que cada
tabla posee una llave primaria auto-incremental.
Capítulo II
- 52 -- Monitoreo y control para PostgreSQL
Figura 9: Tablas de hechos del almacén de datos de la aplicación.
2.7 Conclusiones del capítulo.
Durante el progreso de este capítulo se realizó una amplia descripción de las
funcionalidades de la herramienta de monitoreo para PostgreSQL desarrollada, que
incluyó una lista de las estadísticas y los datos que proporcionan. Además se reflejó la
arquitectura del sistema complementada con un diagrama de la interacción de las
tecnologías utilizadas.
Como parte del modelado de la herramienta se mostró el diagrama de casos de uso del
sistema y algunas descripciones de estos casos de uso. De igual forma se reflejan los
diagramas de clases para los módulos Servicio Web e Interfaz Gráfica detallando cada
una de estas clases. A través de varios diagramas de secuencia se muestra el mecanismo
de comunicación entre las clases de la aplicación y para finalizar se despliega el diseño
del almacén de datos en PostgreSQL creado para guardar la información de la
herramienta.
Capítulo III
- 53 -- Monitoreo y control para PostgreSQL
CAPÍTULO III: IMPLEMENTACIÓN Y DESCRIPCIÓN DE
USO.
Durante la etapa de implementación se logra concretar la planificación de un sistema
informático, pues se ejecutan las ideas plasmadas durante su fase de análisis y diseño. El
producto obtenido en este periodo, una vez terminado, deberá estar listo para ser
probado y utilizado.
En el presente capítulo se refleja la etapa de implementación del sistema a través de
diagramas componentes, donde se representa la implementación de las clases a través
componentes y el modelo de despliegue, con los nodos en los que se encuentra
distribuida la aplicación. Además se refleja un manual de usuario donde se describen las
funcionalidades de la herramienta y las facilidades que esta proporciona.
3.1 Implementación.
Esta es la fase donde se implementa el código fuente, haciendo uso de prototipos,
pruebas y ensayos para corregir errores. Dependiendo del lenguaje de programación y su
versión se crean las bibliotecas y componentes reutilizables dentro del mismo proyecto
para hacer que la programación sea un proceso mucho más rápido.
3.1.1 Diagramas de componentes.
Un diagrama de componentes muestra las dependencias lógicas entre componentes de
software ya sean fuentes, binarios o ejecutables. Estos diagramas prevalecen en el
campo de la arquitectura de software pero pueden ser usados para modelar y documentar
cualquier arquitectura de sistema, es decir para describir la vista de implementación
estática de un sistema. Los diagramas de componentes se relacionan con los diagramas
de clases, ya que un componente normalmente se corresponde con una o más clases,
interfaces o colaboraciones.
Capítulo III
- 54 -- Monitoreo y control para PostgreSQL
A continuación se muestran los diagramas de componentes para los CU Registrar
servicio web, Mostrar datos de Procesos del SO y Mostrar datos de Transacciones a las
BD.
Figura 10: Diagrama de componentes para el CU Registrar servicio web.
En la figura 10 se muestran las relaciones entre los ficheros a través del diagrama de
componentes para el CU Registrar servicio web. A continuación se detallan cada uno de
los componentes representados.
Paquete ExtJS: contiene los ficheros de la biblioteca JavaScript ExtJS que es
utilizada durante el desarrollo de la herramienta para el diseño de las interfaces
de usuario.
Componente monitoreo.html: plantilla que contiene incluidos todos los ficheros
js y css relacionados con las interfaces de usuario y las bibliotecas que utiliza.
Componente principalWindows.js: fichero donde se encuentra implementada la
interfaz principal de la herramienta.
Componente servidor.js: contiene implementadas las funciones JavaScript
necesarias para visualizar las interfaces de usuario del CU Registrar servicio
web.
Componente urls.py: fichero generado por el marco de trabajo Django en el que
se definen todas las urls disponibles en el proyecto.
Capítulo III
- 55 -- Monitoreo y control para PostgreSQL
Componente views.py: fichero generado por el framework Django para contener
todas las vistas de la aplicación.
Componente controladoraServicioAdm.py: fichero en Python que contiene una
clase controladora que entre sus métodos se encuentra el encargado de registrar
un nuevo servicio web.
Figura 11: Diagrama de componentes para el CU Mostrar datos de Transacciones a las BD.
En la figura 11 se muestran las relaciones entre los componentes que permiten la
realización del CU Mostrar datos de Transacciones a las BD. A continuación se detallan
cada uno de estos componentes a excepción de aquellos que fueron descritos con
anterioridad.
Paquete Highcharts: contiene los ficheros de la biblioteca JavaScript Highcharts
utilizada para la creación de gráficos en la aplicación.
Componente transactionGrafica.js: fichero en el que se implementan las
interfaces de usuario para mostrar las transacciones a las BD a través una gráfica
y una tabla.
Componente controladoraService.py: fichero escrito en Python que contiene la
clase que controla a través de sus métodos la obtención de información del
servicio web.
Paquete Servicio Web: contiene los ficheros encargados de extraer información
del servidor de bases de datos y el sistema operativo en que se encuentre
Capítulo III
- 56 -- Monitoreo y control para PostgreSQL
ejecutándose. Para este CU en especifico se utiliza el componente
classCatalogo.py que es el encargado de extraer datos de las tablas y vistas del
catálogo del servidor de PostgreSQL.
Figura 12: Diagrama de componentes para el CU Mostrar datos de Procesos del SO.
Para constatar la relación entre los componentes que intervienen en la implementación
del CU Mostrar datos de Procesos del SO se muestra la figura 12. A continuación se
puntualizan cada uno de los componentes exceptuando aquellos que ya fueron detallados
con anterioridad.
Componente processGrafica.py: fichero en el que se implementan las interfaces
de usuario para mostrar los procesos del SO a través de una gráfica y una tabla.
Componente classComandos.py: fichero encargado de extraer los datos del
sistema operativo utilizando comandos SHELL.
3.1.2 Diagrama de despliegue.
La vista de despliegue representa la disposición de las instancias de componentes de
ejecución en instancias de nodos conectados por enlaces de comunicación. Un nodo es
un recurso de ejecución tal como un computador, un dispositivo o memoria. Esta vista
permite determinar las consecuencias de la distribución y la asignación de recursos. Las
instancias de los nodos pueden contener instancias de ejecución, componentes y objetos.
Capítulo III
- 57 -- Monitoreo y control para PostgreSQL
El modelo puede mostrar dependencias entre las instancias y sus interfaces, y también
modelar la migración de entidades entre nodos u otros contenedores.
Figura 13: Diagrama de despliegue de la aplicación.
A continuación se realiza una breve descripción del diagrama de despliegue
representado en la figura 13:
PC Cliente: Desde este nodo los usuarios podrán acceder a la aplicación a través
de un navegador ya sea Internet Explorer o Firefox, haciendo uso del protocolo
<<http>>.
Servidor Web: En este nodo estará montada la aplicación sobre el servidor Web
Apache. La cual se comunica con el Servicio Web a través del protocolo
<<http>>.
Servicio Web: Sobre este nodo estará configurado un servicio web en Python con
la utilización del protocolo XMLRPC. Este se comunica con el nodo Servidor de
BD PostgreSQL a través del driver <<Psycopg2>>.
Servidor de BD PostgreSQL: Este nodo representa los servidores de bases de
datos que se desean monitorear.
Capítulo III
- 58 -- Monitoreo y control para PostgreSQL
3.2 Esbozo del manual de usuario.
La interfaz principal de la herramienta de monitoreo para PostgreSQL como puede
observarse en la figura 14 se encuentra estructurada de la siguiente forma:
Cabecera: muestra el nombre de la aplicación y los botones Acerca, Créditos y
Ayuda en la parte derecha de la misma.
Área de servicios registrados: muestra el explorador para acceder al árbol de
servicios web registrados en la aplicación.
Área de estadísticas: muestra las estadísticas para monitorear los servicios web
registrados en la herramienta.
Área de visualización de datos: muestra las gráficas y tablas asociadas a las
estadísticas que se monitorizan en la aplicación.
Figura 14: Interfaz principal de la aplicación.
A continuación se realiza una descripción detallada de las partes principales de la
herramienta.
Capítulo III
- 59 -- Monitoreo y control para PostgreSQL
3.2.1 Área de servicios registrados.
En esta parte se encuentran los servicios web registrados por el usuario, como se muestra
en la figura 15. Para ello se utiliza un árbol desplegable que contiene además las bases
de datos que contiene cada servidor en que se encuentra ejecutando el servicio.
Figura 15: Área de servicios web registrados.
Para registrar nuevos servicios se debe hacer clic en el botón Registrar servicio ubicado
en la parte superior derecha mostrándose la interfaz de la figura 16 donde el usuario
haciendo uso del botón Siguiente y Anterior deberá llenar los datos de forma obligatoria
del Servicio web y del Servidor de bases de datos entre los que se encuentran:
Nombre, Host y Puerto para el servicio.
Puerto, Usuario y Clave para el servidor.
Para completar el nuevo registro se deberá hacer clic en el botón Aceptar. Si no se desea
registrar un servicio una vez abierta la interfaz se deberá hacer clic en el botón Cancelar.
Capítulo III
- 60 -- Monitoreo y control para PostgreSQL
Figura 16: Interfaz para registrar un nuevo servicio web.
Una vez registrados los servicios web es posible que el usuario necesite eliminarlos,
editarlos o simplemente conectarse o desconectarse de los mismos. Para ello basta con
hacer clic derecho sobre cualquier servicio mostrándose el menú de la figura 17.
Figura 17: Menú para gestionar servicios web registrados.
Para Conectar servicio se deben llenar los datos Usuario y Clave de forma obligatoria
como se refleja en la figura 18. Para completar la acción se debe hacer clic en el botón
Aceptar, para anularla en el botón Cancelar.
Figura 18: Interfaz para conectar un servicio web.
Capítulo III
- 61 -- Monitoreo y control para PostgreSQL
Para Desconectar servicio solo se hace necesario hacer clic en el botón Si como se
muestra en la figura 19. Para cancelar la acción hacer clic en el botón No.
Figura 19: Interfaz para desconectar un servicio web.
Para Editar servicio al hacer clic en esta acción se muestra una interfaz igual al de la
figura 16 en el que se registraba un nuevo servicio, pero esta vez con los datos que
originalmente fueron introducidos durante su registro a excepción del usuario y la clave.
De igual forma haciendo uso de los botones Anterior y Siguiente se pueden modificar
estos datos y para completar la edición se debe hacer clic en el botón Aceptar y para
anularla en el botón Cancelar.
Para Eliminar servicio solo es preciso hacer clic en el botón Si como se refleja en la
figura 20. Para revocar la acción solo se debe hacer clic en el botón No.
Figura 20: Interfaz para eliminar un servicio web.
3.2.2 Área de estadísticas.
El área de estadísticas, como se muestra en la interfaz principal, se encuentra ubicada en
la parte derecha de la aplicación. En la misma están señalizadas las estadísticas
identificadas hasta el momento para monitorear los servicios web registrados en la
aplicación. Para facilitarle al usuario el trabajo en esta área, se clasificaron las
estadísticas de acuerdo al lugar del que son extraídas, identificándolas con tres colores
Capítulo III
- 62 -- Monitoreo y control para PostgreSQL
distintos y un icono propio para cada una lo que permite diferenciarlas si, una vez
visualizados los datos de estas estadísticas, el usuario desea llevar varias a la vez.
En la figura 21 se muestran las estadísticas que son extraídas del Sistema Operativo
identificado con el ícono . Dentro de este se pueden visualizar:
Procesos
Sistema
CPU
Memoria
Swap
Input/Output
Figura 21: Estadísticas para el Sistema Operativo.
En la figura 22 se muestran las estadísticas que son extraídas de las Tablas de las BD
identificado con el ícono . Dentro de este se pueden visualizar:
Conexiones
Transacciones
Capítulo III
- 63 -- Monitoreo y control para PostgreSQL
Figura 22: Estadísticas para la Tablas de la BD.
En la figura 23 se muestra el lugar donde se ubicarán las estadísticas para los Archivos
de registro con el ícono . Para esta primera versión de la aplicación no se han
implementado este tipo de estadísticas por eso no aparecen identificadas hasta el
momento en la aplicación.
Figura 23: Interfaz para las estadísticas de los Archivos de registro.
Para visualizar los datos de cada estadística se debe, una vez marcado en el Área de
servicios web registrados el servicio deseado, hacer clic derecho sobre ella mostrándose
un menú como el de la figura 24. Se debe hacer clic sobre la acción Mostrar
reflejándose al instante sobre el Área de visualización los datos solicitados en forma de
gráficas y tablas.
Figura 24: Menú para visualizar las estadísticas.
En el menú de la figura 24 aparece reflejada también la acción Ver métrica y al hacer
clic en ella, como se muestra en la figura 25, se despliega en la parte inferior de la
aplicación algunas recomendaciones a los usuarios de la estadística en cuestión, pero aún
para la primera versión de la herramienta no se encuentra desarrollado.
Capítulo III
- 64 -- Monitoreo y control para PostgreSQL
Figura 25: Interfaz donde se ubicarán las métricas por estadísticas.
3.2.3 Área de visualización de datos.
En esta área se muestran los datos de cada estadística en gráficas y tablas ubicadas en
pestañas, como se refleja en la figura 26 y 27 respectivamente.
Figura 26: Interfaz de visualización de gráficas.
Capítulo III
- 65 -- Monitoreo y control para PostgreSQL
Figura 27: Interfaz de visualización de tablas.
Para que los datos sean visualizados de forma correcta se hace necesario que esté
seleccionado con antelación un servicio en el Área de servicios registrados y haber
hecho clic en Mostrar del menú de las estadísticas.
En la parte inferior de ambas figuras se observan las pestañas de varias estadísticas
diferenciadas por el ícono y el nombre del servicio al que pertenecen.
En estas interfaces se muestran dos componentes:
El botón que se encuentra en las dos interfaces y se utiliza para
actualizar las gráficas o las tablas.
Capítulo III
- 66 -- Monitoreo y control para PostgreSQL
Figura 28: Listado de tiempo para actualizar las gráficas.
El listado de tiempo, como se refleja en la figura 28, se localiza solamente en la
interfaz de visualización de gráficas para seleccionar el tiempo en que se
actualizarán los datos representados en las mismas.
3.3 Conclusiones del capítulo.
En este capítulo quedó reflejada la implementación de la herramienta a través de los
diagramas de componentes para los CU Registrar servicio web, Mostrar datos de
Procesos del SO y Mostrar datos de transacciones a las BD donde se mostraron los
archivos físicos de la aplicación. Además se detalló, con la utilización de un diagrama de
despliegue, una propuesta para la implantación de la herramienta. Para finalizar se
describió el uso de la aplicación a través de un esbozo del manual de usuario.
Conclusiones
- 67 -- Monitoreo y control para PostgreSQL
CONCLUSIONES
Una vez concluida la investigación se obtuvo una versión 1.0 de una herramienta Web
para monitorear el rendimiento del gestor de base de datos PostgreSQL.
Además se obtuvieron los siguientes resultados:
Se caracterizaron varias de las herramientas de monitoreo y control existentes
para PostgreSQL, definiéndose sus principales ventajas y desventajas para
arribar finalmente a la conclusión de elaborar una herramienta sobre la Web
2.0 que posibilite el monitoreo y control del funcionamiento del gestor
PostgreSQL.
Se definieron las tecnologías de software libre adecuadas para el desarrollo
de la herramienta web de monitoreo y control para PostgreSQL entre las que
se encuentran HTML, JavaScript, CSS y Python como lenguajes de
programación, las librería ExtJS y Highcharts, el framework Django,
xmlrpclib y el driver Psycopg2 de Python y como herramientas
complementarias Eclipse y Visual Paradigm.
Se elaboraron y representaron claramente los diagramas de análisis y diseño
de la aplicación empleando para ello UML.
Se implementó la herramienta de monitoreo y control para PostgreSQL sobre
la Web 2.0, y se incluyó un esbozo de manual de usuario explicando sus
funcionalidades.
Recomendaciones
- 68 -- Monitoreo y control para PostgreSQL
RECOMENDACIONES
Se recomienda una vez concluido el trabajo:
Culminar la implementación de las funcionalidades desarrolladas hasta el
momento en el módulo SW para llevarlas hasta su interfaz de usuario y
comenzar el desarrollo de las estadísticas identificadas para los archivos de
registro.
Continuar la investigación con el propósito de aumentar las funcionalidades
de la herramienta, obteniendo mejoras en futuras versiones de la misma.
Realizar múltiples pruebas a la herramienta durante un período, para verificar
que cumple totalmente con las funcionalidades propuestas.
Integrar la herramienta de monitoreo y control a la Interfaz de
Administración desarrollada en el Centro de Desarrollo de Software de Villa
Clara.
Referencias bibliográficas
- 69 -- Monitoreo y control para PostgreSQL
REFERENCIAS BIBLIOGRÁFICAS
[1]. Barcia, Diego, 2003. ¿Qué es CSS? Maestros del Web. Disponible en:
http://www.maestrosdelweb.com/editorial/introcss/ [Accedido Octubre 21,
2011].
[2]. Burleson Enterprises, 2009. Ion Oracle Resumen de características. ION
IntelligentOracle Tunning. Disponible en: http://www.ion-dba.com/index.html.
[3]. Camps Paré, Rafael, 2005. 1.2. Prestaciones | Dataprix. DATAPRIX. Disponible
en: http://www.dataprix.com/12-prestaciones [Accedido Octubre 12, 2011].
[4]. Consorcio SIU, 2011. Monitoreando y midiendo el rendimiento de un servidor
Postgresql en Sistemas Windows, Linux y Solaris. Parte. Scribd. Disponible en:
http://es.scribd.com/doc/49314263/monitoreo-postgresql [Accedido Octubre 18,
2011].
[5]. Eclipse Foundation, 2011. Eclipse - The Eclipse Foundation open source
community website. EclipseCON. Disponible en: http://www.eclipse.org/
[Accedido Octubre 24, 2011].
[6]. Frost, R, 1989. Bases de datos y sistemas expertos. Ingeniería del
conocimiento. En Madrid: Díaz de Santos, pág. 90.
[7]. García, Luis, 2008. Gestión de Bases de Datos
bajo PostgreSQL
para Sistemas de Misión Crítica. Disponible en:
http://www.onuva.com/files/OnuvaConfI/onuva_confI_postgresql.pdf.
[8]. Gerstel, Jorgen, 2009. Network Manager. Nino. Disponible en:
http://nino.sourceforge.net/nino/index.html [Accedido Octubre 18, 2011].
[9]. González, Carlos D., 2011. Curso Base de Datos PostgreSQL, SQL avanzado y
PHP. Curso PostgreSQL, SQL avanzado y PHP. Disponible en:
http://www.usabilidadweb.com.ar/postgre.php [Accedido Octubre 12, 2011].
[10]. Grupo Deficion.de, 2008. Definición de monitoreo - Qué es, Significado y
Concepto. Definicion.de. Disponible en: http://definicion.de/monitoreo/
[Accedido Octubre 14, 2011].
[11]. Grupo de Desarrollo, 2002. Pgwatch – Cybertec Enterprise PostgreSQL
Monitor « Cybertec PostgreSQL Pros' Blog & Archives. CyberTec. Disponible
en: http://www.cybertec.at/en/postgresql_products/pgwatch-cybertec-enterprise-
postgresql-monitor [Accedido Octubre 11, 2011].
Referencias bibliográficas
- 70 -- Monitoreo y control para PostgreSQL
[12]. Grupo de desarrollo, 2003. Ventajas de PostgreSQL — Soporte de
TiendaLinux.com. TiendaLinux.com. Disponible en:
http://soporte.tiendalinux.com/portal/Portfolio/postgresql_ventajas_html
[Accedido Octubre 14, 2011].
[13]. Grupo Highcharts, 2010. Highcharts - Highcharts product. Highcharts JS.
Disponible en: http://www.highcharts.com/products/highcharts [Accedido
Octubre 21, 2011].
[14]. Grupo Hooping, 2008. HTML El lenguaje HTML en el diseño de páginas web.
Características y elementos básicos del lenguaje HTML para el diseño web.
Hooping.net. Disponible en: http://www.hooping.net/faq-html.aspx [Accedido
Octubre 21, 2011].
[15]. Grupo LogicMonitor, 2008. PostgreSQL Monitoring | PostgreSQL Database
Monitoring | PostgreSQL Databases | LogicMonitor. LogicMonitor. Disponible
en: http://www.logicmonitor.com/monitoring/databases/postgres-monitoring/
[Accedido Octubre 11, 2011].
[16]. Grupo Nagios, 2009. Nagios - The Industry Standard in IT Infrastructure
Monitoring. Nagios. Disponible en: http://www.nagios.org/ [Accedido Octubre
18, 2011].
[17]. Grupo OpenNMS, 2000. The OpenNMS Project. OpenNMS. Disponible en:
http://www.opennms.org/ [Accedido Octubre 18, 2011].
[18]. Grupo Pandora FMS, 2005. Pandora FMS - the Flexible Monitoring System.
Pandora FMS. Disponible en: http://pandorafms.org/index.php?lang=es
[Accedido Octubre 18, 2011].
[19]. Grupo PostgreSQL Wiki, 2009. Usando Munin - PostgreSQL Wiki.
WikiPostgreSQL. Disponible en: http://wiki.postgresql.org/wiki/Usando_Munin.
[20]. Grupo Sencha, 2011. ExtJS 3.4 | Products | Sencha. Sencha. Disponible en:
http://www.sencha.com/products/extjs3/ [Accedido Octubre 21, 2011].
[21]. Grupo Zabbix, 2001. Homepage of Zabbix: An Enterprise-Class Open Source
Distributed Monitoring Solution. Zabbix. Disponible en: http://www.zabbix.com/
[Accedido Octubre 18, 2011].
[22]. Grupo Zenoss, 2005. The Cloud Management Company | Zenoss. Zenoss.
Disponible en: http://www.zenoss.com/ [Accedido Octubre 18, 2011].
[23]. Kaufmann, Manuel, 2008. Django y Python. El Vortex Tecnológico. Disponible
en: http://raulespinola.wordpress.com/2009/02/03/django-y-python/ [Accedido
Octubre 21, 2011].
Referencias bibliográficas
- 71 -- Monitoreo y control para PostgreSQL
[24]. Malcer, 2010. Licencia BSD, el verdadero software libre. Ext4 Blog, el rincón
de Malcer. Disponible en: http://ext4.wordpress.com/2010/08/31/licencia-bsd-el-
verdadero-software-libre/ [Accedido Noviembre 18, 2010].
[25]. Matéu i Piñol, Carles, 2008. XMLRPC. Cibertenia. Disponible en:
http://www.cibernetia.com/manuales/servicios_web/2_xml-rpc.php [Accedido
Diciembre 1, 2011].
[26]. Oetiker, Tobias, 2011. MRTG - Tobi Oetiker's MRTG - The Multi Router
Traffic Grapher. MRTG. Disponible en: http://oss.oetiker.ch/mrtg/ [Accedido
Octubre 18, 2011].
[27]. Oliveira, Fernando Ike de, 2008. PostgreSQL: Performance Tuning. Slideshare.
Disponible en: http://www.slideshare.net/fernandoike/postgresql-performance-
tuning [Accedido Noviembre 18, 2010].
[28]. Prado, Guillermo, 2007. Características del lenguaje HTML. Universidad de la
Rioja. Disponible en:
https://belenus.unirioja.es/~guprado/pagweb/carachtml.html [Accedido Octubre
21, 2011].
[29]. Python community, 1990. Python Programming Language – Official Website.
Python. Disponible en: http://www.python.org/ [Accedido Octubre 21, 2011].
[30]. Retout, Tim, 2008. Integrated Monitoring for PostgreSQL. Wiki PostgreSQL.
Disponible en: http://wiki.postgresql.org/images/0/0c/Postgres-monitoring.pdf.
[31]. Rubio, Nuria, 2006. JavaScript. JavaScript. Disponible en:
http://perso.wanadoo.es/javascript_12/ [Accedido Octubre 21, 2011].
[32]. Sierra, Daniel, 2009. Visual Paradigm for UML. Slideshare. Disponible en:
http://www.slideshare.net/vanquishdarkenigma/visual-paradigm-for-uml
[Accedido Octubre 24, 2011].
[33]. Tatsuhito Kasahara, 2009. PgFoundry: pg_statsinfo: Información del Proyecto.
PgFoundry. Disponible en: http://pgfoundry.org/projects/pgstatsinfo.
[34]. Tom Copeland, 2010. PgFouine - a PostgreSQL log analyzer. PgFouine.
Disponible en: http://pgfouine.projects.postgresql.org/index.html.
[35]. Tom Copeland, 2005. PgFoundry: Practical Query Analyzer: Información del
Proyecto. PgFoundry. Disponible en: http://pgfoundry.org/projects/pqa/.
[36]. Valdés, Damián, 2007. ¿Qué es JavaScript? Maestros del Web. Disponible en:
http://www.maestrosdelweb.com/editorial/%C2%BFque-es-javascript/
Referencias bibliográficas
- 72 -- Monitoreo y control para PostgreSQL
[Accedido Octubre 21, 2011].
[37]. Valdés, Damián Pérez, 2008. ¿Qué son las bases de datos? Maestros del Web.
Disponible en: http://www.maestrosdelweb.com/principiantes/%C2%BFque-son-
las-bases-de-datos/ [Accedido Noviembre 18, 2010].
[38]. Varrazzo, Daniele, 2010. Psycopg. Psycopg. Disponible en: http://initd.org/
[Accedido Diciembre 1, 2011].
Bibliografía
- 73 -- Monitoreo y control para PostgreSQL
BIBLIOGRAFÍA
[1]. PostgreSQL: Awards. PostgreSQL. Disponible en:
http://www.postgresql.org/about/awards [Accedido Noviembre 18, 2010].
[2]. Álvarez, Miguel Ángel, 2003. Qué es Python. Lenguaje de programación de
propósito general, orientado a objetos, que también puede utilizarse para el
desarrollo web. Disponible en:
http://www.desarrolloweb.com/articulos/1325.php [Accedido Noviembre 11,
2010].
[3]. Álvarez, Rubén, 2006. Qué es SQL. DesarrolloWeb.com. Disponible en:
http://www.desarrolloweb.com/articulos/262.php [Accedido Noviembre 18,
2010].
[4]. Cameron, Nadia, 2003. PostgreSQL affiliates .ORG domain - Computerworld.
Compute World. Disponible en:
http://www.computerworld.com.au/article/62894/postgresql_affiliates_org_doma
in/ [Accedido Noviembre 18, 2010].
[5]. Django Software Foundation, 2005. Django | The Web framework for
perfectionists with deadlines. Meet Django. Disponible en:
http://www.djangoproject.com/ [Accedido Noviembre 11, 2010].
[6]. Django Software Foundation, 2010. Django web framework | Django en
Español, Django-es. ¡Descubre Django! Disponible en: http://django.es/
[Accedido Noviembre 11, 2010].
[7]. Eguíluz Pérez, Javier, 2009. Introducción a CSS. Disponible en:
http://www.librosweb.es/css/pdf/introduccion_css.pdf.
[8]. Eguíluz Pérez, Javier, 2008. Introducción a XHTML. Disponible en:
http://www.librosweb.es/xhtml/pdf/introduccion_xhtml.pdf.
[9]. Frost, R, 1989. Bases de datos y sistemas expertos. Ingeniería del
conocimiento. En Madrid: Díaz de Santos, pág. 90.
[10]. Gil, Fidel, Javier Albrigo & Javier Do Rosario, 2005. SISTEMAS DE
GESTIÓN DE BASE DE DATOS
SGBD / DBMS. Disponible en:
http://www.google.com.cu/url?sa=t&source=web&cd=8&ved=0CFAQFjAH&ur
l=http%3A%2F%2Fmachtiani.icyt.df.gob.mx%2Ffile.php%2F1%2Fmoddata%2
Fforum%2F1%2F9240%2FSGBD_2.pdf&rct=j&q=%20SGBD&ei=zQncTIaeL
MWnnQehtuUW&usg=AFQjCNGFcVAs91PHuc4TzzAE3BjpKNrBiQ&cad=rja
[Accedido Noviembre 11, 2010].
Bibliografía
- 74 -- Monitoreo y control para PostgreSQL
[11]. Jairo Chapela Martínez, 2007. Introducción al entorno de desarrollo Eclipse.
Disponible en: http://www-
gris.det.uvigo.es/wiki/pub/Main/MiscResources/Manual_Eclipse.pdf.
[12]. Javier Eguíluz Pérez, 2009. Introducción a JavaScript. Disponible en:
http://www.librosweb.es/javascript/pdf/introduccion_javascript.pdf.
[13]. Jesús Manuel Montero Garrido, 2010. Plataforma Eclipse Introducción
Técnica. Disponible en:
http://150.244.56.228/descargas_web/cursos_verano/20040801/Jesus_Montero/d
ocumentacion_eclipse.pdf.
[14]. Lai, Eric, 2006. Sony Online opts for open-source database over Oracle -
Computerworld. Compute World. Disponible en:
http://www.computerworld.com/s/article/109722/Sony_Online_opts_for_open_s
ource_database_over_Oracle?taxonomyId=053 [Accedido Noviembre 18, 2010].
[15]. Malcer, 2010. Licencia BSD, el verdadero software libre. ext4 Blog, el rincón
de Malcer. Disponible en: http://ext4.wordpress.com/2010/08/31/licencia-bsd-el-
verdadero-software-libre/ [Accedido Noviembre 18, 2010].
[16]. Martínez, Rafael, 2009. Sobre PostgreSQL | www.postgresql-es.org. Sobre
PostgreSQL. Disponible en: http://www.postgresql-es.org/sobre_postgresql
[Accedido Noviembre 11, 2010].
[17]. Oliveira, Fernando Ike de, 2008. PostgreSQL: Performance Tuning.
Slideshare. Disponible en: http://www.slideshare.net/fernandoike/postgresql-
performance-tuning [Accedido Noviembre 18, 2010].
[18]. Sencha Inc., 2006. Sencha - Ext JS - Client-side JavaScript Framework. Ext JS
Cross-Browser Rich Internet Application Framework. Disponible en:
http://www.sencha.com/products/js/ [Accedido Noviembre 11, 2010].
[19]. Tomás Javier Robles Prado & Raúl Turienzo Fernández, Introducción a
PostgreSQL. Disponible en: http://users.servicios.retecal.es/tjavier/intdb.pdf.
[20]. Valdés, Damián Pérez, 2008. ¿Qué son las bases de datos? Maestros del Web.
Disponible en: http://www.maestrosdelweb.com/principiantes/%C2%BFque-son-
las-bases-de-datos/ [Accedido Noviembre 18, 2010].
[21]. Visual Paradigm Foundation, 2010. UML CASE tool for software
development. Visual Paradigm for UML - UML tool for software application
development. Disponible en: http://www.visual-paradigm.com/product/vpuml/
[Accedido Noviembre 11, 2010].
Glosario de términos
- 75 -- Monitoreo y control para PostgreSQL
GLOSARIO DE TÉRMINOS
Apache: es programa de servidor HTTP
Web de código abierto.
API (Application Program Interface):
Conjunto de convenciones
internacionales que definen cómo debe
invocarse una determinada función de
un programa desde una aplicación.
Dashboard (tablero de control): es una
página desarrollada en base a tecnología
web mediante la cual se despliega en
tiempo real información de la empresa
extraída de varias fuentes o bases de
datos. Su característica de tiempo real
otorga a los usuarios un conocimiento
completo sobre la marcha de la empresa
y permite hacer análisis instantáneos e
inteligencia de negocios.
FTP (File Transfer Protocol): es un
protocolo de red para la transferencia de
archivos entre sistemas conectados a
una red.
JDBC (Java Database Connectivity):
permite la ejecución de operaciones
sobre BD desde Java.
NFS (Network File System): es utilizado
para sistemas de archivos distribuido en
un entorno de red.
ODBC (Open DataBase Connectivity):
es un estándar de acceso a BD.
RRDtool (Round Robin Database tool):
herramienta que trabaja con una base de
datos que maneja planificación según
Round-Robin. Esta técnica trabaja con
una cantidad de datos fija, definida en el
momento de crear la base de datos, y un
puntero al elemento actual.
SNMP (Simple Network Management
Protocol): Protocolo estándar para la
administración de red en Internet.
Prácticamente todos los sistemas
operativos, enrutadores, conmutadores,
módems cable o ADSL módem,
firewalls, etc. se ofrecen con este
servicio.
SSH (Secure Shell): sirve para acceder a
máquinas remotas a través de una red.
TCP/IP: protocolos de red en los que se
basa Internet y permiten la transmisión
de datos entre computadoras.
UML (Unified Modeling Language -
Lenguaje Unificado de Modelado):
Lenguaje de modelado de sistemas de
software.
Web 2.0: es la representación de la
evolución de las aplicaciones
tradicionales hacia aplicaciones web
enfocadas al usuario final.
WMI (Windows Management
Instrumentation): una iniciativa que
pretende establecer normas estándar
para tener acceso y compartir la
información de administración a través
de la red de una empresa.
XML (Extensible Markup Lenguage):
Norma recomendada por el WC3 para
definir nuevos tipos de documentos,
permitiendo al usuario definir sus
propias etiquetas de marcado para
extender las capacidades del html.
Glosario de términos
- 76 -- Monitoreo y control para PostgreSQL