main

Bases de datosComunidadMonitorización

¿Cómo monitorizar efectivamente MarkLogic Server?

mayo 7, 2018 — by Rodrigo Giraldo Valencia0

monitorizar-marklogic-featured.png

monitorizar marklogic

Monitorizar MarkLogic ya es posible este detallado tutorial

1. Contexto

Cuando se habla de Monitorizar MarkLogic, es preciso que sepamos, que existen varios tipos de bases de datos NoSQL. Aclarando que no los vamos a mencionar todas, comencemos por mencionar las bases “Clave/valor”, para decir que la manera de relacionar los datos se basa en estructuras indexadas, con base en una clave a la que se le asocia un valor y, de ahí su denominación. Ese valor puede estar conformado por varios valores simples, al tiempo que en este caso se utilizan estructuras de los lenguajes de programación, que son conocidas como “mapas” o “tablas de símbolos”.

No es que pretendamos plasmar un curso básico de programación, pero primero ubicamos el tema dentro del contexto. Continuemos, entonces, para anotar que el tipo de base de datos Clave/valor son de las del “sub-tipo” asociadas a las NoSQL.

Las más populares son Amazon Dynamo, Google BigTable, Azure Tables y Apache Cassandra. Además de las del tipo Clave/valor, tenemos las Tabulares, entre las que podemos mencionar BigTable y HBase/Hadoop que fue creada por Apache con el fin de competir con la anterior (con BigTable).

Además, tenemos los Almacenes documentales, en los que la información importante usa un formato documental, esto es, un formato que “encapsula” la información y el formato mismo. Así, por ejemplo, tenemos XML, JSON e, incluso, formatos binarios como PDF o, bien, los formatos de Microsoft Office. En estos casos, los documentos son asociados a un valor clave o “key” que permite su indexación. Estas son algunas de las bases de datos comerciales:

  • MongoDB, que es la más conocida, al tiempo que es utilizada por periódicos como The New York Times.
  • Apache CouchDB, que es la base de datos que está orientada hacia documentos.
  • Amazon Simple DB.

Además de Clave/valor, las Tabulares y los Almacenes Documentales, tenemos otro tipo de base de datos, esto es, las Nativas XML. Aquí es donde cobra valor, precisamente, el monitorizar MarkLogic Server.

En la actualidad, el formato documental XML es utilizado en casi cualquier base de datos comercial. Se habla de “Nativas”, cuando el sistema utiliza, en todo momento y sin excepción, XML con el fin de almacenar y gestionar los datos. En las databases del tipo de las Nativas, la información es almacenada en forma documental mediante el uso de XML, al tiempo que se maneja con los lenguajes relacionados con el mismo XML, como consultas XPath, SQuery y otros. En lo que respecta a la gestión avanzada, se lleva a cabo mediante conectores que permiten manejar el XML desde lenguajes como Java. Entre las bases del tipo de las Nativas, tenemos MarkLogic Server, eXist y BaseX.

2. ¿Cómo monitorizar MarkLogic Server?

Vamos a enseñar a nuestros lectores, cómo debe hacerse la monitorización de MarkLogic Server, de la manera más clara y sencilla posible. Empecemos, entonces, para anotar que MarkLogic Server nos brinda un nutrido conjunto de funciones tendientes a llevar a cabo la supervisión que conlleva, en primera instancia, una configuración previa del tablero de monitorización de MarkLogic para luego, ofrecernos una API de administración que permite integrar el servidor mismo con ciertas aplicaciones de monitoreo preexistentes y crear nuestras propias aplicaciones (de monitorización) personalizadas.

2.1. Veamos, en primer lugar, una visión general de lo que es la herramienta de monitorización a la que nos vamos a referir en la presente publicación

Anotemos, que quienes pretendan utilizar la herramienta de monitorización a la que nos vamos a referir, deberán saber que debe ser usada para los siguientes propósitos:

  • Para llevar a cabo un seguimiento de las operaciones cotidianas del entorno del servidor MarkLogic.
  • Para analizar la capacidad inicial de planificación y ajuste del precitado entorno de este servidor. Para obtener más detalles podrán visitar esta Guía de Disponibilidad, Escalabilidad y Conmutación por Error, de MarkLogic.
  • Para efectos de solucionar inconvenientes de rendimiento de la aplicación, los lectores podrán visitar la Guía de Rendimiento y Ajuste de Consulta. No se trata de que no queramos entrar en detalles sino que el proceso enseñado en el presente tutorial es muy extenso.
  • Para la solución de problemas de aplicaciones y otros fallos, tenemos que las métricas de monitorización y los umbrales de interés, van a variar dependiendo de la especificidad del entorno “hardware/software” y además, de la configuración del clúster de servidor MarkLogic.

No obstante lo anterior, MarkLogic Server es sólo una parte de su entorno general. Así, la salud de nuestro clúster va a depender del estado de la infraestructura subyacente, teniendo en cuenta el ancho de banda de red, el disco E/S, la memoria y la CPU.

2.2. La elección de una herramienta específica para monitorizar MarkLogic

Aunque el presente tutorial está enfocado en las herramientas que se encuentran disponibles en el mismísimo servidor de MarkLogic, para efectos de su monitorización, les recomendamos a los lectores que amplíen sus propios horizontes de monitorización con una herramienta como Pandora FMS, aunque, si lo que se pretende es un monitoreo básico, podría ser suficiente con los métodos de MarkLogic. Lo que sucede realmente es que, si lo complementamos con Pandora FMS, podremos supervisar todo nuestro entorno informático, con vistas a reunir aplicaciones y las métricas de red (junto con las métricas del mismo MarkLogic), y sistemas operativos.

Para ser más explícitos y concretos, anotemos que existen muchas herramientas de monitoreo en el mercado que, justo es decirlo, cuentan con características muy importantes, como es el caso de tendencias, alertas y, muy importante, análisis de registros para ayudarnos a monitorizar todo el entorno. Ahora, MarkLogic Server cuenta con las siguientes herramientas de monitoreo:

  • Un tablero de monitorización que monitorea el servidor de MarkLogic. Se trata de un tablero que está pre-configurado para monitorear métricas específicas del servidor mismo. Quienes deseen conocer más detalles a este respecto, le sugerimos consultar el “Use of MarkLogic Server Monitoring Dashboard”.
  • Un tablero, en el que se puede apreciar el historial de monitoreo para capturar y, de paso, utilizar los datos históricos de rendimiento para un clúster MarkLogic. Para más información al respecto, sugerimos analizar el “Historial de Supervisión del Servidor MarkLogic.
  • Una API RESTful Management, que podremos utilizar para efectos de integrar el servidor MarkLogic con la aplicación de monitorización existente. Recordemos que la otra opción, es que procedamos a crear nuestras propias aplicaciones personalizadas de monitoreo. Para quienes deseen conocer más detalles al respecto, sugerimos visitar el “Uso de la API de Administración de Marklogic”.

monitorizar MarkLogic

2.3. La arquitectura del monitoreo. Análisis corto, pero profundo

Todas las herramientas de monitorización utilizan una API RESTful Management. Antes de continuar con este concepto, en Pandora FMS podemos encontrar una corta, pero precisa explicación sobre el mismo, más específicamente en al acápite subtitulado “Lenguaje de consulta Mongo”. Continuemos, entonces, para anotar que esta API es utilizada para comunicarse con el servidor MarkLogic. Así, tenemos que la herramienta de supervisión envía solicitudes HTTP hacia un host de monitor de un clúster MarkLogic.

A propósito de este host de monitor, destaquemos que recopila la información solicitada del clúster y, de paso, la devuelve en la forma de una respuesta HTTP a la herramienta de monitorización. Quienes deseen obtener más información sobre este tema específico, pueden visitar el “Uso de la API de Administración”.

3. Las herramientas de monitoreo y seguridad

Para efectos de acceder a las funciones de monitorización, que se encuentran descritas en el presente tutorial sobre cómo monitorizar MarkLogic, es preciso asignar un usuario y desempeñar el rol de administrador del usuario mismo. Además, las herramientas de monitoreo deben ser autenticadas como un usuario con ese rol. Dicho rol de usuario de administración o, si se prefiere, el “rol de administrador de usuario” (cambian las palabras, pero no la esencia del concepto) se nos asigna en http://marklogic.com/xdmp/privileges/manage, que ejecuta el privilegio y, también, nos brinda el acceso a la API de administración.

Además, nos da acceso a la gestión del servidor de aplicaciones y, como si no fuese suficiente, nos permite acceder a la interfaz de usuario para efectos de la configuración del administrador y del panel de control. Ahora, la función de “administración de usuarios” también nos brinda acceso (de sólo lectura) a la información de configuración y al estado del clúster, exceptuando la configuración de seguridad.

Continuando, entonces, con el proceso, digamos que si hemos habilitado el SSL en “Manager App Server”, sus respectivas URLs deben comenzar con HTTPS, en lugar de HTTP. Adicionalmente, es necesario que tengamos un certificado MarkLogic en nuestro navegador, tal y como se describe en la “Guía de Seguridad” y, más concretamente, en el acápite que hace referencia a la forma de “Acceder a un Servidor Habilitado para SSL desde un Navegador o Cliente WebDAV”.

3.1. Clúster MarkLogic (Solicitudes HTTP/respuestas)

Este clúster comprende:

  • Herramienta de monitorización
  • Usuario
  • API de administración
  • Aplicaciones
  • Sistema Operativo
  • Monitor de host
  • Red

4. ¿Cuáles son las pautas para la configuración de nuestras propias herramientas para la monitorización?

Las herramientas para monitorizar MarkLogic nos permiten establecer umbrales en unas métricas específicas, para enviarnos una alerta cuando una de las métricas exceda un valor pre-establecido. Aquí es necesario establecer una línea de base de rendimiento, puesto que muchas métricas que nos pueden ayudar con alertas y a solucionar inconvenientes, son importantes en la medida en que nosotros mismos entendamos los patrones normales de rendimiento. Así, cuando queramos monitorizar un servidor de aplicaciones para consultas lentas, vamos a requerir de un umbral diferente en comparación con una aplicación que genera muchas consultas de larga ejecución y con un servidor de aplicaciones HTTP, en el que las consultas están, usualmente, en el rango de 100 ms.

Las herramientas comerciales de monitorización permiten el almacenamiento de datos para respaldar esta clase de análisis de tendencias. Ahora, desarrollar una línea de base inicial y, además, ajustarla en el caso de que cambie el perfil de nuestra aplicación, nos dará mayor rendimiento (mejores resultados) para efectos de desarrollar una estrategia de monitoreo. Por otro lado, digamos que es necesario equilibrar la integridad respecto del rendimiento. Seamos más explícitos, para que los lectores comprendan mejor la situación. Recolectar y, de paso, almacenar las métricas de monitorización, tiene un costo en materia de rendimiento, en razón de lo cual, debemos o, si se quiere, “tenemos” que equilibrar la “completitud” (término castizo) de la métricas de rendimiento que deseamos, respecto de su costo.

Por tanto el coste que implica recolectar las métricas del monitoreo varía, mientras más recursos controle, mayor será el coste. Plasmemos un ejemplo, para brindar mayor, dado que parece una especie de juego de palabras: si tenemos muchos hosts, el estado del servidor será más costoso. En otras palabras, si tenemos muchos “bosques”, el estado de la base de datos va a ser más caro. Se pueden presentar algunas situaciones, en las que vigile (sólo temporalmente) ciertas métricas pero, una vez que el problema se haya solucionado, ya no se supervisan dichas métricas.

5. Una técnica de equilibrio que estamos recomendando en Pandora FMS, mediante el presente tutorial

Esta técnica consiste en medir el rendimiento del sistema, dentro de un entorno de carga pesada para luego, habilitar nuestra propia herramienta de monitorización y calcular la sobrecarga. Entonces, podremos reducir la precitada sobrecarga si reducimos la frecuencia de recolección pero, eso sí, reduciendo el número de métricas recolectadas o escribiendo un API de administración con el fin de crear una vista personalizada que identifique las métricas específicas que sean de nuestro interés. Así, cada respuesta de la API de administración subyacente, incluye un valor transcurrido para ayudarnos a calcular el coste relativo de cada una de las respuestas.

Quienes deseen profundizar sobre este aspecto específico, podrán visitar el “Uso de API de Administración de MarkLogic. Y, para quienes pretendan obtener detalles acerca de la forma de escribir un complemento de la API de administración, podrán consultar en “Ampliación de API de Administración con Complementos”.

6. El monitoreo de métricas de interés para el servidor MarkLogic

Los entornos y las cargas de trabajo tienen sus variaciones. Cada entorno cuenta con un conjunto único de requisitos que está basado en variables que incluyen:

  • La configuración del clúster
  • El hardware
  • El sistema operativo
  • Los patrones de consulta y las actualizaciones
  • Conjuntos de características
  • Otros componentes del sistema

Así si la replicación no es configurada en su entorno, podemos eliminar plantillas o algunas políticas que supervisan esa característica. Así, creemos haber respondido a la pregunta “¿MarkLogic Server cuenta con los recursos adecuados para efectos de su monitorización?” La respuesta es “Sí”, siempre y cuando se trate de un monitoreo básico.

Para poder monitorizar MarkLogic correctamente, es preciso que tengamos en cuenta que se trata de un servidor que está diseñado para utilizar, de una manera muy completa, los recursos del sistema. Pero, si pretendemos una monitorización más completa serían necesarias aplicaciones personalizadas o un software de monitorización como es Pandora FMS.

Rodrigo Giraldo, redactor técnico freelance. Abogado y estudiante de astrobiología, le apasiona la informática, la lectura y la investigación científica.

Bases de datosComunidadMonitorización

Aprende a monitorizar hasta lo más alto del Golden Gate

abril 26, 2018 — by Rodrigo Giraldo Valencia0

monitorizar-oracle-goldengate-featured.png

monitorizar oracle goldengate

Monitorizar Oracle GoldenGate: Aprende a supervisar este sistema de Oracle

¿Qué es Oracle Golden Gate?

Oracle Golden Gate permite el intercambio y la manipulación de datos en una empresa en una empresa, permitiendo tomar decisiones en tiempo real. Funciona entre múltiples plataformas (heterogéneas), al tiempo que mueve las transacciones que se encuentran comprometidas con la integridad de la transacción, permitiendo una sobrecarga mínima en su infraestructura. Cuenta con una arquitectura modular, brindando flexibilidad, pudiendo extraer y replicar registros de datos seleccionados, cambios a DDL o “Lenguaje de Definición de Datos” (en una verdadera variedad de topologías) y cambios transaccionales.

En lo que respecta al soporte para DDL, sabemos que ciertas configuraciones de captura o entrega y topologías, varían de acuerdo al tipo de base de datos. Desde Pandora FMS, recomendamos a nuestros lectores consultar la documentación relacionada con la instalación y la configuración de Oracle Golden Gate, para sus respectivas bases de datos, con el fin de que puedan obtener una detallada información respecto de las configuraciones admitidas y, también, sobre las características. Es importante saber todo esto, antes de analizar cómo monitorizar Oracle GoldenGate.
Golden Gate es capaz de soportar varios requisitos, como es el caso de:

  • Carga inicial y migración de base de datos
  • Alta disponibilidad y continuidad del negocio
  • Almacenamiento de datos y soporte de decisión
  • Integración de datos

Para quienes quieran obtener información completa acerca de la metodología del procesamiento, la funcionalidad, los requisitos de configuración y las topologías compatibles, también deben consultar la documentación de Oracle Golden Gate para sus respectivas bases de datos.

Continuando con su arquitectura y antes de referirnos a las formas de monitorizar Oraceñ GoldenGate, digamos que este se puede configurar para varios propósitos:

  • Para extracción y replicación (ambas continuas) de operaciones transaccionales de lenguaje de manipulación de datos o DML y cambios en el lenguaje de definición de datos o DDL (para bases de datos compatibles), con la finalidad de mantener una adecuada coherencia de los datos de origen y de destino.
  • Para una extracción estática de registros de datos de una base de datos y la carga de dichos registros en otra base de datos diferente.
  • Para la extracción de una base de datos y la replicación a un archivo fuera de esa base de datos.

Componentes de Oracle Golden Gate

Los componentes de Golden Gate son los siguientes: Bomba de datos, Extraer, Puntos de control, Extraer archivos o Trails, Replicat, Coleccionista y Gerente.
Destaca el proceso de extracción, siendo el mecanismo de captura de Oracle Golden Gate. Además, el extracto es ejecutado en un sistema fuente o en una base de datos descendente o si se prefiere, en ambos.
Podemos configurar “Extraer” de diferentes formas:

  • Cambiando la sincronización: resulta que Extract captura las operaciones DML y DDL, una vez se ha llevado a cabo la sincronización inicial.
  • Con cargas iniciales: para las cargas de datos iniciales, Extract captura un conjunto actual y estático de datos, desde sus objetos de origen directamente.

Método 1. Para extraer capturas de una fuente de datos podemos hacer Tablas fuente (en caso de que la ejecución sea una carga inicial) y de los registros de recuperación de la base de datos o de los registros de transacciones (como es el caso de los registros de “Rehacer” de Oracle Data Base o, también de los registros de auditoría de SQL/MX). Sin embargo, el método real de captura de los registros varía según el tipo de base de datos del que se trate en cada caso.
Así por ejemplo, Oracle Golden Gate para Oracle ofrece un modo de captura integrado, en el que Extract entra a interactuar, de manera directa, con un servidor de registro de base de base de datos que, a su turno, pasa a extraer el flujo de transacciones de Oracle. Desde Pandora FMS, sugerimos a los lectores que deseen obtener una información más detallada este respecto de la captura integrada, ingresar aquí+ .

Método 2. Otro método lo encontramos en un módulo de captura de terceros, que nos brinda una capa de comunicación que pasa datos y metadatos de una API externa a la API de Extracción. Resulta que el proveedor de la base de datos, nos proporciona los componentes que a su vez, extraen las operaciones de datos y procede a pasarlas a “Extraer”.

monitorizar oracle goldengate

Las Bombas de Datos

¿Qué es una Bomba de Datos? Se trata de un grupo de extracción (secundario) que está dentro de la configuración de origen de Oracle Golden Gate. En caso de que no se use una Bomba de Datos, Extract debe proceder a enviar las operaciones de datos que han sido capturadas hacia un camino remoto en el objetivo. No obstante, en una configuración típica de una Bomba de Datos, el llamado Grupo de Extracción Primaria procede a escribir en un registro ubicado en el sistema fuente. La Bomba de Datos procede a leer este camino y envía las operaciones de datos, mediante la red a un camino remoto en el objetivo, al tiempo que la Bomba añade flexibilidad de almacenamiento y por supuesto, sirve también para aislar el proceso (primario) de extracción de la actividad de TCP/IP.

En términos generales, una Bomba de Datos es capaz de llevar a cabo filtrado de datos, conversión y mapeo, pero también puede configurarse en “modo de paso”, caso en el que los datos son transferidos sin manipulación alguna. Este modo de paso, también conocido como “modo Pass-through” aumenta el rendimiento de la Bomba, en vista de que toda esa funcionalidad que busca definiciones de objetos se omite.

Para los lectores que pretendan complementar la información que hemos suministrado sobre Oracle Golden Gate, desde Pandora FMS les recomendamos ingresar en este link.

¿Cómo monitorizar Oracle GoldenGate?

Mediante el uso de los comandos de información en GGSCI:

Para ver y analizar la información de procesamiento, lo más indicado es utilizar GGSCI. Los siguientes, son los comandos para ver la información de proceso:

  • El comando INFO { EXTRACT│REPLICAT } group [ DETAIL] nos muestra: ejecutar estado, puntos de control, retraso aproximado e información ambiental.
  • INFO MANAGER nos muestra ejecutar estado y número de puerto
  • INFO AL nos muestra INFO salida para todos los procesos de Oracle Golden Gate en el sistema
  • STATS { EXTRACT │ REPLICAT } group nos muestra las estadísticas cobre el volumen de procesamiento y el número de operaciones realizadas
  • STATUS { EXTRACT │ REPLICAT } group nos muestra el estado de ejecución, esto es, inicio, ejecución, detención y abended
  • STATUS MANAGER nos muestra Ejecutar estado
  • LAG { EXTRACT │ REPLICAT } group nos muestra la latencia entre el último registro procesado y la marca de tiempo en la fuente de datos
  • INFO { EXTTRAIL │ RMTTRAIL } trail nos muestra el nombre del proceso asociado, la posición de los últimos datos procesados y el tamaño máximo de archivo

Nota importante: existen muchos otros comandos para monitorizar Oracle GoldenGate. Pero, como nos tornaríamos demasiado extensos si los plasmamos todos, recomendamos a los lectores consultar este link.

monitorizar Oracle GoldenGate a través del análisis de una recuperación de extracto:

Recuperación Limitada es exclusivo para Oracle. Si Extract cierra de manera inusual o anómala, en caso de encontrarse abierta una transacción de larga duración, podría parecernos que tarda mucho en recuperarse, cuando se inicia nuevamente.
Para recuperar su estado de procesamiento, Extract debe realizar una búsqueda a través de los registros en línea (y archivados, de ser necesario), con el fin de encontrar el primer registro para esa transacción de ejecución larga. Cuanto más atrás en el tiempo de inicio de la transacción estemos, mayor cantidad de tiempo se demorará la recuperación, al tiempo que Extract puede parecer estancado. Para evitar esto y confirmar que Extract se esté recuperando de manera adecuada, debemos usar el comando SEND EXTRACT con la opción STATUS.

Así, aparecerá una de las siguientes anotaciones de estado, al tiempo que podremos continuar con el proceso a medida que Extract cambie su posición de lectura de registro, durante la recuperación misma:

  • In recovery [1] : indica que el extracto se está recuperando en su punto de control, en el registro de transacciones.
  • In recovery [1] : nos indica que el extracto se está recuperando desde su punto de control, hasta el final del camino.
  • Recovery complete : nos dice que ha finalizado la recuperación, al tiempo que se reanudará el procesamiento normal.

monitorizar oracle goldengate

Supervisión (monitorización) de seguimiento:

Las estadísticas de Lag nos muestran los procesos de Oracle Golden Gate, siguen los ritmos de la cantidad de datos que generan las aplicaciones de carácter comercial. Mediante esta información, podremos diagnosticar inconvenientes sospechosos y ajustar el rendimiento de los antedichos procesos. Todo con el fin de minimizar la latencia entre las bases de datos de origen y destino.

A propósito de Lag para Extract, el retraso es la diferencia (en segundos) entre el instante en el que se procesó un registro por Extract (de acuerdo con el reloj del sistema) y la marca de tiempo de dicho registro en la fuente de datos. Para Replicat, el retraso es la diferencia (en segundos también) entre el instante en que Replicat procesó el último registro (de acuerdo con el reloj del sistema) y la marca de tiempo del registro en el camino. Ahora, para observar las estadísticas de retraso, debemos utilizar el comando LAG o SEND en GGSCI.

Es muy importante tener en cuenta que el comando INFO devuelve estadísticas de retraso. Sin embargo, en este caso, la estadística se toma desde el último registro que se controló y no desde el registro actual que estemos procesando. Además, este comando es menos preciso que LAG y que INFO.

Para monitorizar Golden Gate, es preciso controlar cómo está reportando Lag:

Con el fin de especificar el intervalo en el que el Administrador esté verificando el retraso de Extract y de Replicat, debemos utilizar el parámetro LAGREPORTMINUTES o LAGREPORTHOURS . Por otro lado, para establecer un umbral de desfase que se considere crítico y para forzar un mensaje de advertencia en el registro de error, cuando se alcanza el umbral, debemos utilizar el parámetro LAGCRITICALSECONDS ; LAGCRITICALMINUTES o, si se prefiere, LAGCRITICALHOURS. Aclaremos, eso sí, que estos parámetros afectan los procesos Extract y Replicat.

Ahora, para determinar un umbral de retardo, debemos usar los parámetros LAGINFOSECONDS, LAFINFOMINUTES o, bien, LAGINFOHPURS. Pero, en caso de que el retraso exceda el valor que hemos especificado, Oracle Golden Gate nos reporta la información de retraso en el registro de errores. En caso de que el retraso exceda el valor especificado con el parámetro LAGCRITICAL, el Administrador nos informará que el retraso es crítico. Si el retraso no es crítico, se nos informa mediante un mensaje. Un valor de cero (0) hace que se fuerce un mensaje a la frecuencia especificada, con los parámetros LAGREPORTMINUTES o LAGREPORTHOURS.

Hemos planteado las herramientas más importantes para monitorizar Oracle GoldenGate, aunque en el caso de que los lectores deseen conocer algunos otros métodos como lo son el Procesamiento de Supervisión de Volumen, el uso del Registro de Errores, el uso del Informe de Proceso, el uso del Archivo de Descarte, el Mantenimiento de los Archivos de Descarte, el Uso de los Registros del Sistema, la Conciliación de las Diferencias de Tiempo, y demás asuntos relacionados, podrán ingresar a esta página oficial de Oracle. Además, en Pandora FMS también podrán encontrar información valiosa sobre la monitorización de servidores.

Rodrigo Giraldo, redactor técnico freelance. Abogado y estudiante de astrobiología, le apasiona la informática, la lectura y la investigación científica.

Bases de datosComunidadMonitorización

Novedades de PostgreSQL 10 y su monitorización

abril 9, 2018 — by Jimmy Olano0

PostgreSQL-10-featured.png

PostgreSQL 10

PostgreSQL 10: replicación lógica y su monitorización

Hace ya algún tiempo publicamos un estudio sobre la monitorización de PostgreSQL de manera muy detallada y técnica. Hace unos días en una revista especializada anunciaron la buena nueva acerca del lanzamiento de un complemento o plugin para monitorizar PostgreSQL 10 con Pandora FMS, la herramienta de monitorización estrella de esta casa. Hoy actualizaremos nuestros conocimientos con la nueva versión de PostgreSQL: la versión 10, ¡adelante!

PostgreSQL 10

Introducción a PostgreSQL 10

PostgreSQL es una potente base de datos que incluimos en otro de nuestros artículos como una de las mejores bases de datos de libre distribución relacionales y hoy en día sigue cierto. Allí podrán encontrar una sinopsis de los artículos publicados en este blog o en el foro de Pandora FMS, en caso de que queráis ampliar vuestra información no solo acerca de PostgreSQL 10 sino de sus versiones anteriores. Acotamos que dichos artículos siguen siendo plenamente válidos, ya que siempre las versiones nuevas incluyen una compatibilidad, dando así oportunidad a que el software que utilice PostgreSQL se actualice a la versión 10. PostgreSQL está escrito por completo en software libre con una licencia parecida a BSD y MIT. Esencialmente la licencia indica que somos libres de hacer lo que necesitemos con el código fuente siempre y cuando libremos de responsabilidad alguna por su uso a la Universidad de California.

En este trabajo queremos enfocarnos en darle continuidad al artículo que mencionamos previamente, donde explicamos la consulta de los bloqueos en PostgreSQL con el parámetro pg_locks:

SELECT COUNT(*) FROM pg_locks;

Cuando varios usuarios acceden a un mismo registro (o varios) se producía un bloqueo para evitar colisiones de versiones en los datos, parámetro importante a monitorizar. En otro estudio que hicimos sobre otra popular base de datos introdujimos como concepto y explicamos brevemente lo que es el ACID, (Atomicidad, Consistencia, Aislamiento y Durabilidad), del registro de nuevos datos y transacciones en conjunto que pueden llegar a crear bloqueos en una base de datos relacional: ¡sí, esto que describimos también sucede en otros motores de almacenamiento, de allí la importancia de la novedad que trae ahora PostgreSQL 10!

Bloqueos, bloqueos, bloqueos: la pesadilla de los programadores

Aunque al parecer las preocupaciones de otros no deberían ser de nuestro interés, pasamos a explicar el porqué interfiere con nuestras labores de monitorización de las bases de datos. Esto es así porque también existe la monitorización de respaldos, su correcta realización, almacenaje en un lugar seguro, y las bases de datos no están exentas de ellos. Además debemos seguir los consejos básicos para mantener optimizado el rendimiento de ellas, todo armonizado con un sistema de monitorización.

Todo lo anterior puede llevarse a cabo con una atención especializada (en el caso de la versión “Enterprise” de Pandora FMS adicionalmente existen planes de formación al usuario), de manera aparte los administradores de red mantienen réplicas de las bases de datos, por supuesto en otros servidores en ubicaciones físicas diferentes.

Dichas réplicas representan una serie de ventajas:

  • Pueden estar físicamente ubicados fuera de la empresa o en sus sucursales, siempre teniendo en cuenta las comunicaciones encriptadas para pasar datos de un lado a otro.
  • Conceptualmente se puede considerar como “copias de seguridad” actualizadas prácticamente en tiempo real.
  • Podremos hacer labores de auditoría y estadísticas sobre las réplicas sin afectar el desempeño de la base de datos principales.

¿Qué es una réplica de base de datos en PostgreSQL 10?

Una réplica de base de datos, replica los datos de una manera muy sencilla: copia los ficheros de la base de datos maestra, bit a bit, byte a byte. PostgreSQL 10, guarda en los ficheros que considere necesarios cada elemento de una base de datos y para ello lleva un registro binario, una especie de bitácora que resume el cambio hecho en dichos ficheros que se suceden cuando se agregan o modifican registros. Dicha forma de replicar es también utilizada por otros motores de bases de datos ya que es un esquema bien conocido.

Un efecto colateral de las réplicas de bases de datos es que la esclava no estará disponible por breves momentos mientras se escribe la información replicada. Esto no consideramos que sea algo grave o para preocuparse, lo más importante ocurre en la base de datos maestra si está presente algún bloqueo de registros o, peor aún, un conjunto de registros que pertenezcan a una transacción que deba ser revertida. Estos no deben ser copiados en la réplica, porque es una información que no va a ser registrada de manera permanente sino que será borrada (solo se guardará un resumen de la información).

Veamos lo anterior con un sencillo ejemplo: dos clientes de un banco cualquiera mantienen cuentas y el cliente A le quiere transferir dinero a un cliente B (en la vida real es mucho más complejo, esto no es más que un ejemplo simplificado). Se deben realizar al menos dos escrituras en la base de datos: una debitando el monto al cliente A y otra acreditando el monto al cliente B: cuando ambos eventos hayan sido verificados se puede considerar que la transacción está completa y los cambios pasan a ser permanentes.
¿Qué sucedería si al mismo tiempo que el cliente A está realizando dicha transferencia de dinero al cliente B le es descontado el pago automático de su tarjeta de crédito quedando sin saldo suficiente para la transferencia? Pues que la acreditación que se le hubiera hecho al cliente B y el débito hecho al cliente A no serán registradas de manera permanente sino que serán desechadas: así funciona ACID garantizando la integridad de los datos y dificultando de esta manera la replicación de la información.
El proceso de replicación no ve, ni sabe nada sobre registros ni usuarios que quieran grabar o modificar datos, el proceso de replicación únicamente ve que los ficheros deben ser iguales en ambas máquinas y si el origen está escribiendo datos en alguno de esos ficheros se debe esperar a que finalice y que el archivo entonces esté disponible para ser leído y copiado.

¿Qué es una replicación lógica de una base de datos en PostgreSQL 10?

El enfoque es distinto en PostgreSQL 10 y consiste en lo siguiente: de igual la manera en que la réplica normal haga el proceso de consultar al registro binario, que lleva la cuenta de los archivos que han sido modificados desde la última replicación exitosa. Aquí está la novedad, traduce dichos cambios en información sobre los registros que ya están grabados de manera permanente en la base de datos, siendo éstos registros que se leen y se agregan en la réplica. De esta manera los bloqueos son obviados porque no sabemos en qué resultarán (permanentes o desechados), lo cual es una solución muy práctica e ingeniosa y además nos otorga beneficios adicionales.

¿Cómo son posibles las replicaciones lógicas en PostgreSQL 10?

Gracias a esta nueva versión 10 podremos instalar una extensión de PostgreSQL llamada pglogical de la casa de software 2ndQuadrant quienes han agregado funcionalidades lógicas a PostgreSQL desde la versión 9.4.

pglogical está disponible como software libre bajo las mismas condiciones de licenciamiento de PostgreSQL 10 y para instalarlo debemos seguir los siguientes pasos que explicamos en forma práctica en el caso de utilizar GNU/Linux Debian y sus derivados:

  • Primero deberemos agregar el repositorio en nuestro ordenador directo de la página web de PostgreSQL, en el caso de Ubuntu se tiene disponible la versión 9.5 y necesitamos la versión 10.
  • Debemos agregar la clave del repositorio la cual nos garantizará que lo que descarguemos sea fiel y exacto y de acuerdo a lo publicado en la página de PostgreSQL (detalles en este enlace).
  • Haremos el mismo proceso con pglogical, agregaremos el repositorio apuntando a la página web de 2ndQuadrant para obtener la última versión disponible.
  • También deberemos agregar la clave respectiva del repositorio de 2ndQuadrant (detalles en este enlace).
  • Una vez que tengamos configurados los repositorios ordenamos apt-get update y luego apt-upgrade.
  • Finalmente instalamos PostgreSQL 10 con apt-get install postgresql-10 pgadmin3 y pslogical con apt-get install postgresql-10-pglogical.
  • Nosotros probamos estos procesos en una máquina con Ubuntu 16.04 de 64 bits (de hecho la base de datos ofrecida durante la instalación de Ubuntu Server es precisamente PostgreSQL) y el único contratiempo que tuvimos fue con el diccionario en idioma ruso para lo que atañe al corrector ortográfico Hunspell.

PostgreSQL 10

Si queremos experimentar la última versión en desarrollo de pglogical podremos traernos el código fuente directo de su repositorio en GitHub. En la página web de 2ndQuadrant informan que la versión de pglogical debe coincidir siempre con la versión de PostgreSQL instalada y que diferentes máquinas pueden trabajar con diferentes versiones (y replicar entre ellas) siempre y cuando se respete lo anterior, así que queda a criterio de cada administrador de base de datos el trabajar de esa manera.

Extendiendo la utilidad a la replicación lógica en PostgreSQL 10

Como vemos ya de por sí la replicación lógica supera ciertas limitaciones técnicas de la replicación normal cumpliendo así nuestro objetivo de respaldar datos pero podemos ir más allá: ya sabemos que la réplica lógica NO es una copia fiel y exacta, byte a byte, de la base de datos maestra. Por tanto la información que estamos copiando desde la base de datos maestra llega a la réplica como si fuera una base de datos “independiente” y escribirá en sus propios ficheros como mejor le convenga, o sea, dependiendo del tipo de hardware, el sistema operativo que tenga instalado etc.

Aquí lo que está garantizado es que un registro equis está copiado en la réplica y es idéntico byte a byte a su original, pero la manera como está escrita en el disco duro será diferente en ambas máquinas. Para finalizar esto debemos denotar que con una copia lógica podremos extraer información estadística o de auditoría de ella sin tener que esperar a que sea escrita de manera exacta la replicación que tengamos planificada cada cierto tiempo (cada cinco minutos o un gigabyte, lo que suceda primero, por ejemplo).

El hecho de extraer información estadística o de auditoría de una base de datos de réplica implica que debemos escribir las consultas (o incluso modificar índices) que, claro está, no existen en la base de datos maestra, pero que necesitamos para retribuir la información: al escribir estas consultas (así sean de manera temporal) ya la base de datos deja de ser copia fiel y exacta de la base de datos maestra, lo que ocasiona problemas a la hora replicar ficheros uno a uno.
Con la replicación lógica no tendremos ese problema ya que está garantizado que todos los registros originales se encuentran copiados en la réplica, la cual garantiza (por ser una máquina dedicada a replicar) que no podrán ser modificados o borrados pero sí que podrán ser leídos y consultados.

Extender la utilidad de la replicación lógica nos lleva a ejemplos prácticos, por ejemplo, se necesita que el Departamento de Tarjetas de Crédito de un banco lleve registro en tiempo real de los clientes sin que su trabajo impacte a la base de datos principal: podremos instalar un servidor de réplica lógica que solo copie los datos de los clientes que poseen tarjetas de crédito. Dichos datos (simplificado el extremo) podrían ser los datos personales, cuentas bancarias y por supuesto los datos propios de las tarjetas de crédito. No es necesario replicar todos los clientes del banco, solo una parte de ellos; así mismo el Departamento de Tarjetas de Crédito podrá incluso crear tablas adicionales para analizar los movimientos bancarios y poder aprobar un aumento en el límite de crédito de cliente y así muchas otras cosas más que se traducen a la final en ingreso de dinero a la empresa.

Configurando a PostgreSQL 10 para replicaciones lógicas

Al instalar PostgreSQL 10 éste trae por defecto unos valores predeterminados en la configuración WAL. Sin ampliar mucho en el tema, dicha configuración permite recuperarse de apagados inesperados o fallos que hayan impedido que queden registrados en disco duro los datos.

En el caso de las replicaciones, la replicación lógica es una novedad que muchos aún no conocen pues viene desactivada por defecto. Lo que tenemos que hacer primero es tener acceso exclusivo a la base de datos (solo nosotros estaremos conectados con las debidas credenciales) y segundo cambiamos el valor del parámetro wal_level a ‘logical‘. Para conocer la ubicación del fichero postgresql.conf basta con que ejecutemos en una consola psql el comando: show config_file y editemos el archivo modificando: set wal_level = logical y guardamos el fichero. Después necesitaremos reiniciar el servicio, lo cual no es problema ya que solo nosotros estamos conectados y nadie más.

Este cambio le indicará a PostgreSQL 10 que deberá agregar los registros correspondientes para poder traducir los catálogos binarios a catálogos de registros, de allí la necesidad de parar momentáneamente la base de datos y reiniciarla. PostgreSQL 10 posee la capacidad de albergar guiones en lenguaje Python por lo que planificar esto que describimos (y lo que viene) dependerá de cada administrador de base de datos en trabajo conjunto con el o los administradores de red a fin de aprovechar horario nocturno o de madrugada para realizar el trabajo sin impactar a la labor normal diaria de la empresa.

Creando publicaciones en la base de datos maestra

PostgreSQL 10 está configurado para trabajar con publicaciones que deberemos definir en la base de datos maestra. Conectados con las credenciales adecuadas por una ventana terminal creamos una publicación para nuestro ejemplo del Departamento de Tarjetas de Crédito de nuestro banco imaginario de la siguiente manera:

CREATE PUBLICATION dpto_tc FOR TABLE clientes, cuentas_bancarias, tarjetas_credito;

Esto creará una publicación llamada dpto_tc que pondrá a disposición para replicación lógica las tablas llamadas clientes, cuentas_bancarias y tarjetas_credito.
Si necesitamos agregar todas las tablas a una sola publicación, deberemos escribir lo siguiente:

CREATE PUBLICATION todas_las_tablas FOR ALL TABLES;

Debemos recalcar que de manera predeterminada para las publicaciones que adicionamos, los datos de esas tablas serán copiados a la réplica lógica en su totalidad, no obstante hay la opción de establecer el copiar solo los datos que hayan sido agregados después de la creación de la publicación.

Preparando la réplica lógica

Una vez hayamos definido las publicaciones pasaremos a realizar el trabajo que puede ser conllevar mayor pensamiento y decisión de nuestra parte: deberemos crear la estructura de datos de todas y cada una de las tablas que contiene cada una de las publicaciones y si usamos la orden “FOR ALL TABLES” en al menos una de las publicaciones pues tendremos que hacer una copia idéntica de toda la estructura de la base de datos.

Es por ello que recomendamos adelantar trabajo y siempre crear copia completa de toda la estructura de la base de datos ya que pglogical nunca hará este trabajo por nosotros y al momento de replicar solo devolverá un error de tabla no encontrada (lo que nos llevará a la monitorización del trabajo de replicación lógica, ¡una monitorización más para Pandora FMS!).

Creando las suscripciones

Una vez tengamos lista la estructura de datos para recibir la réplica lógica, deberemos crear una suscripción utilizando los mismo nombres de las publicaciones creadas. La sintaxis, una vez estemos conectados debidamente a la máquina que contendrá la réplica lógica, será la siguiente (usaremos el mismo ejemplo del banco):

CREATE SUBSCRIPTION dpto_tc CONNECTION 'host=bd_maestra dbname=mi_credenciales ...' PUBLICATION dpto_tc;

Para facilidad de recordación, la suscripción llevará el mismo nombre de la publicación y en lo que respecta a los datos de conexión pues deberemos incluir lo valores según nuestra estructura de red y configuración: tiempo de espera para expirar el intento de conexión, el puerto, etcétera, todo de acuerdo a la norma RFC3986.

Modificando las publicaciones

Con la orden ALTER PUBLICATION en la base de datos maestra podremos agregar nuevas tablas, eliminar, cambiar usuarios o incluso renombrar la publicación, entre otras opciones.

Manteniendo al día las suscripciones

Podemos automatizar el mantener al día las suscripciones en la base de datos esclava con la siguiente orden:

ALTER SUBSCRIPTION dpto_tc REFRESH PUBLICATION;

Esto actualizará las tablas que hayamos agregado, por eso dimos la recomendación de copiar la estructura completa de todas las tablas de la base de datos pero insistimos: si creamos una tabla nueva en el origen y la agregamos a la publicación, también deberemos crear dicha estructura de tabla en el destino y luego actualizar la suscripción.

Monitorizando la replicación lógica en PostgreSQL 10

Al igual que la replicación normal, la cual podemos extraer su estado con pg_stat_replication en las réplicas lógicas usaremos pg_stat_subscription de la siguiente manera:

SELECT * FROM pg_stat_subscription;

También podremos seleccionar campos específicos de las suscripciones:

  • application_name: el nombre de la suscripción
  • backend_start: fecha y hora exacta del comienzo de la replicación lógica.
  • state: si está funcionando recibiremos “streaming” o transmitiendo.
  • sent_location: valor hexadecimal a fines de auditoría binaria.
  • write_location: ídem anterior.
  • flush_location: ídem anterior.
  • sync_state: devuelve valor asíncrona, es decir, se ejecuta de manera independiente o en segundo plano.

Ya para finalizar este denso artículo, queda por parte de los programadores el crear un guion que se conecte a ambas bases de datos en modo de solo lectura y compare registro por registro a ver si coincide la información en tanto en origen como en destino. Dicho proceso, como siempre, se podría ejecutar en las madrugadas o los fines de semana y los resultados deberían ser guardados en una tercera base de datos o en ficheros de registros, todo esto con el objetivo de poder ser monitorizado con Pandora FMS para que luego configuremos de una manera adecuada las alertas respectivas.

Conclusión

Apenas hemos visto la replicación lógica ya que aún hay muchas otras características tales como:

  • Filtrado a nivel de fila (registro): tal como como funciona el comando CHECK podremos replicar solo los que cumplan determinada regla.
  • Filtrado a nivel de columna (campo): si una tabla contiene muchos campos que no son relevantes para el departamento de tarjetas de crédito (seguimos con nuestro ejemplo práctico) pues solo replicamos los que nos interesen.
  • pglogical tiene un parámetro que es exclusivo de este complemento y que consiste en retrasar las replicaciones según el período de tiempo que necesitemos: podríamos necesitar que la replicación comience en la noche cuando los empleados se hayan ido a descansar. Dicha característica no está “embutida” en PostgreSQL 10.

Pensamos que estos conceptos con el paso del tiempo se volverán normas en otros ambientes de manejos de datos, solo esperemos que pasen unos cuantos años y nos tendrán aquí siempre dispuestos a escribir sobre el tema. Cualquier pregunta o comentario escribirla aquí abajo. ¡Gracias!

Redactor técnico. Comenzó a estudiar ingeniería en 1987 y a programar con software privativo. Ahora tiene un blog en el que difunde el conocimiento del software libre.

Bases de datosComunidadMonitorización

Tutorial: guía para monitorizar Tomcat

marzo 19, 2018 — by Rodrigo Giraldo Valencia1

monitorizar-tomcat-featured.png

monitorizar Tomcat

Monitorizar Tomcat: cómo supervisar este servidor de aplicaciones

1. Contexto

1.1. ¿Qué es Tomcat?

Antes de plasmar una completa guía sobre cómo monitorizar Tomcat, veamos qué es y por qué elegirlo como opción. Apache Tomcat o simplemente Tomcat, es un contenedor de Servlets que se utiliza para compilar y ejecutar aplicaciones web en Java. Además, debemos anotar que implementa y brinda soporte a páginas JSP o “Java Server Pages” y, también, a Java Sockets, al tiempo que le da soporte a Servlets. Además, Tomcat es compatible con tecnologías como Java WebSocket y Expression Language, ambas del ecosistema Java.

Pero, ¿Qué es un Servlet de Java? Se trata de un objeto de Java que pertenece a una clase que se extiende desde javax.servelt.http.HttpServlet y que nos da la posibilidad de crear aplicaciones web dinámicas, es decir que permite llevar a cabo consultas, además de insertar y/o eliminar datos.

Más específicamente, se trata de pequeños programas o applets escritos en Java que, a su vez admiten que les formulemos peticiones a través del protocolo HTTP. Los Servlets reciben peticiones desde un navegador web, al tiempo que proceden a procesarlas para luego devolver una respuesta al navegador mismo, lo que hacen (normalmente) en HTML. Para ello, pueden usar las herramientas del lenguaje Java.

Veamos qué es un contenedor de Servlets. Recordemos, que al principio decíamos que Tomcat es un contenedor de Servlets. Pues bien, un contenedor de este tipo es un programa capaz de recibir peticiones de páginas web para, luego, redireccionar dichas peticiones a un objeto Servlet específico. Y uno de los contenedores más populares, es Apache Tomcat o, simplemente, Tomcat.

En la lista de módulos de Pandora FMS, tenemos a Tomcat como un servidor de aplicaciones, al tiempo que más adelante, tenemos a JMX Generic que, necesario es anotarlo, nos brinda una lista e información sobre el estado de todos los servidores Servlets desplegados en el servidor de aplicaciones, esto es, en el mismísimo Tomcat, para el caso específico que nos ocupa en el presente tutorial. Es necesaria esta aclaración, por cuanto vamos a ver cómo monitorizar Tomcat mediante Pandora FMS.

Para profundizar sobre lo que es, en sí mismo, Tomcat, sobre la manera como funcionan los contenedores de Servlets, y acerca de lo que es un Apache Ant, además de los pasos para montar un Servlet con Java, podemos acudir a esta guía.

monitorizar Tomcat

1.2. ¿Por qué recurrir a Tomcat sobre Servidores Cloud?

La instalación de Tomcat en la Nube (en los servidores Cloud), se puede hacer rápidamente, en unos minutos podemos disponer de las últimas versiones de los programas y librerías que sean necesarias. Adicionalmente, su actualización es muy sencilla, en los casos en los que surge cualquier versión nueva o “Update” de seguridad de los programas que se encuentran involucrados.
Entonces, cuando contamos con un servidor web Apache, para trabajar conjuntamente con Tomcat, tendremos una interesante gama de posibilidades que nos ofrece este potente servidor. La base de datos instalada es MySQL, aunque también es posible instalar cualquier otro sistema gestor, como podrían ser, por ejemplo, PostgreSQL u Oracle.

2. ¿Cómo monitorizar Tomcat?

Si pretendemos garantizar el adecuado funcionamiento de las aplicaciones que se ejecutan en el servidor de Tomcat, es indispensable tener un preciso control sobre las métricas y de las características de tiempo de ejecución. Del mismo modo, este control es indispensable para prevenir o resolver inconvenientes de una manera oportuna. Así, digamos que la monitorización del rendimiento de Tomcat se puede llevar a cabo a través de los beans JMX o, si se prefiere, usando una herramienta de supervisión dedicada, que podríamos elegir entre JavaMelody, Tomcat Manager e, incluso, MoSKito.

Ahora, como en toda monitorización, es importante que sepamos qué es lo importante para supervisar y cuáles son los valores aceptables en lo que respecta a las métricas. Veamos, entonces, cómo debemos configurar la supervisión/monitorización de Tomcat y, de paso, cuales son las métricas a las que debemos recurrir para controlar su rendimiento.

Tomcat Perfomance Metrics o “Métricas de Rendimiento de Tomcat”. Siempre que vayamos a verificar el rendimiento de una aplicación que ha sido implementada en un servidor, como en el caso de lo que sucede con Tomcat, es preciso tener en consideración que existen varias áreas que nos pueden proporcionar pistas o, mejor aún, datos concretos, acerca de si todo está funcionando como queremos o, lo que es lo mismo, dentro de los parámetros ideales. Áreas críticas a supervisar:

  • El uso de la memoria: se trata de una lectura (análisis) crítica, debido a que, en caso de que se esté ejecutando en la memoria del montón, se generará una ralentización de la aplicación e, incluso, podría conducir a excepciones de OutOfMemory o “Fuera de la Memoria”. Por otro lado, si se está utilizando muy poca memoria, se podrían reducir las necesidades de memoria y, de paso, minimizar los costes.
  • Uso de subprocesos: en caso de que haya demasiados subprocesos activos al mismo tiempo, se podrían ralentizar la aplicación y, más aún, todo el servidor.
  • Recolección de basura: este es un proceso que suele consumir una gran cantidad de recursos, por lo que es preciso determinar la frecuencia adecuada en la que se debe ejecutar, al tiempo que es necesario, también, liberar una cantidad necesaria (y suficiente) de memoria, cada vez que nos dediquemos a monitorizar Tomcat.
  • Número de sesiones: la cantidad de sesiones que el servidor puede admitir es similar a la cantidad misma de solicitudes.
  • Solicitar en todo momento: esta métrica hace alusión a la cantidad de solicitudes que puede manejar el servidor, en una unidad de tiempo específica. Lo anterior, nos puede ayudar a determinar nuestras necesidades en materia de hardware.
  • Grupo de conexión de base de datos: monitorizar este aspecto, nos ayuda a llevar a cabo el ajuste de la cantidad de conexiones en un grupo que la aplicación requiere.
  • Tiempo de respuesta: si el sistema está tardando más de la cuenta en responder las solicitudes, es muy posible que los usuarios abandonen el servicio. Por tanto, es imprescindible controlar este tiempo de respuesta, a la vez que es fundamental investigar las posibles causas de las demoras.
  • Tiempo de actividad: se trata de una medida simple que nos enseña por cuanto tiempo ha estado funcionando el servidor.
  • Tasas de error: es una métrica útil para identificar potenciales problemas en la base de código.

Para terminar con este subtema, anotemos que el servidor Tomcat acude a su respectivo asistente para supervisar el rendimiento, al proporcionar beans JMX, para la mayoría de estas métricas, que se pueden verificar mediante la utilización de una herramienta como lo es Tomcat Manager o, bien, JavaMelody. En nuestro caso, vamos a enseñarles a los lectores, desde Pandora FMS, a monitorizar Tomcat mediante:

  • Monitoring and Managing Tomcat o, lo que es lo mismo, desde Tomcat Manager, y
  • JavaMelody o Tomcat Pefomance Monitoring

2.1. Monitorización de Tomcat mediante Pandora FMS: Monitoring and Managing Tomcat, o Tomcat Manager

No vamos a “atiborrar” a los lectores con interminables paquetes de lenguaje informático, dado que podrán analizar el contenido de los links plasmados más adelante. Mirar y, de paso, analizar dentro de un servidor, conseguir algunas estadísticas necesarias o, bien, reconfigurar ciertos ítems de una aplicación, se constituyen en tareas cotidianas de administración/monitorización.

monitorizar Tomcat

Es necesario, en primera instancia, habilitar JMX Remote, sí solamente sí vamos a monitorizar Tomcat de manera remota. No se deberá, por tanto, hacer dicha instalación, si vamos a monitorearlo localmente, esto es, utilizando el mismo usuario con el que se ejecuta Tomcat. Así las cosas, digamos que la website de Oracle incluye una lista de opciones, al tiempo que contiene las instrucciones para configurar JMX Remote en Java:

http://docs.oracle.com/javase/6/docs/technotes/guides/management/agent.html

Breve guía de configuración rápida para Java 6: los parámetros que vamos a enseñar a continuación, deben ser agregados al setenv.batscript del respectivo Tomcat, pero, quienes pretendan obtener más detalles, podrán recurrir a RUNNING.txt.

Esta sintaxis es apta para Microsoft Windows, al tiempo que es preciso que tengamos en cuenta que el comando debe estar en la misma línea. Y, en caso de que Tomcat se esté ejecutando como un servicio de Windows, debemos usar su diálogo de configuración, con el fin de establecer las opciones de Java para el servicio. Para deshacer * xes eliminar “ set “ desde el comienzo de la línea. Veamos, entonces:

Set CATALINA_OPTS=-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=%my.jmx.port%
-Dcom.sun.management.jmxremote.ssl=false
-Docm.sun.management.jmxremote.authenticate=false

Para el caso en que necesitemos autorización, hacemos los siguientes cambios:

-Dcom.sun.management.jmxremote.authenticate=true
-Dcom.sun.management.jmxremote.password.file=../conf/jmx/remote.password
-Dcom.sun.management.jmxremote.access.file=..conf/jmxremote.access

Posteriormente, editamos el archivo de autorización de acceso $ CATALINA_BASE/conf/jmxremote.acces, así:

monitorRole readonly
controlRole redwrite

Luego, editamos el archivo de contraseña $ CATALINA_BASE/conf/jmxremote.password, así:

monitorRole tomcat
controlRole tomcat

Sugerencia importante: el archivo de la contraseña deber ser de sólo lectura, al tiempo que únicamente debe ser accesible por parte del usuario del sistema operativo, en el que se está ejecutando Tomcat. Además, el JSR 160 JMX-Adapter abre un segundo canal de datos, en un puerto aleatorio. En caso de que tengamos un firewall local instalado, podría significar un inconveniente. Sin embargo, en Pandora sugerimos la configuración JmxRemoteLifecycleListener , para solucionarlo.
Ahora, desde Monitoring and Managing Tomcat también es posible recurrir a:

  • Administrar Tomcat con tareas de Ant remotas de JMX
  • JMXAccessorOpenTask, como tarea de conexión abierta de JMX
  • JMXAccessorGetTask, para obtener el valor de atributo tarea Ant
  • JMXAccessorSetTask, para establecer el valor del atributo tarea Ant
  • JMXAccessorInvokeTask, para Invoke MBean operation Ant task
  • JMXAccessorQueryTask, para query MBean Ant task
  • JMXAccessorCreateTask, para remote create MBean Ant
  • JMXAccessorUnregisterTask, para la eliminación remota del registro de la tarea MBean Ant
  • JMXAccessorCondition, para efectos de condición expresa
  • JMXAccessorEqualsCondition, que es igual a la condición de MBean Ant
  • También es posible usar JMXProxyServlet

Importante: cada una de las modalidades de JMX que acabamos de enlistar, cuenta con su propia lista de atributos y con ciertas advertencias que debemos tener en cuenta.

2.2. Monitorizar Tomcat mediante JavaMelody

Es la otra herramienta de monitorización que proponemos desde Pandora FMS. En lo que respecta, específicamente, a la habilitación de la monitorización del rendimiento de Tomcat con JavaMelody y para el caso de que estemos utilizando Maven, basta con agregar la dependencia javamelody-core al pom.xml ,así:


net.bull.javamelody
javamelody-core
1.69.0

Después de haber visto la manera sencilla de habilitar el monitoreo para nuestra aplicación web, podemos acceder a las pantallas de monitoreo en /URL de monitoreo. Anotemos que JavaMelody cuenta con gráficas bastante útiles para mostrarnos la información que necesitamos sobre diferentes métricas o medidas de rendimiento, al tiempo que dispone también, de una manera de encontrar los valores de los beans Tomvat JMX. Debemos considerar que la mayoría de beans son específicos de JVM, pero no de la aplicación.

Debemos recordar que cuando hablábamos de las métricas o “áreas críticas” a supervisar. En lo que respecta, específicamente, al uso de memoria, es preciso tener en consideración que monitorizar la memoria utilizada y disponible, es útil para garantizarnos el correcto funcionamiento, pero también para propósitos estadísticos. Es así como, cuando el sistema ya no puede crear objetos nuevos, debido a la falta de memoria, la precitada JVM lanzará una excepción.

Sobre la recolección de basura, debemos saber que se trata del proceso mediante el cual son liberados objetos no utilizados, de cara a que la memoria se pueda liberar de nuevo. En caso de que el sistema gaste más del 98% del tiempo de CPU en la recolección de basura y, de paso, recupera menos del 2% del montón, la JVM lanzará un OutOfMemory con el mensaje: “excedió el límite superior del GC”, lo que es indicativo de una pérdida de memoria, por lo que deberíamos observar (y analizar) los valores que se aproximan a estos límites, e investigar el código.

Del uso de subprocesos, digamos que para encontrar el estado de los hilos en uso, el mismo Tomcat nos proporciona el MBean de ThreadPool. Además, los atributos currentThreadsBusy , currentThreadCount y maxThreads nos brindan información sobre el número de subprocesos que se encuentran ocupados actualmente (en tiempo real, por supuesto), además del número de subprocesos actualmente en el grupo de subprocesos y del número máximo de subprocesos que podremos crear. Debemos tener en cuenta que Tomcat usa el número maxThreads de 200, de manera predeterminada.

El rendimiento de solicitud y tiempo de respuesta, las conexiones de bases de datos y las tasas de error, son las otras métricas que se deben tener en cuenta, al momento de monitorizar Tomcat. De todas maneras, sugerimos a los lectores analizar otros aspectos sobre esta monitorización, en este detallado documento de Pandora FMS.

Rodrigo Giraldo, redactor técnico freelance. Abogado y estudiante de astrobiología, le apasiona la informática, la lectura y la investigación científica.

Bases de datosComunidadMonitorizaciónMonitorizacion de Servidores

Algunas herramientas para monitorizar eficientemente SQL Server

noviembre 30, 2017 — by Rodrigo Giraldo Valencia6

monitorizar-SQL-Server-featured.png

monitorizar SQL Server

Monitorizar SQL Server de manera rápida y eficiente

¿Qué significa SQL? Esta es la primera pregunta que nos debemos formular antes de comenzar a desarrollar el tema de su monitorización, mediante un orden lógico. Pues bien, SQL significa “Structured Query Language” o, bien, “Lenguaje de Consultas Estructuradas” que, dicho sea de paso, es un lenguaje de programación estándar e interactivo para la consecución o actualización de información desde una base de datos.

Si bien es cierto que SQL es al mismo tiempo, un ANSI y una norma ISO, también es verdad que son muchos los productos de bases de datos que soportan SQL con extensiones propietarias al lenguaje estándar. Así las consultas adoptan el formato de un lenguaje de comandos que permite seleccionar para, luego, insertar, actualizar y averiguar la ubicación de los datos, además de otras cosas que veremos más adelante.

Con base en lo que acabamos de esgrimir, surge otro interrogante ineludible: ¿qué significa, entonces, SQL Server? No es más, ni es menos, que un sistema de gestión de bases de datos relacionales o “RDBMS” de Microsoft, que se encuentra diseñado para el ámbito empresarial. De otro lado, anotemos que SQL se ejecuta en T-SQL o, si se prefiere, en Transact-SQL, que es un conjunto de extensiones de programación de Microsoft y de Sybase, qué tiene que ver con el control de transacciones, con excepción/manejo de errores, con variables declaradas y con el procesamiento fila.

Sobre el Sistema de Gestión de Bases de Datos Relacionales o “RDBMS”, digamos que es un programa que nos permite crear, actualizar y administrar una base de datos relacional, al tiempo que la mayoría de los RDBMS comerciales hacen uso de un lenguaje de consultas estructuradas que, como ya lo hemos advertido, es lo mismo que SQL. Y utilizan dicho lenguaje, para acceder a la base de datos respectiva. Lo anterior, no obstante que SQL fue creado o inventado después del desarrollo del modelo relacional, por lo que no es necesario su uso.

De otro lado, digamos que los productos más importantes RDBMS son DB2 (de IBM), Oracle y, por supuesto, Microsoft SQL S. Si tenemos en consideración los desafíos propuestos por las tecnologías de la competencia y, además, las recurrentes manifestaciones de algunos expertos, en el sentido de que ninguno de los RDBMS de la actualidad ha aplicado, a plenitud, los principios relacionales, de todas formas la mayoría de las nuevas bases de datos empresariales continúan siendo creadas y gestionadas con un RDBMS.

Herramientas gratuitas de SQL Server que nos facilitan la vida

Antes de cualquier consideración, debemos recordar que, de acuerdo con el título de la presente publicación, que hace alusión a “Open”, nos estamos refiriendo a softwares de monitorización de código abierto. Ello significa que se trata de programas desarrollados y distribuidos libremente. Entonces, los softwares a los que haremos alusión son (dos de ellos) de pago, pero con versiones gratuitas como lo veremos en cada uno de ellos.

1. Complementos de SQL S. Management Studio o “SSMS” (100 % gratuito)

SQL S. Management Studio o “SSMS” es un entorno integrado, que sirve para administrar cualquier infraestructura SQL, al tiempo que se puede (y se debe) utilizar para acceder, configurar, para administrar y desarrollar todos los componentes de SQL S., de SQL Data Warehouse y de Azure SQL Database. Además, el SSMS brinda una única utilidad que es integral y que, además, combina un grupo extenso de herramientas gráficas con variados editores de script, con el fin de proporcionarnos el acceso a SQL S. a los administradores de bases de datos de todos los niveles y, también, a los desarrolladores.

monitorizar SQL Server

Fuente: quackit

Para hacer uso de esta herramienta de monitorización, es preciso descargar SQL S. Management Studio o “SSMS” para, luego, proceder a descargar SQL S. 2016 Developer y, por último descargar Virtual Studio. En lo que respecta, esta vez, a los componentes de SQL S. Management Studio, tenemos:

  • El explorador de objetos
  • El explorador de plantillas
  • El explorador de la solución
  • Y las herramientas de base de datos visual

En lo que respecta al explorador de objetos, digamos que se debe usar para ver y, de paso, administrar todos los objetos en una, o más, instancias de SQL S., al tiempo que Template Explorer o Explorador de Plantillas se utiliza para compilar y administrar archivos de texto repetitivo, que se pueden usar con el fin de acelerar el desarrollo de consultas y scripts. Sobre el Explorador de la Soluciones en desuso, se puede decir que se usa para crear proyectos utilizados para “administrar elementos de administración”, como es el caso de los scripts y las consultas.
Sobre la manera de utilizar las herramientas de diseño visual (incluidas en Management Studio), digamos que, también denominadas “Herramientas de Base de Datos Visual”, SQL S. Management Studio, incluye diseñadores visuales con la finalidad de crear consultas, bases de datos de diagramación de Transact-SQL, y tablas. Entonces, para empezar con las herramientas de Visual Database, es preciso hacer uso de:

  • Las herramientas de diagrama de base de datos
  • Las herramientas de diseño de mesa visual
  • El diseñador de consultas visuales
  • Las herramientas de diseño visual incluidas, y
  • El editor de lenguaje de (Management Studio), para compilar y depurar consultas y scripts, de forma interactiva.

1.1. Tutorial detallado de SQL Server Management Studio

Este tutorial aplica para SQL S., para Base de Datos SQL Azure, para Almacén de Datos SQL Azure y para el Almacén de Datos Paralelos. Así, tenemos que SQL S. Management Studio, ofrece una interfaz gráfica que sirve para configurar, supervisar y administrar instancias de SQL S., a la vez que proporciona, también, editores de lenguaje Transact-SQL, DMX, MDX y XML, para editar y depurar scripts.

Vamos a aprender, entonces, acerca de la presentación de información en SSMS y sobre cómo sacar el máximo provecho de sus específicas características. Así las cosas, anotemos que la mejor manera de familiarizarse con el SSMS, es mediante la práctica. Por lo tanto, veremos cómo podremos administrar los componentes de SSMS y, también, cómo encontrar las funciones que usualmente ofrece.
En primer término, es necesario que tengamos instalado:

  • La última versión de SQL Server Management Studio (SSMS).
  • SQL S. 2016 o, bien, una versión posterior con la base de datos como ejemplo.
  • Es preciso tener instalado, además, AdventureWorks mediante AdventureWorks2014 (OLTP). También es posible instalar AdventureWorksDW2014 (Data Warehouse).

De las descargas e instalaciones que acabamos de mencionar, sólo AdventureWorks2014 (OLTP) merece una explicación adicional. Así, vemos que esta versión contiene las copias de seguridad de bases de datos completas, además de proyectos para AdventureWorks2014, y scripts. Anotemos, además, que se utilizan con SQL S. 2014 y con versiones posteriores, por lo que plasmaremos indicaciones absolutamente vigentes.

Algunas aclaraciones:

  • Las bases de datos de muestra de AdventureWorks2014 se constituyen en una actualización de las versiones de 2012.
  • Las bases de datos de muestra de AdventureWorks2014 funcionan, también, en versiones posteriores. No obstante, no se llevaron a cabo actualizaciones específicas para admitir características nuevas en dichas versiones.

Sobre las descargas de AdventureWorks2014 (OLTP), tenemos:

2. Paessler (una compañía tradicional de monitorización) nos ofrece lo siguiente:

Paessler nos ofrece un excelente software de supervisión de SQL, siendo una herramienta bastante completa para supervisar bases de datos. Es de lo más útil, tratándose de Microsoft SQL, Oracle SQL, MySQL, PostgreSQL, al tiempo que nos brinda la oportunidad de reducir el tiempo de inactividad, optimizar el rendimiento y hacer consultas SQL importantes, de un solo vistazo. Además, no se requiere de software adicional alguno, por lo que basta con tener un PC con Windows o con VM. Después de la instalación del programa, éste escanea la red y el “Auto-Discovery” crea, de manera automática, todos los sensores que se necesitan para la monitorización de la red misma.

Es preciso, eso sí, que sepamos que existen dos versiones, dado que en la presente publicación estamos haciendo alusión a herramientas de código abierto de monitorización. Así las cosas, tenemos que existe la versión de “Descarga Prueba Gratis, sin límites por 30 días” pero, también, podemos disponer de la “(Descarga Freeware)” que, además de ser siempre gratuita, nos ofrece 100 sensores, que es un número más que suficiente, la mayoría de las veces. Adicionalmente, anotemos que este software de Paessler sirve para todas las versiones de Windows.

monitorizar SQL Server

Fuente: PRTG MANUAL: WMI MICROSOFT SQL SERVER 2012 SENSOR

Además, digamos que podemos obtener las gráficas de monitoreo de manera gratuita, al tiempo que podemos monitorizar la red móvil, gracias a sus apps para los smartphones y las tablets, lo que significa una comodidad extra. Así las cosas, podemos recibir todas las informaciones de nuestra red, en nuestros dispositivos móviles, permitiéndose Android, iOS y Windows Phone.

3. Administración y monitorización de SQL Server, mediante Applications Manager

La función de supervisión de SQL S. de Applications Manager, les ayuda a los administradores de bases de datos a monitorizar el rendimiento y, también, la disponibilidad de las bases de datos de producción. Se trata, entonces, de una solución de monitorización sin agentes de ningún tipo, que nos brinda métricas de rendimiento que están a la orden del día para ser utilizadas, asegurando que el servidor SQL sea ejecutado de manera eficiente.
(Applications Manager) proporciona un cliente web que, de paso, le permite visualizar y administrar granjas de bases de datos de servidores MSSQL, al tiempo que brinda datos profundos de monitorización SQL, lo que sirve para monitorear patrones de uso, para notificar inconvenientes inminentes, además de que sirve para planificar capacidad. Entonces, la ventana de análisis de causa raíz le ayuda al DBA de SQL S. a solucionar, de manera muy rápida, los inconvenientes de rendimiento.
Adicionalmente, la capacidad de agrupación nos ayuda a agrupar sus bases de datos en función del proceso comercial compatible, al tiempo que le ayuda al equipo dedicado a las operaciones a la priorización de las respectivas alarmas. La supervisión del servidor SQL es capaz de conectarse al origen de la base de datos y, al mismo tiempo, de monitorizar variados valores de columna de la tabla del sistema. También, es capaz de recopilar datos y de notificar en caso de que las propiedades del sistema de base de datos lleguen a sobrepasar un umbral determinado. Todo esto, mediante un correo electrónico o SMS.
Veamos, ahora, algunos de los componentes más importantes que se monitorizan en bases de datos MSSQL:

  • Estadísticas de conexión.
  • Estadísticas de Buffer Manager.
  • Uso de memoria.
  • Detalles de bloqueo.
  • Detalles de caché.
  • Detalles de cierre.
  • Detalles de la base.
  • Detalles del método de acceso.
  • Estadísticas de SQL.
  • Trabajos programados.

Concluyendo el análisis de Applications Manager, anotemos que, en buena medida, su distribución es libre (gratuita) para empresas, en tanto que en su website podemos leer: “Durante la instalación, puede elegir Edición professional o Enterprise. Una vez que finalice la prueba gratuita de 30 días, su instalación se convertirá automáticamente a la edición gratuita, a menos que solicite una licencia comercial”.
Además, está disponible para Windows, para Linux y en un gran número de países. Llegados a este punto, puedes visitar la librería de Pandora FMS, donde podrás encontrar valiosa información complementaria a la que hemos suministrado.

Rodrigo Giraldo, redactor técnico freelance. Abogado y estudiante de astrobiología, le apasiona la informática, la lectura y la investigación científica.

Bases de datosComunidadFuncionalidadesMonitorización

¿Qué son las Bases de datos? ¿Qué debemos tener en cuenta a la hora de escoger una?

noviembre 23, 2017 — by Jose Diaz6

que-son-las-bases-de-datos-featured.png

que son las bases de datos

¿Que son las Bases de datos? Factores a la hora de escoger una

En nuestro día a día las bases de datos juegan un papel mucho más importante de lo que pensamos. Podemos pasar por diferentes establecimientos y negocios, sin pararnos a pensar que si no fuera por las bases de datos, sería muy complicado realizar tareas tan sencillas como comprobar si el pantalón que buscamos en nuestra tienda de ropa habitual está disponible en nuestra talla.
En primer lugar, antes de introducirnos en tecnicismos que acabarían por aburrir al lector, vamos a empezar por los conceptos más básicos e ir desgranando poco a poco que son las bases de datos, para continuar por descubrir que debemos tener en cuenta a la hora de escoger una.

Si echamos la vista atrás, encontraremos ejemplos de bases de datos al uso, en numerosos lugares de tiempos remotos. El origen de las bases de datos se remonta a la Antigüedad, donde ya se habían construido bibliotecas y toda clase de registros. También se utilizaban para compilar información sobre censos y cosechas. A pesar de ello, su búsqueda era lenta y poco eficaz y no se contaba con la ayuda de maquinaria que pudiesen sustituir el trabajo manual. Mucho más tarde, atendiendo a las necesidades cada vez mayores de almacenar información útil, comenzamos a usar las computadoras para este fin.

Las bases de datos constituyen una parte fundamental de los sistemas de información en las que están integrados. El estado actual de la tecnología de bases de datos en el mundo, es el resultado de la evolución que a lo largo de décadas ha tenido lugar en el procesamiento de los datos y en la gestión de información. Esta tecnología se ha ido desarrollando a lo largo del tiempo desde los métodos más primitivos de los años cincuenta, hasta los potentes sistemas de hoy en día, empujada por un lado por la demanda y las necesidades de las gestión de la información y restringida por las limitaciones de la tecnología del momento.

Los primeros sistemas de procesamiento de datos resolvían principalmente tareas administrativas para reducir el papeleo. Estos sistemas fueron evolucionando hacia la gestión y la producción de información, que se ha convertido en un recurso de vital importancia para las compañías de hoy en día. En la actualidad, la función más importante de los sistemas de bases de datos es servir de fundamento a los sistemas de información para la gestión corporativa.

que son las bases de datos
Las cualidades que hacen que la información sea un recurso fundamental para las organizaciones y usuarios individuales son:

  • La Precisión
  • La Oportunidad
  • La Seguridad
  • La Compleción (ha de ser completa)
  • El Significado
  • La Coherencia

¿Que son las bases de datos, entonces?

Para seguir con nuestro camino y responder a la pregunta ¿que son las bases de datos? Hagamos un repaso a sus utilidades y funciones. Muchas se deducen por la lógica, pero seguro que no conoces algunas de ellas.

Toda organización necesita para su correcto funcionamiento un conjunto de informaciones que han de transmitirse entre las diferentes partes que la componen (elementos), así como desde y hacia el exterior de la propia organización.

Los sistemas tradicionales, eran de ficheros y estaban orientados hacia el proceso. Las aplicaciones se diseñaban e implantaban independientemente, lo que provocaba que los datos se duplicaran. Hoy en día existe una transferencia entre dichas aplicaciones para evitar este error de redundancia.

La información contenida en una base de datos está integrada, porque puede considerarse como una unificación de varios archivos de datos de los que hemos eliminado la redundancia ; y compartida, porque los programas que ante accedían a los archivos individuales acceden ahora al depósito común de datos, por lo que cada usuario y aplicación tendrá acceso a un conjunto de datos.

Algunos de los modelos más comunes de bases de datos, dependiendo de la función y la información que la compone son: jerárquicas, de red, transaccionales, relacionales, multidimensionales, orientadas a objetos, documentales o deductivas.

Ahora sí, después de estas aclaraciones y conceptos básicos, podemos dar una definición técnica de lo que es una Base de datos:

“Una Base de Datos es un conjunto exhaustivo, no redundante de datos estructurados, organizados independientemente de su utilización y su implementación en máquina , accesibles a tiempo real y compatibles por usuarios concurrentes que tienen necesidad de información diferente y no predecible en el tiempo”. Flory,1982.

Ventajas en el uso de Bases de datos:

  • Los datos pueden compartirse
  • Pueden hacerse cumplir las normas establecidas
  • Restricciones de seguridad
  • Reducción de la redundancia
  • Puede evitarse la inconsistencia

Inconvenientes por el uso de las bases de datos:

  • Instalación costosa
  • Personal especializado necesario
  • Implantación larga y difícil
  • Escasa estandarización
  • Falta de rentabilidad a corto plazo
  • Desfase entre teoría y práctica

¿Qué tener en cuenta a la hora de elegir un Sistema Gestor de Bases de Datos?

que son las bases de datos

Al igual que en el anterior punto de este artículo, vamos a comenzar por aclarar los conceptos más básicos para contestar a esta pregunta y así facilitar mucho más la comprensión y la posterior decisión a la hora de elegir un SGBD.

Con toda probabilidad habréis escuchado el nombre de alguno de los famosos sistemas gestores de bases de datos sin saberlo, ya que llevan con nosotros bastantes años facilitando las labores de las empresas de nuestro entorno, y se han vuelto completamente imprescindibles.

Empecemos por la definición de Sistema Gestor de Bases de Datos. Comprendería una serie de programas en conjunto, que permiten la modificación, almacenaje y extracción de toda aquella información que tenemos en una base de datos. No solo lleva a cabo estas tareas sino que además proporciona herramientas para añadir, borrar, modificar y analizar el dato o datos que queramos.

El usuario tiene la posibilidad de acceder a la información haciendo uso de las herramientas concretas de consulta y de generación de informes, así como haciendo uso de las aplicaciones a ese efecto. Por lo general se accede a los datos que componen la base de datos mediante los llamados lenguajes de consulta, que son lenguajes de alto nivel cuya función es simplificar la costosa tarea de desarrollar una aplicación.

Los SGBD nos brindan métodos para mantener la integridad de los datos, realizar una administración del acceso de los usuarios a dichos datos y tener la posibilidad de recuperar la información. Ahora podemos tratar de abordar esta pregunta, ¿cuál de todos los los Sistemas de Gestión de Bases de datos elijo?

Tenemos un abanico muy grande para elegir entre uno de todos los SGBD disponibles en el mercado. En este artículo, dando una opinión personal, únicamente voy a elegir uno entre todos los disponibles. No significa que el resto no cumplan correctamente su función, sino que posee una serie de características que hacen que me decante por este en concreto. Si quieres ver una lista de las mejores bases de datos de 2017 puedes hacer click en este enlace.

que son las bases de datos
El que he elegido el día de hoy es: MySQL. Uno de los factores por los que obtuvo más popularidad es porque es open source, y por lo extendido de su uso en las aplicaciones web.

Vamos a hacer un pequeño repaso de sus características y funciones:

  • MySQL es multiplataforma al contrario de otros SGBD.
  • El motor de almacenamiento predeterminado a partir de versión 5.5 es InnoDB, cuya característica principal es que soporta transacciones y bloqueo de registros.
  • Soporta múltiples motores de almacenamiento .
  • Bajo coste. La versión Community es de software libre bajo la licencia GNU. Su versión comercial es bastante económica.
  • Debido a su simplicidad tiene un rendimiento muy alto.
  • Herramienta Workbench

Merece una mención aparte esta importante herramienta incluida dentro de MySQL. Se trata de una aplicación de entorno visual que nos permite el diseño de bases de datos, ejecución y administración de consultas SQL. Nos facilita sustancialmente la creación de nuevos sistemas relacionales y edición de bases de datos ya creadas.

que son las bases de datos
Para resumir un poco todo lo dicho, MySQL nos ofrece un alto rendimiento, velocidad y flexibilidad, a la par que herramientas completas de administración tanto de registros, usuarios, como de conexiones. Posee una gran estabilidad y seguridad a la hora de enfrentar nuestros proyectos, con profesionalidad y potencia en su uso.

Hasta aquí este pequeño viaje. Hemos repasado por encima los orígenes de las bases de datos hasta encaminarnos hacia puntos más específicos con el fin de que podáis elijáis con buen criterio vuestras futuras herramientas de base de datos. Espero haberos podido aclarar las dudas que tuvierais antes de leer el artículo. Os animo a que os paséis por el blog para continuar ampliando vuestros conocimientos y que nunca dejéis de aprender nuevos conceptos.

Quisiera expresar mi agradecimiento a José Manuel Prieto Gordo, profesor de Gestión de Bases de Datos del centro Salesianos Atocha, por enseñarme en sus clases todos estos conceptos.

Bases de datosComunidadFrikiMonitoringMonitorización

Monitorizar Hadoop (Open)

noviembre 20, 2017 — by Rodrigo Giraldo Valencia0

monitorizar-hadoop-featured.png

monitorizar hadoop

Monitorizar hadoop en código abierto ya es posible con este tutorial

Antes de entender cómo se debe monitorizar Hadoop (dentro del ámbito del código abierto), es preciso hacer una brevísima exposición de lo que es Hadoop, para ver que tiene una íntima relación con Big Data y además, de como manejar las enormes cantidades de datos. Para comenzar, digamos que los inconvenientes radican no solamente en la cantidad sino, también, en la heterogeneidad de los datos. En otras palabras y para ser más explícitos, es preciso tener en consideración que los problemas se presentan por la cantidad, con heterogeneidad.

A propósito de la heterogeneidad de los grandes datos, debemos tener en cuenta que hay tres tipos: La estructurada, semi-estructurada y la no estructurada. Anotemos que el sistema HDFS (Sistema Gestor de Bases de Datos Relacionales) se basa en datos estructurados, como en el sensible caso de las transacciones bancarias y de los datos operacionales, entre otros. Entonces, Hadoop se centra (y se especializa) en datos semi-estructurados y en los que son estructurados como texto, publicaciones de Facebook, audios, videos, registros y demás.

Por otro lado, anotemos que la tecnología del sistema Hadoop se ha desarrollado y se encuentra en un interesante nivel de demanda gracias a Big Data que, en su mayor parte, consiste en datos no estructurados y en diferentes formatos. Ahora, el principal problema consiste en el almacenamiento de colosales cantidades de datos, en vista de que no es posible almacenarlos en su sistema tradicional.

El segundo problema consiste en que el almacenamiento de datos heterogéneos es complejo. El almacenamiento es sólo una parte de un problema, ya que la cantidad de los datos no sólo es enorme sino que, también, se le encuentra en variados formatos. En tal virtud, es necesario el que nos cercioremos de que contamos con un sistema para almacenar esta heterogeneidad de datos, que se generan desde diversas fuentes.

El tercer problema a analizar, se trata del acceso y la velocidad de procesamiento. La capacidad de los discos duros está aumentando incuestionablemente, aunque la velocidad de transferencia de los mismos y la velocidad de acceso, no están aumentando con la misma rapidez. Veamos un ejemplo ilustrativo:

En caso de que sólo contemos con un canal de E/S de 100mbps y que, además, se encuentre procesando 1 TB de datos, el proceso mismo podría tardar casi tres horas (2,90 horas). Si contamos con unas cuatro máquinas, con cuatro canales de E/S para la misma cantidad de datos, esto es, 1 TB, el proceso “sólo” tardará unos 43 minutos, en este caso. Mediante la presentación de este simple (pero ilustrativo) ejemplo, nos damos cuenta, de inmediato, la importancia que implica saber cómo monitorizar Hadoop.

Para entrar en materia, comencemos por decir que existen muchas herramientas para analizar y optimizar el rendimiento de un clúster de Hadoop, tanto de código abierto, gratuito (pero de código cerrado), como de tipo comercial. Ahora, para los efectos que nos interesan particularmente, haremos alusión a las herramientas de código abierto. Resulta que cada componente de Hadoop (cuando se trata de código abierto, reiteramos) viene empaquetado con su respectiva interfaz administrativa que, justo es decirlo, puede utilizarse para recopilar métricas de rendimiento de todo el clúster.

Sin embargo y desafortunadamente, añadir dichas métricas para la correlación de fuentes múltiples y dispares, es ya de por sí un reto en sí mismo considerado. Pero, usted mismo puede hacerlo, mediante una guía que le presentaremos con la mayor claridad posible. Se trata, para más señas, de una guía para recopilar métricas de rendimiento de HDFS, YARN y de MapReduce, haciendo uso de las API HTTP expuestas para cada tecnología. Aclaremos, de paso, que una gran oferta de código abierto para la gestión de Hadoop y análisis de rendimiento, es el Proyecto Apache Ambari, que les brinda a los usuarios una interfaz gráfica que se encuentra bastante bien diseñada para la gestión de clústeres.

En otras palabras, digamos que en una sola interfaz, puede proporcionar, administrar y supervisar clústeres de miles de máquinas. Así las cosas, podemos anotar (sin temor a equivocaciones, ni a necias exageraciones) que se trata de una excelente herramienta para trabajar y, de paso, para monitorizar Hadoop. Veamos, entonces, cómo es que podemos recopilar métricas de Hadoop, para destacar, inicialmente, que nos enfocaremos en la monitorización de la “salud” y del desempeño de Hadoop, que brinda una amplia y variada gama de métricas sobre el rendimiento de la ejecución de trabajos, la salud y la utilización de recursos.

Durante la presente exposición, le diremos al lector cómo es que deberá recopilar métricas de los componentes más importantes de Hadoop, como es el caso de HDFS, YARN y MapReduce pero, eso sí, utilizando herramientas de desarrollo estándar, además de otras herramientas especializadas como Cloudera Manager y Apache Ambari.

La recopilación de métricas HDFS

HDFS emite métricas de dos fuentes
Los DataNodes y el Name Node que, en su mayor parte, cada una de estas dos métricas debe ser recogida en sus respectivos puntos de origen. Las dos fuentes anteriores emiten métricas mediante una interfaz HTTP y, también, a través de JMX. Así las cosas, nos enfocaremos en los siguientes tres temas, sin desentendernos de otros que también desarrollaremos en menor medida:

  • Recopilación de métricas de NameNode a través de API.
  • Recopilación de métricas de DataNode a través de API.
  • Recopilación de métricas HDFS a través de JMX.

API de HTTP de NameNode

Resulta que NameNode brinda un resumen de las métricas de rendimiento y salud, mediante una interfaz de usuario web. Esa interfaz de usuario es accesible a través del puerto 50070, por lo que debemos apuntar un navegador web a: http://namenodehost:50070

Si bien es cierto que es aconsejable y cómodo disponer de un resumen, es posible que algunos (o muchos) lectores pretendan profundizar en algunas otras métricas, por lo que les sugerimos que, para apreciarlas todas, apunten su navegador a htpp://namenodehost:50070/jmx

Así si utilizamos la API o, bien, JMX, luego podremos encontrar una especie de “segunda parte” en MBean Hadoop:name=NameNode. VolumeFailtures Total.

En lo que respecta, esta vez, a NumDeadDataNodes, a NumLiveDataNodes, a NumLiveDecomDataNodes y a NumStaleDataNodes, tenemos que se pueden encontrar bajo el MBean Hadoop:name=FSNamesystemState,service=NameNode.

API HTTP de DataNode

Una visión general de la integridad de sus DataNodes, se encuentra disponible y a entera disposición de los usuarios en el panel de NameNode, bajo la pestaña denominada “Datanodes” (http://localhost:50070/dfshealth.html#tab-datanode). Sin embargo, con el fin de conseguir una vista mucho más detallada de un DataNode individual, es posible acceder a sus métricas mediante el DataNode API.

Ahora, para conseguir una vista y una visión más detallada de un DataNode individual, podremos acceder a nuestras métricas a través de DataNode API. De una manera predeterminada, DataNodes expone absolutamente todas sus métricas en el puerto 50075, a través de jmx. No parece, en un principio, muy ortodoxa la manera en que acabamos de escribir este apartado sobre JMX, pero es necesario hacerlo de cara a que el lector tenga una claridad absoluta y, de paso, para que nadie se equivoque. Por ejemplo en el caso de colocar jmx., la situación podría dar lugar a malos entendidos. Como bien nos dicen en Pandora FMS, “… un sistema de monitorización debe ser simple y sin embargo eficaz”.

Por otro lado, aclaremos que el hecho de golpear este punto extremo en su DataNode con su navegador o curl, nos proporciona todas las métricas en esta especie de segunda parte de esta serie. Veamos a continuación, lo referente a las métricas NameNode y DataNode a través de JMX, para ir completando la serie y, muy importante, de cara a seguir exponiendo el tema mediante una secuencia lógica de conceptos.

Métricas NameNode y DataNode mediante (o “a través de”) JMX

De la misma manera en que lo hace Kafka, Cassandra y otros sistemas fundamentados en Java, también exponen métricas mediante JMX, tanto en DataNode como en NameNode. Entonces, las interfaces de agente remoto de JMX, se encuentran desactivadas de forma predeterminada. Debido a esto, es preciso habilitarlas, estableciendo las siguientes opciones de JVM en hadoop-env.sh que, normalmente, son encontradas en $HADOOP_HOME/conf . Otra aclaración ortográfica, la debemos plantear en este apartado de la exposición: obsérvese que el “punto seguido” anterior fue ubicado separadamente de la palabra “conf”. Veamos, ahora sí:

export HADOOP_NAMENODE_OPTS="-Dcom.sun.management.jmxremote

Dcom.sun.management.jmxremote.password.file=$HADOOP_HOME/conf/jmxremote.password-Dcom.sun.management.jmxremote.ssl=false
Dcom.sun.management.jmxremote.port=8004 $HADOOP_NAMENODE_OPTS"

export HADOOP_DATANODE_OPTS="-Dcom.sun.management.jmxremote
Dcom.sun.management.jmxremote.password.file=$HADOOP_HOME/conf/jmxremote.password
Dcom.sun.management.jmxremote.ssl=false
Dcom.sun.management.jmxremote.port=8008 $HADOOP_DATANODE_OPTS"

La anterior configuración, obtenida de https://goo.gl/D9DAeK, va a abrir el puerto 8008 (en el DataNode) y el 8004 (en el NameNode). En ambos casos con la autenticación de la contraseña activada. A este respecto, sugerimos a los lectores consultar cómo configurar un entorno de usuario único, con la finalidad de contar con más información respecto de la manera de configurar el agente remoto JMX. Continuando con una secuencia lógica de la explicación, digamos que, una vez que se encuentre activada la contraseña, ya nos podremos conectar, mediante cualquier consola JMX como pueden ser, por ejemplo, JConsole o Jmxterm. La siguiente, es sólo un principio de conexión Jmxterm con el NameNode, teniendo en cuenta que existe una primera lista de MBeans disponibles y, luego, la perforación en el Hadoop:name=FSName,system,service=NameNodeMBean.

La recolección de contadores MapReduce

Los contadores MapReduce: nos brindan información respecto de la ejecución de la tarea, precisamente, como el tiempo de CPU y, también, la memoria utilizada. Se deben descargar en la respectiva consola, al invocar trabajos de Hadoop desde la línea de comandos. Lo anterior, es ideal para efectos de la comprobación de puntos, a medida que se van ejecutando los trabajos. Eso sí: un análisis más detallado requiere de contadores de supervisión, a lo largo del tiempo.

El ReduceManager, a su vez, también expone todo los contadores de MapReduce para cada uno de los puestos de trabajo. Entonces, para poder acceder a los contadores de MapReduce en nuestro ResourceManager, debemos navegar, primero, a la interfaz web de ResourceManager en htpp://resourcemanagerhost:80008 . Luego, podremos encontrar la aplicación que nos interesa para, luego, hacer clic en “Historial” que es una pestaña ubicada en la columna denominada “Seguimiento de la interfaz de usuario”.
Debemos encontrar la aplicación que nos interesa y hacer clic en “Historial”, en la columna “Seguimiento de la Interfaz de Usuario”. De cara a una mayor claridad, veamos una interesante imagen que nos podrá brindar mejores luces aún:

monitorizar hadoop

A continuación, esto es, en la página siguiente, debemos hacer clic en “Contadores”, que se encuentra en el menú de navegación de la izquierda, como lo podemos apreciar en la imagen siguiente que, al igual que la anterior, podrá ser agrandada por el lector.

monitorizar hadoop

Por último (sólo de momento), debemos ver todos los contadores recopilados y asociados con el trabajo que hemos hecho y estamos haciendo:

monitorizar hadoop

La recopilación de métricas Hadoop YARN

API HTTP y YANR

YARN expone, de forma predeterminada, todas sus métricas en el puerto 98088, mediante el jmx punto final. Al golpear este punto final de API, YARN nos brinda todas las métricas para monitorizar Hadoop, en la segunda parte de esta serie. Al igual de lo que sucede con HDFS, cuando consultamos el punto final de JMX, este puede especificar MBeans mediante el qry parámetro, como lo vemos a continuación:
$ curl resourcemanagerhost:8000/jmx?qry=java.lang:type=Memory
Si lo que pretendemos, es sólo conseguir las métricas de la segunda parte de la serie, podemos consultar también el ws/v1/cluster/metrics endpoint.

Las herramientas de terceros

Los métodos de recopilación nativa son útiles, en lo que respecta a la medición de la verificación puntual o, lo que es lo mismo, de un solo tajo. Sin embargo de lo anterior y con la finalidad de poder ver la imagen grande (que es lo adecuado y deseable), es necesario recopilar y añadir métricas en todos los sistemas, para efectos de establecer una necesaria correlación. Entonces, dos proyectos muy importantes, esto es, Cloudera Manager y Apache Ambari, nos brindan a los usuarios una plataforma unificada para efectos de la administración, la monitorización y de la gestión de Hadoop.

Estos dos proyectos nos proporcionan herramientas que nos sirven para la recopilación y visualización de métricas Hadoop y, también, algunas otras herramientas para efectuar tareas comunes de solución de problemas.

Apache Ambari
El objetivo de este proyecto, es el de facilitar la gestión de clústeres Hadoop mediante la creación de software, con el fin de lograr el aprovisionamiento, la gestión y, también, la supervisión de los clústeres Apache Hadoop. Se trata, indudablemente, de una excelente herramienta para administrar el clúster y, como ya lo anotamos, para su supervisión o monitorización. Veamos, a continuación, una instrucción para la instalación en varias plataformas, teniendo en consideración que, una vez instalado, debemos configurar Ambari con: ambari-server setup

Ahora, debemos tener en cuenta que Ambari instalará y, también, utilizará el paquete de base de datos PostgreSQL de manera predeterminada. Pero, si ya tenemos nuestro propio servidor de base de datos, nos podemos cerciorar (y asegurar) de introducir la configuración avanzada de la base de datos, cuando se nos solicite. Entonces, una vez se encuentre configurado, iniciamos el servidor con:service ambari-server start

De otro lado, para conectarnos al tablero de Ambari, debemos señalar nuestro navegador AmbariHost:8080 y proceder a ingresar con el usuario admin, de un lado, y la contraseña admin, de otra parte, ambos predeterminados. Una vez que estemos conectados, recibiremos una plantilla que es similar a la que veremos a continuación:

monitorizar hadoop

Veamos, entonces, y con base en la imagen anterior, cómo es que debemos proceder: para comenzar, seleccionamos “Iniciar Asistente de Instalación”. Luego, en la serie de pantallas que siguen, se les pedirá a los anfitriones las credenciales para conectarse a cada host del clúster. Luego, se les pedirá que configuren los parámetros específicos de la aplicación. A propósito de este tema de los parámetros de configuración, debemos tener en cuenta que los detalles de esta serán específicos de su propia implementación y de los servicios que se utilicen.

Una vez que todo esto se haya verificado, tendremos un panel de control detallado, que cuenta con información sobre el rendimiento y la salud en todo el clúster. Además, se nos informará sobre sobre la salud del mismo y acerca de los enlaces para que nos conectemos a la red de interfaces de usuario, para elementos específicos como NameNode y ResourceManager.

monitorizar hadoop

Cloudera Manager
Otra herramienta de terceros, es Cloudera Manager que es un método de administración de clústeres que se debe enviar como parte de la distribución comercial de Hadoop de Cloudera, pero que también se encuentra disponible como descarga gratuita. Para el caso de esta herramienta, tenemos que una vez que hayamos descargado e instalado los respectivos paquetes de instalación y que, además, hayamos configurado una base de datos para Cloudera Manager, debemos iniciar el servidor con:
service cloudera-scm-server start

Por último, si necesita más información, puede visitar la web de Pandora FMS, donde encontrará todo lo relacionado con la monitorización.

Rodrigo Giraldo, redactor técnico freelance. Abogado y estudiante de astrobiología, le apasiona la informática, la lectura y la investigación científica.

Bases de datosComunidad

8 errores en la copia de seguridad

octubre 12, 2017 — by Robin Izquierdo5

errores-en-la-copia-de-seguridad-featured.png

errores en la copia de seguridad

Errores en la copia de seguridad; algunos fallos habituales

Los fallos forman parte de la vida, son inevitables. Por ello, y para que los errores no se lleven por delante nuestro duro trabajo, los seres humanos hacemos uso del sentido de la previsión del que disfrutamos en nuestra condición de homo sapiens, y utilizamos herramientas como las copias de seguridad.

Las copias de seguridad son una costumbre arraigada en una gran cantidad de empresas alrededor de todo el planeta, hasta el punto de que se ha consagrado una fecha, el 31 de marzo, como Día Mundial del Backup (sí, efectivamente, esto existe, no nos lo estamos inventando).

Ahora bien, ni siquiera las copias de seguridad son 100% seguras. Cuando se realizan, a veces se cometen fallos que pueden dar al traste con nuestro esfuerzo. Los errores en la copia de seguridad pueden ser de diversos tipos (el Diablo se esconden donde menos te lo esperas…) aunque hay algunos más frecuentes que otros.

Los siguientes son ocho fallos habituales que se cometen cuando se realizan copias de seguridad.

No se realizan las suficientes copias.

Es un fallo bastante básico que obedece a una mala planificación. ¿Tienes una estrategia clara acerca de cuál es la periodicidad con la que debes hacer copias de seguridad? Cuando se elabora una política de copias de seguridad, hay que tener muy clara cuál es la frecuencia con la que deben llevarse a cabo. ¿De qué te sirve realizar una copia de seguridad cada 24 horas si por las características del negocio perder los datos de sólo 6 horas puede suponer un desastre irreparable? Piensa muy bien en lo que haces, o si no pronto podrías tener terribles dolores de cabeza…

Se acaba el espacio de almacenamiento.

Es una de las pesadillas de todo administrador de sistemas. Instala el software encargado de automatizar la tarea de realizar las copias de seguridad y se olvida de él. Meses después, y cuando es necesario recuperar la última copia porque se ha presentado algún problemas, descubre que la ultima no de hace 6 horas, como pensaba, sino de hace… ¡6 meses! ¿Qué ha pasado?, se pregunta mientras un escalofrío recorre su espina dorsal y piensa en imágenes de guillotinas y cabezas rodantes.

Pues ha pasado que el medio en el que se almacenaban las copias de seguridad ha llegado al máximo de su capacidad, por lo que desde hace 6 meses no se ha podido llevar a cabo ninguna copia exitosa. Muy, pero que muy mal rollo…

Las copias de seguridad se almacenan en un único lugar.

Cuando se trata de seguridad, hay que intentar pensar en todo tipo de imprevistos. Con mucha frecuencia, las copias de seguridad se guardan dentro de la empresa, por ejemplo en la sala de servidores. También con cierta frecuencia, estas salas suelen contar con medios especiales de seguridad (son, por ejemplo, ignífugas). Sin embargo, por muy bien que se prepare la seguridad de un estancia, múltiples desastres pueden ocurrir. Si no es el fuego -aunque la sala sea ignífuga, el fuego puede desatarse en su interior-, una inundación, un robo o incluso el sabotaje de algún empleado descontento, puede dar al traste con las copias y con los sistemas. Mejor no imaginar tan terrible escena….

Un virus o malware destruye todas las copias de seguridad.

Como bien sabréis, hay pequeños software corriendo por ahí que tienen muy mala idea. Si el dispositivo en el que se guardan las copias de seguridad está conectado de alguna forma (internet, LAN, etc.) es susceptible de ser contagiado en un ataque. ¡Menuda sorpresa sería descubrir que ese pequeño demonio no sólo ha infectado tu sistema, sino que ha destruido todas tus copias de seguridad!

No hay ningún plan para recuperar sus datos.

Casi tan malo como perder los datos de una copia de seguridad es tenerla y no saber qué hacer con ella. Si necesitas hacer uso de una copia de seguridad, es probable que sea porque tengas algún problema urgente, y recuerda que el tiempo es oro. Por eso, será imprescindible que cuentes con un plan capaz de hacer que las cosas vuelvan a la normalidad con la mayor rapidez y efectividad posible, para que tu negocio (y tus clientes) no se vean afectados o lo sean en la menor medida posible.

No se cumple con la legalidad.

Con frecuencia, las copias de seguridad albergan datos sensibles que deben ser estrictamente protegidos conforme a la ley. El incumplimiento de este tipo de normas puede acarrear graves consecuencias, así que no olvides consultar con los profesionales adecuados para que te asesoren sobre cómo cumplir con todas tus obligaciones legales.

No se comprueba si las copias de seguridad están en buen estado.

Vivimos en un mundo físico, lleno de átomos, moléculas y todo tipo de partículas incontrolables que pueden dañar nuestros preciados datos. Por bueno que sea tu sistema de copia de seguridad, pueden ocurrir errores, deterioros, etc. que den al traste con lo que tú pensabas que estaba siendo una estrategia de copia de seguridad impecable. E incluso el propio software de copia puede cometer errores. Realizar restauraciones de prueba puede evitarte más de un disgusto. Piensa en ello…

Las copias de seguridad no paran de moverse de un lado a otro.

Una cosa es almacenar copias de seguridad en más de un lugar, y otra tenerlas rondando por cualquier lado. Guardar datos importantes y sensibles en un USB y tenerlo guardado en el bolsillo de la chaqueta no es una buena idea; estás expuesto a perderlo en cualquier momento, con lo que ello conlleva. Cuidado también con otros medios, como discos duros portátiles, teléfonos móviles, etc. Todas las copias que tengas deberán estar guardadas en lugares seguros y no transportarse más de lo estrictamente necesario.

Estos son algunos de los problemas que pueden presentarse cuando se realizan copias de seguridad, pero hay muchos más. Como decíamos antes, el Diablo puede esconderse en los lugares más insospechados. Seguro que tú conoces algunos errores en la copia de seguridad que darían para guionizar las más espeluznantes películas de terror. ¿Te animas a compartir alguno? Puedes hacerlo dejando un mensaje en la caja de comentarios que se encuentra justo aquí debajo. ¡Muchas gracias!

Redactor técnico. Aunque su nombre indique lo contrario, Robin es de Madrid. Le encanta viajar, el cine y pensar y escribir sobre el futuro de la tecnología.

Bases de datosComunidad

Descubre qué es Percona y cómo va a conseguir que te olvides de MySQL

septiembre 11, 2017 — by Alexander La rosa0

que-es-percona-featured.png

herramientas itim

Que es Percona y por qué deberías olvidarte de MySQL para siempre

¿Qué es Percona?

Comencemos por el principio, ¿Qué es Percona? Percona Server comenzó siendo un fork de MySQL que prometía desde el inicio proporcionar una plataforma de mayor rendimiento y escalabilidad. Hoy en día Percona, es una organización que alrededor de Percona Server su producto principal, ofrece una importante cantidad de software libre, servicios de asesoría y servicio técnico.

Cuando pensamos en la instalación de Percona Server debemos necesariamente remontarnos a un viejo dilema: instalar el fork de un sistema o permanecer fieles al proyecto original.

Resolver este dilema, parte como es lógico por precisar que es Percona Server, cuál es la orientación del proyecto que lo acompaña y qué tiene para ofrecernos Percona como empresa.

A continuación presentamos una revisión que pretende aclarar estos puntos y apoyar la decisión de introducirnos en un proceso de migración a Percona y olvidarnos en definitiva de MySQL.

Compatibilidad total con MySQL

Desde sus orígenes Percona Server ha mantenido 100% de compatibilidad con MySQL, por lo que toda la funcionalidad de MySQL la encontraremos en Percona Server, esto asegura procesos de migración sin inconvenientes y que pueden ser asumidos de forma progresiva.

Percona como empresa, ha mantenido como estrategia equiparar su producto, no con la versión GPL (Licencia Pública General) de MySQL, sino con su versión comercial (Enterprise Edition). Por lo que apostando por Percona, conseguiremos las mismas ventajas por las cuales debemos pagar en MySQL en el gratuito Percona Server.

Así mismo, Percona mantiene como software libre las otras herramientas desarrolladas alrededor de su producto fundamental, tal como XtraDB Cluster y XtraDB Backup. De manera que si nos inclinamos por Percona Server y luego deseamos aumentar el tamaño de la base de datos y escalar toda nuestra plataforma a un nivel superior o decidimos emprender un proyecto de respaldos en caliente, tenemos la seguridad de que seguiremos en el mundo software libre.

Otro aspecto interesante es que las versiones de Percona Server mantienen una correspondencia directa con las versiones de MySQL, así pues la versión de 5.7.10 de Percona Server corresponde a las mejoras realizadas sobre MySQL versión 5.7.10. Esto podría parecer, en principio, un elemento sin mucha importancia pero en la práctica facilita mucho el proceso de planificación de una migración de MySQl a Percona o cuando se busca la resolución de un problema particular en una instalación.

Orientación a las mejoras de rendimiento

Partiendo de su compatibilidad total con MySQL, Percona ha mantenido una orientación a mejorar el rendimiento de sus productos. Aquí cabe destacar la pieza XtraDB que es una versión mejorada del motor InnoDB utilizado por MySQL.

XtraDB toma elementos fundamentales del InnoDB como el control de concurrencia MVCC (Control de concurrencia multiversión) y las propiedades ACID (Atomicidad, Consistencia, Aislamiento y Durabilidad), e introduce mejoras constantes con el objetivo de permitir y facilitar la entonación del motor con el fin último de mejorar el rendimiento global de todo el sistema.

En las diferentes versiones de Percona XtraDB se han introducido herramientas y procedimientos enfocados a identificar y corregir problemas de contención, lo que puede sonar muy ambicioso dado que la contención puede presentarse en varios niveles y de forma intermitente.

Sin embargo, son interesantes los procedimientos de identificación de la contención del buffer pool a través del esquema de exclusión mutua. En la memoria caché a causa de las definiciones de tamaño, o de un nuevo en el buffer pool, pero esta vez por el esquema de colocación de los datos en un ambiente de varios nodos.

En este punto podríamos concluir que introduciéndonos en el mundo de Percona Server estaríamos entrando en un ambiente donde se respaldan y empoderan todos nuestros esfuerzos de entonación con miras a la mejora de nuestros aplicativos.

Orientación a la escalabilidad

Basándose en XtraDB, Percona introdujo el producto software libre llamado XtraDB Cluster que permite la creación, administración y monitoreo de Cluster de varios servidores Percona Server o MySQL. Ofreciendo de esta manera una respuesta a los requerimientos de escalabilidad de aquellas instalaciones que ven aumentar su cantidad de transacciones, ya sea por un aumento natural del negocio o por un aumento puntual, como un plan de mercadeo.

Un cluster configurado con Percona XtraDB Cluster permite la inclusión de tres o más servidores, llamados nodos en una única estructura lógica donde todos disponen de todos los datos y de las mismas capacidades de lectura y escritura.

Estos clusters aseguran que un query será resuelto por cualquiera de los servidores sin necesidad de un acceso remoto, y en el caso de que un nodo se pierda o falle por la razón que fuere, el cluster continuará funcionando sin pérdida de datos, consistencias o suspensión del servicio a los usuarios finales.

Orientación a la gestión y monitorización de Base de Datos

Para comienzos de este siglo disponíamos de un MySQL que presentaba pocas herramientas de gestión y para 2011 Percona introdujo Percona Toolkit. Permitiéndonos encontrar índices redundantes y comparar la configuración de dos servidores, pasando por la introducción de retraso deliberado en la replicación maestro – esclavo.

Cierto es que MySQL reaccionó y ha mejorado sus MySQL utilities, pero Percona desde sus inicios ha propiciado el enriquecimiento de su grupo de herramientas de gestión de base de datos.

Otro aspecto importante es la posibilidad de monitorizar y obtener estadísticas sobre el funcionamiento de la base de datos, considerando un muy amplio conjunto de variables que incluyen los muy valiosos contadores del rendimiento por tabla, índice y usuario.

Servicio al cliente

El servicio que Percona ofrece a sus clientes abarca desde servicio técnico y asesoría hasta el manejo de todo el sistema de base de datos por parte de Percona, por supuesto bajo un desembolso económico.

Se ofrecen contratos de mantenimiento bastante flexibles que pueden amparar incluso elementos NoSQL en horarios de atención de 24x7x365 y con acuerdos de servicios (SLA) que pueden contemplar hasta indemnizaciones económicas.

Con más de tres mil clientes en todo el mundo este elemento en definitiva es un punto fuerte de Percona como empresa y un respaldo muy fuerte para Percona Server y el resto de sus productos.

Hasta aquí qué es Percona y cómo va a conseguir que te olvides de MySQL. Si te ha gustado este artículo visita nuestro blog y la página web de Pandora FMS.

Redactor técnico con más de diez años de experiencia manejando proyectos de monitorización. Es un auténtico apasionado del Yoga y la meditación.

Bases de datosComunidad

Workbench MySQL: ¡conoced a un gran aliado!

septiembre 5, 2017 — by Jimmy Olano0

workbench-mysql-featured.png

workbench mysql

Workbench MySQL: si no lo conoces estás perdiendo un gran aliado.

Introducción.

Cuando escuchamos acerca de MySQL de inmediato pensamos en la poderosa base de datos relacional “RDBMS”, la cual ahora pertenece al gigante Oracle®. Nosotros los programadores de aplicaciones preferimos usar la línea de comandos para nuestros propósitos pero Workbench MySQL es la respuesta acertada para disfrutar de una interfaz visual en el diseño y administración de nuestras bases de datos.
En esta entrega evaluaremos a Workbench MySQL version 6.3.6 Community” la cual es base para la “Standard Edition” y se diferencian por la documentación extendida, módulos/complementos adicionales y el soporte directo al usuario, todo esto con licencia comercial.

workbench mysql

Si bien es cierto que os estamos hablando de programación con bases de datos como apertura, también os decimos que Workbench MySQL tiene una sección muy útil en cuanto a la administración de servidores de datos y os lo presentamos como marco de referencia para nuestro objetivo: monitorizar el manejo y almacenamiento de nuestra información, ¡acompañarnos!

Prerrequisitos.

Desde luego que para utilizar Workbench MySQL debemos tener instalado un servidor MySQL, y para nuestro caso usamos ambas aplicaciones en un mismo equipo GNU/Linux Ubuntu 16 LTS, 64 bits, así que las gráficas indicadas pueden ser diferentes a lo que veáis en vuestros ordenadores.
Los ejemplos de datos nombrados aquí dados son ficticios y tienen propósitos didácticos, cualquier parecido con la realidad será absoluta coincidencia. Ciertas marcas registradas están acompañadas de un símbolo ® o © y pertenecen a sus respectivos propietarios.

Requerimientos de software.

Workbench MySQL ( MySQL Workbench) está diseñado para trabajar bajo ambientes:

  • GNU/Linux (Ubuntu a partir de la versión 9 y Fedora a partir de la versión 11 están certificadas oficialmente).
  • Solaris.
  • FreeBSD.
  • Mac OS 10.6.1 o superior.
  • Windows 7 o superior.

En el caso de Windows se necesita el entorno “Microsoft .NET 3.5” y luego solo basta con descargar el programa de instalación con extensión “Microsoft Installer .msi”.

GNU/Linux necesita como mínimo Cairo 1.6.0, glib-2.10, libxml-2.6, libsigc++ 2.0, pcre y libzip. Para este ambiente, en la distribución Debian (y sus “sabores”) solo bastará con seleccionar los derechos del administrador con el comando “apt-get install mysql-workbench” para que automáticamente descargue todos los paquetes necesarios e incluso nos invite a eliminar de nuestro disco fijo las librerías que no estén en uso ahorrando de espacio.

Requerimientos de hardware

Para poder utilizar MySQL Workbench como mínimo debemos contar con:

  • Procesador doble núcleo de 2 Ghz (4 núcleos recomendado)
  • 4 gigabytes de RAM (6 gigabytes recomendado).
  • Pantalla con una resolución mínima de 1024×768 píxeles (1280×1024 recomendado).

Esta configuración es normal en las computadoras modernas (cosa diferente son los requisitos para “MySQL Server”).

Ejecutando MySQL Workbench.

Una vez lo hayamos instalado en nuestro ordenador, procedemos a ejecutarlo y veremos una pantalla de bienvenida parecida a esta:

workbench mysql

A la derecha veremos los accesos directos a las opciones que nos ayudarán a orientarnos en el uso de esta herramienta (a este conjunto lo denominan “Workbench Central”):

  • “MySQL Utilities” que corren bajo una ventana terminal (línea de comandos).
  • “MySQL Bug Reporter” ya que el código abierto permite la depuración constante por parte de toda la comunidad que quiera colaborar en ello.
  • Enlaces web hacia foros en líneas, esto cambia de tanto en tanto dependiendo de la moda y de la cantidad de usuarios que los sustenten.
  • “Database Migration” si necesitamos traer datos otra base de datos MySQL o incluso de otros tipos de bases de datos tenemos este excelente asistente. Mostramos cómo iniciar la importación desde una base de datos PostgreSQL en la siguiente figura.

workbench mysql

Nos detendremos un poco sobre “MySQL Utilities”: al elegir esta opción se nos abrirá una ventana de terminal de comandos (amada por unos, marginada por otros) donde en realidad presenta un listado que no pertenece a MySQL Workbench en sí mismo, son comandos que uno igual pudiera correr en una ventana terminal independiente. Por ejemplo, podremos ver a mysqldiskusage, comando que nos permitirá conocer cuánto espacio ocupan las diferentes bases de datos que alberga nuestro “MySQL Server” (nota: ejecutad siempre, por motivos de seguridad, dichos comandos por medio de una conexión SSH).
Lo que queremos destacar es que MySQL Workbench funciona con elementos propios y otros agregados, ofreciendo gran flexibilidad a nuestra labor de monitorización, veamos.

Utilizando MySQL Workbench.

MySQL Workbench tiene tres áreas principales bien definidas (a esto lo denominan “Workspace”):

  • Desarrollo de Lenguaje de Consulta Estructurado (“Structures Query Language Development” SQLD por su abreviatura en idioma inglés).
  • Modelado de Datos de una manera visual y que incluye, además, la ingeniería en uno y otro sentido entre un esquema (interacción guiada) y una base de datos así como la creación, modificación y visualización de los objetos (tablas, columnas, disparadores, consultas definidas, etc.)
  • Administración del servidor en la cual haremos hincapié más adelante.

Acotamos que muchas opciones no solo se limitan a estas áreas: por nombrar alguna, MySQL Workbench permite exportar e importar datos de una manera práctica y con la opción de acceder a características avanzadas:

workbench mysql

Esta figura muestra ya cuando estamos conectados a una base de datos y estamos prestos a sacar (o respaldar) nuestros recursos almacenados pero ¿cómo nos conectamos?

Conectando a nuestra base de datos.

Si bien tenemos el modelado de datos, con el cual podemos encontrarnos “off-line”, eventualmente esta información la deberemos almacenar en una base de datos, (asunto muy distinto es monitorizar al servidor ya que para ello debemos conectarnos de manera obligatoria). De manera automática, a la izquierda de la pantalla de bienvenida, MySQL Workbench detecta nuestro servidor MySQL local a lo cual podemos hacer clic, introducir la contraseña y conectarnos, sin embargo os presentamos la interfaz de conexión al presionar las teclas CTRL+U (menú desplegables “Base de datos” → “Conectar a base de datos”):

workbench mysql

Es cierto, que si tenemos varias bases de datos que administrar ahorraremos tiempo si hacemos perfiles de conexión y las grabamos con MySQL Workbench, dichas fichas pueden contener instrucciones adicionales como conectarnos siempre por medio de SSH (pestaña “Remote Management”) o elevar privilegios para iniciar o detener el servidor (pestaña “System Profile”).

workbench mysql

Plenamente conectados.

Tras ingresar nuestras credenciales estaremos en línea y no es de sorprender que lo primero que nos ofrece MySQL Workbench sea realizar comandos SQL (debemos recordar que esa es una de las funcionalidades principales de este software y con lo que la mayoría de las personas asocia).
Dos órdenes rápidas nos van a permitir elegir una base de datos y mostrar las tablas que contiene, en este aspecto MySQL Workbench cumple las mismas funciones que phpMyAdmin, solo que nuestro entorno no es un navegador web, sino una aplicación de nuestro sistema operativo.

workbench mysql

Es posible hacer un modelado de datos para luego plasmarlo en una base de datos. Pero en el caso de que lleguemos a una empresa y todo se encuentre planteado de antemano, podemos conseguir un panorama general. Para mejorar la estructura de datos un proceso de ingeniería inversa, solo necesitamos una gráfica para tener conocimiento de ello, así será más sencillo de monitorizar. Nosotros los seres humanos muchas veces necesitamos de mapas mentales para realizar nuestro trabajo.

workbench mysql

Monitoreando nuestro “MySQL Server”.

Dejando un lado las labores de diseño, consulta y modificación para los desarrolladores, poco hemos tardado en llegar a nuestro objetivo que es monitorizar: justo debajo de la opción “MANAGEMENT” la primera opción que os presentamos es el estado del “MySQL Server” en la sección “Server Status”:

workbench mysql

De un solo vistazo tenemos la información del nombre del servidor, sabemos si se está ejecutando, conocemos el puerto de escucha, los directorios de configuración, la versión utilizada y compilada, así como si es un servidor principal o es una réplica. También, de manera muy resumida, la carga de trabajo y el tráfico de red, entre otros valores relevantes.
Otra sección a la que podemos tener acceso es “Instance” → “Startup/Shutdown” donde podremos iniciar o detener el trabajo (aquí debes tener cuidado si estás conectado a un servidor en producción): ¡Estar muy pendientes si hay usuarios conectados!:

workbench mysql

Una vez hayamos enterado en situación, en general podremos obtener mayores detalles si usamos el apartado “Performance” y luego “Dashboard” donde está nuestro tablero de instrumentos.

Al hacer clic allí veremos unas gráficas muy importantes:

– Tráfico de red.

Muestra el número de bytes por segundo tanto enviados como recibidos y el número de clientes conectados. Esto permite conocer rápidamente el caudal, y si estamos llegando al máximo permitido por el hardware. Unos valores situados por encima del 85% durante mucho tiempo nos indicará si debemos pensar en migrar a servidores en réplicas o en racimos en internet (cloud cluster) para poder asumir la nueva carga de trabajo.

workbench mysql

– Estado del servidor MySQL.

Si lo colocamos en segundo lugar, no es porque sea menos importante que el tráfico de datos. Aquí descubrimos la eficiencia del caché de datos (la información más solicitada, es mejor mantenerla en la RAM, para reducir el desgaste de disco duro) así como el número de SQL ejecutadas por segundo e incluso discrimina sus diferentes acciones específicas: consultas (“el pan nuestro de cada día”), insertados, modificación y borrado de datos -más frecuentes- y creación, modificación y borrado de tablas que no deberían suceder (con muy contadas excepciones) y que cae en el campo de la seguridad informática (solo cuentas privilegiadas pueden ejecutar estas acciones).

workbench mysql

– Estado del InnoDB.

InnoDB es un mecanismo de almacenamiento de código abierto desarrollado por la compañía finlandesa Innobase (ahora adquirida también por Oracle) el cual es muy popular por sus superiores ventajas. Si nuestros datos están almacenados de esta manera, MySQL Workbench nos mostrará las solicitudes de lectura y escritura al disco duro (solicitudes que a su vez las recibe el caché de datos sobre el cual comentamos en la sección anterior).
InnoDB destaca por su capacidad ACID, la cual a su vez tiene un límite de 200 transacciones por segundo y que para sobrepasarlo necesitaremos un hardware muy especializado y/o el reparto de la carga de trabajo entre varios servidores, por lo que esta monitorización es muy importante.

workbench mysql

– Reportes de desempeño.

Aunque no sea de manera gráfica, igual de útiles son los reportes de desempeño, estos son una serie de guiones SQL almacenados por los programadores de MySQL Workbench y que se ejecutan ya sea de manera automática o a petición, como en el caso de las siguientes imágenes.

workbench mysql

workbench mysql

La última imagen ilustra las tablas temporales, su tiempo de servicio y el número de veces que han sido ejecutadas (en columnas a la derecha al mover la barra de desplazamiento horizontal). Pero ¿por qué son prioritarias para nosotros? La respuesta es que para las consultas almacenadas o creadas por los usuarios, “MySQL Server” guarda dichos valores en tablas temporales y observar su comportamiento nos puede ayudar a identificar retrasos en la retribución de la información. Éste y otros valores o conjuntos de valores permitirán decidir qué esquema de desempeño utilizaremos en la siguiente sección.

Esquema de desempeño.

MySQL Workbench nos ofrece una configuración muy sencilla en cuanto a la manera de cómo recolectar información para que luego sea presentada: hemos llegado entonces a la quintaesencia de la monitorización de servidores.

workbench mysql

Existe un delicado equilibrio entre la recolección de datos y el servicio de datos: al aumentar los niveles de exigencia del primero disminuye lo segundo, es por ello que MySQL Workbench ofrece 4 niveles básicos.

  • Completamente habilitado.
  • Personalizado (arriba mostrado).
  • Por defecto, valores “de fábrica”.
  • Deshabilitado.

¿Qué nivel es mejor para nosotros? Os indicamos que depende de la fase de desarrollo de vuestro software, la opción (a) se ofrece para desarrollo en ambiente de prueba, la opción (c) para software ya conocido, establecido y bien depurado y la opción (d) pues bueno, no es demasiado recomendable.

workbench mysql

Es tan avanzado que primero debemos conocer los componentes conceptualizados que luego podremos configurar:

  • Actores (usuarios que solicitan o tramitan información).
  • Instrumentos (memoria, blackhole, InnoDB, MyIsam, etc.: objetos programados que procesan la información).
  • Consumidores (tablas donde guardaremos los datos recolectados).A estos elementos en su conjunto serán registrados en los tres eventos siguientes:
    • Al llegar una nueva solicitud y finalizar la misma (una vez todos y cada uno de sus componentes hayan finalizado; recordad además que las transacciones ACID son “más costosas” en tiempo y recursos de máquina, arriba lo comentamos en detalle).
    • A su vez todos y cada uno de los pasos que abarque la solicitud.
    • Los diferentes eventos asíncronos que crean períodos de espera en cada una de las etapas del punto anterior, esto permite detectar cuellos de botella y diseñar algoritmos que entreguen datos a tiempo a los procesos siguientes.

Este concepto es un poco difícil de entender ya que implica hilos de ejecución, que bien pueden ser independientes de principio a fin o que tal vez necesiten información de otro hilo para continuar. La simplificación que damos es exagerada pero ilustra en pocas palabras la situación planteada.

workbench mysql

Para configurar todas estas opciones, haremos clic en las diferentes pestañas de la última figura mostrada, allí recomendamos comenzar por agregar los usuarios (actores) y objetos (los disparadores triggers que se activan bajo eventos tales como por ejemplo dar de alta un usuario o alcanzar determinado número de registros, etc.), luego marcamos los instrumentos que queremos supervisar (InnoDB, por ejemplo) y las tablas donde los guardaremos (Consumers) teniendo en cuenta los hilos (Threads) de dichos instrumentos.

Expandiendo las posibilidades de MySQL Workbench.

Desarrollada bajo lenguaje C++ esta aplicación acepta guiones “scripts” escritos en lenguaje Lua o Python, este último actualmente está más extendido y cuenta con muchas opciones.
Con ello podremos:

  • Automatizar tareas comunes, el anhelado premio para los administradores.
  • Mejorar la interfaz para el usuario.
  • Crear complementos.
  • Manipular esquemas de datos.
  • Crear características personalizadas para MySQL Workbench.

Para mostrar un botón, podremos crear un complemento escrito en lenguaje Python con solo darle un nombre de inicio y MySQL Workbench precargará el ambiente de trabajo con las librerías especialmente destinadas tales como la interfaz gráfica y las que interactúan con la base de datos.

workbench mysql

Aunque hemos dejado bastante por tratar en este artículo, queríamos mostrar cómo Workbench MySQL es un gran aliado que presenta combinaciones prácticamente infinitas.

Redactor técnico. Comenzó a estudiar ingeniería en 1987 y a programar con software privativo. Ahora tiene un blog en el que difunde el conocimiento del software libre.

Bases de datosComunidadMonitorización

Rendimiento base de datos: 5 TIPS para optimizar el rendimiento con un sistema de monitorización

agosto 28, 2017 — by Sara Martín0

Rendimiento-base-de-datos-featured-.png

rendimiento base de datos

Rendimiento base de datos: Optimiza con un sistema de monitorización

¿Cuántas veces te has quejado por la lentitud de una página web o una aplicación?

Una base de datos es el centro de cualquier aplicación, y cuando aparece un problema de rendimiento, lo más posible es que la base de datos sea la responsable. Lo mismo le pasa a los clientes, si tu base de datos, por buena que sea, no funciona a pleno rendimiento, va a generar un gran número de quejas y clientes insatisfechos. Por este motivo, hoy vamos a ver los métodos existentes para la optimización de rendimiento de bases de datos, de este modo evitaremos problemas innecesarios y mejoraremos nuestra plataforma.

Podemos encontrar diferentes métodos para optimizar una base de datos, donde un sistema de monitorización es un punto clave para conocer el funcionamiento de todos los dispositivos y aplicaciones, descubriendo a qué se deben los problemas de rendimiento, conociendo los históricos, los tiempos de respuestas del usuario final, etc.

Hoy veremos 5 recomendaciones para poder optimizar el rendimiento de una base de datos:

1. El número uno, como puedes imaginar, es elegir un buen sistema de monitorización. Si todavía no tienes en mente ninguno, te recomendamos que eches un vistazo al artículo los 16 mejores software de monitorización. El software que escojas debe incluir diferentes herramientas y elementos, pero es muy importante que permita tener visibilidad completa de todas las herramientas que tengas, incluyendo las bases de datos. Un sistema de monitorización te va a permitir anticiparte a los problemas, crear alertas de aviso, y descubrir qué causa lentitud a nuestros equipos o aplicaciones, es decir, permite supervisar todo lo que ocurre en nuestros dispositivos para evitar o solucionar los fallos cuanto antes.

2. Continuando con la importancia de tener un software de monitorización, llegamos al segundo punto. Consiste en conocer los históricos de las bases de datos, para saber en qué momentos es más común que surjan fallos, saber cuando es necesaria más vigilancia, y comparar el rendimiento de las bases de datos en diferentes meses. Esto va a permitir de nuevo la anticipación del problema. Con los históricos de aplicación y rendimiento, puedes saber qué aplicaciones se activan al mismo tiempo, sabiendo cuando una variación puede llegar a ser un problema. Cuando descubras está variación ahora sí, es muy sencillo rastrear el cambio de código, configuración o recurso, eliminando el problema rápidamente.

3. En tercer lugar, no dudes en gestionar la base de datos y organizarla de la mejor manera posible. Es importante que podamos acceder a la información de una forma efectiva. Para ello, evita los campos y tablas que no se utilicen, simplifica los campos al máximo, cuida el diseño, establece relaciones, no almacenes binarios de gran tamaño, etc.

4. Ya contamos con un sistema de monitorización y gestionamos nuestras bases de datos correctamente, ahora toca mirar más allá de los sistemas tradicionales. Es importante tener pantallas intuitivas donde podamos conocer el rendimiento de las redes y dispositivos, con datos y gráficas fáciles de interpretar. Así va a ser mucho más sencillo indagar en los problemas sabiendo rápidamente qué está fallando y cómo arreglarlo. Herramientas como Pandora FMS, permiten identificar cómo se ejecutan las solicitudes de una aplicación y muestran los diferentes procesos y recursos que la aplicación está esperando, así es mucho más sencillo conocer el rendimiento de los paneles y solucionar las incidencias, que en otros sistemas tradicionales.

rendimiento base de datos

5. Por último, sabemos que cada aplicación o página web es compatible con diferentes sistemas operativos, dispositivos y tecnologías. Por este motivo es tan importante tener una visión global y unificada del rendimiento de la aplicación. Basándonos en los análisis de los tiempos de espera, podemos ver si hay problemas en una plataforma u otra, ver dónde hay un fallo y solucionarlo. Así es mucho más fácil que los trabajadores y usuarios sean mucho más felices.

Si después de seguir estas recomendaciones continúas teniendo problemas, puede que sea hora de seleccionar un nuevo tipo de base de datos, más apropiado para tu entorno. Por ejemplo, si tienes un sitio web y comienzas a tener muchas visitas, es posible que el funcionamiento de la web no sea el esperado, y esa será el momento de seleccionar una nueva base de datos.

Con estas cinco recomendaciones, verás cómo la optimización de bases de datos es mucho más sencilla. Si estás interesado en leer más artículos como este, puedes visitar nuestro blog, o también puedes visitar nuestro canal de Youtube.

Bases de datosComunidad

Las mejores bases de datos del 2017

agosto 9, 2017 — by Sara Martín4

Mejores-bases-de-datos.png

mejores bases de datos

Mejores bases de datos del año 2017

A día de hoy, encontramos múltiples Bases de Datos en el mercado y esto nos obliga a realizar comparaciones para descubrir cuál es la que mejor se adapta a nuestro entorno. El año pasado estuvimos viendo las mejores bases de datos de 2016 y aunque estas no han variado demasiado, hoy veremos las mejores bases de datos de 2017.

Si estás interesado en seleccionar una base de datos, piensa que por un lado tienes las bases de datos relacionales y por otro lado las bases de datos NoSQL. Las bases de datos relacionales se mantuvieron en auge durante la época de los 70, mientras que las bases de datos NoSQL son relativamente nuevas, surgiendo hace aproximadamente 10 años. A parte de estos dos tipos de bases, aparecen las bases de datos híbridas como por ejemplo SQL/noSQL, bases de datos in-memory o bases de datos as a service.

Una selección de tecnología de almacenamiento correcta, con un uso sencillo, seguro, con herramientas útiles y una comunidad que apoye el producto, va a marcar la diferencia a la hora de gestionar un negocio. Va a mejorar nuestra productividad y por lo tanto se convierte en algo vital para cualquier negocio. Por todo estos motivos, la monitorización de las bases de datos es prioritaria en cualquier instalación.

Si vas a contratar un nuevo técnico de soporte para tu equipo, lo más lógico es que realices un buen proceso de selección. Con las bases de datos ocurre lo mismo, es recomendable investigar los pros y contras de cada herramienta. No sólo debemos pensar en qué momento se encuentra nuestra empresa, si no hay que evaluar la base de datos pensando en qué lugar queremos estar.

Las preguntas que debemos formularnos antes de elegir una base de datos son las siguientes:

  • ¿A cuántos clientes quiero dar servicio?
  • ¿Qué tamaño de datos voy a necesitar gestionar?
  • ¿Voy a necesitar implementar trabajos en “batch” que accederán a la base de datos?
  • ¿Qué exigencia de tiempo de respuesta necesito dar a mis clientes?
  • ¿Cómo voy a escalar mi base de datos según vaya aumentando el número de clientes y transacciones?
  • ¿Cómo voy a monitorizar mi base de datos para evitar tiempos de indisponibilidad?
  • ¿Necesito una base de datos relacional o una NoSQL?
  • ¿Cómo se va a comportar la base de datos en caso de caída? ¿Cómo se comportan cuando hay un problema?

Antes de continuar, os dejamos un enlace a este artículo de comparativa de Bases de Datos NOSQL vs SQL para que podáis conocer las principales diferencias de estos dos modelos. Y por fin, el momento esperado, presentamos las que para nosotros son las mejores bases de datos de 2017 con sus principales características.

Mejores bases de datos Comerciales

A día de hoy, el mercado sigue estando dominado por DB2, SQL Server, Oracle e IBM. En sistemas operativos Windows SQL Server suele ser la opción más frecuente, mientras que en Mainframe o Unix/Linux, Oracle y DB2 son los líderes indiscutibles.

Microsoft SQL Server

Es una base de datos desarrollada por Microsoft y sólo tiene compatibilidad con sistemas Windows. Hay muchos perfiles expertos en SQL Server y no es de difícil adquisición. La integración con Microsoft Azure ha mejorado mucho su flexibilidad y rendimiento. Además permite administrar información de otros servidores mejorando su usabilidad.

Benchmark: http://www.microsoft.com/en-us/server-cloud/products/sql-server-benchmarks/industry.aspx

Oracle

Oracle es una base de datos que puede correr en casi cualquier sistema operativo. De Oracle destaca la abundancia de perfiles con experiencia en esta tecnología y la gran cantidad de herramientas que hay para su administración y monitorización.

Benchmark de Oracle: http://www.oracle.com/us/solutions/performance-scalability/index.html

IBM DB2

Es la segunda base de datos más utilizada en entornos Unix/Linux después de Oracle. Es claramente un indiscutible ganador en Mainframe. Hay perfiles profesionales para DB2 pero no tanto como para Oracle. Por otro lado, el perfil de DB2 Mainframe no tiene por qué saber moverse en DB2 linux/unix.

Benchmark de DB2: http://www-01.ibm.com/software/data/db2/performance.html

Teradata

Destaca sobre los demás tipos de bases de datos por su capacidad de almacenamiento y de análisis de datos. Suele ser utilizado en grandes instalaciones de Big Data.

SAP Sybase

Hace una década fue una de las bases de datos con más éxito, hoy en día ya está menos extendida, pero sigue destacando por su escalabilidad y rendimiento.

Informix

Durante 1990 la empresa Informix fue un sistema de bases de datos muy popular. Sin embargo, en el año 2000 tuvo varios tropiezos en su gestión debilitando a la compañía, finalmente vendió los derechos a IBM, incluyendo la marca, sus planes y la base de datos. A día de hoy Informix y Ascential han dejado de existir como tal, ya que IBM dividió las herramientas y aplicaciones, ahora forman parte de IBM.

Mejores Bases de Datos de libre distribución relacionales

Dentro de las bases de datos relacionales libres, hay tres que destacan sobre el resto, estas son MySQL, María DB y PostgreSQL. Todas tienen en común varios beneficios: La existencia de una comunidad potente, la posibilidad de ver y modificar el código como sea necesario y el precio que tiene, ya que son gratuitas.

mejores bases de datos

Bases de Datos NoSQL

Las bases de datos NoSQL han evolucionado para dar respuesta a distintos problemas y aunque forman parte del mismo grupo, tienen muchas diferencias entre sí. Actualmente podemos dividirlas en cuatro grupos por su manera de modelar los datos.

NoSQL Orientados a Clave-Valor

Es el modelo de datos más sencillo y son ideales cuando se accede a datos por clave. La diferencia de este tipo de base de datos radica en la posibilidad de almacenar datos sin ningún esquema predefinido. Suelen ser muy eficientes para las lecturas y escrituras, además están diseñadas para escalar masivamente consiguiendo un tiempo de respuesta muy rápido. Los datos suelen almacenarse en estructuras complejas como BLOB. Algunos ejemplo de las bases de datos de este tipo serían las siguientes:
Redis; Software libre.
Riak; Destaca por su capacidad de ser una base de datos de Clave-valor, almacenamiento de documentos y preparada para la realización de búsquedas.
Oracle NoSQL
Microsoft Azure Table Storage

NoSQL Orientados a Documentos

Se guardan documentos que soportan diferentes formatos (JSON, XML). Se pueden cambiar esquemas sin necesidad de parar las bases de datos, los desarrolladores pueden meter documentos indexados y tienen acceso por el motor de base de datos. Su flexibilidad la convierte en una de las herramientas más versátiles, destacan Mongo DB y Couchbase Server.

Mongo DB

Es una de las bases de datos más populares a día de hoy. Tiene la posibilidad de trabajar con datos estructurados y no estructurados. Destaca por su gran capacidad de escalado y rendimiento. Además es una de las bases que más perfiles experimentados tiene, facilitando el proceso de aprendizaje y uso.

Permiten trabajar por pares de clave-valor y acceder a distintas partes de los datos almacenados.

Mongo DB no soporta atomicidad en las operaciones y garantiza integridad eventual. Los cambios se irán replicando a lo largo de todos los nodos pero no se garantiza que todos los nodos tengan el mismo dato a la vez.

Couchbase Server

Base de datos libre creada en el proyecto Apache. Tampoco garantiza integridad de datos al 100%. Destaca por su gran consola de administración, con la que es posible acceder de una manera muy sencilla a un gran número de datos.

Mark Logic Server

Esta base de datos destaca sobre las anteriores por permitir integridad de datos y compatibilidad con XML, JSON y RDF.

Sistemas soportados: Windows, Solaris, Red Hat, Suse, CentOS, Amazon Linux y Mac os.

Elastic Search

Otras bases de datos a destacar son RavenDB, Apache Jena y Pivotal GemFire.

No SQL Orientados a Columnas

Estas base de datos, son muy similares a las tablas de datos relacionales, en las que puedes mapear claves a valores y agruparlas en estructuras. Son utilizadas en entornos donde hay poca escritura y existe la necesidad de acceder a varias columnas de muchas filas. Son muy útiles en procesamiento y análisis de eventos, gestión de contenido y en análisis de datos.

Apache Cassandra

Esta base de datos fue creada por Facebook y ahora es de libre distribución. Está muy recomendada para gestionar las bases de datos con gran cantidad de datos. Actualmente cuenta con una versión Enterprise de Cassandra llamada Datastax Enterprise.

Datos soportados: ASCII, bigint, BLOB, Boolean, counter, decimal, double, float, int, text, timestamp, UUID, VARCHAR y varint.

Benchmark: http://vldb.org/pvldb/vol5/p1724_tilmannrabl_vldb2012.pdf

Apache Hbase

Fue diseñado para soportar grandes cantidades de accesos de lectura y escritura en tiempo real a grandes cantidades de datos. Una de sus ventajas es el correo sobre Hadoop y sobre el sistema de ficheros Hadoop.

Bases de datos orientadas a grafos No SQL

Este modelo está centrado en entidades y las relaciones de las mismas. Usa la teoría de grafos para enlazar las bases de datos. Todo elemento apunta a su elemento adyacente. Estas bases de datos son recomendadas si tus datos están muy relacionadas como en redes sociales, detección de fraude, recomendaciones en tiempo real, etc. Aquí, la base de datos deberá estar normalizada donde cada estructura tendrá una columna y cada relación dos.

Neo4j

Soporta integridad de datos y alta disponibilidad y escalado en cluster. Además posee un buen panel de administración.

Infinite graph

No es de libre distribución.
Sistemas soportados: Mac OSx, Linux and Windows
Benchmark: Se puede pedir a Objectivity.

mejores bases de datos

Modelo Híbrido

Cada vez son más las empresas que ofrecen soluciones híbridas en las que se utilizan varios motores de bases de datos para dar cabida a varios modelos NoSQL e incluso a motores relacionales.

Por ejemplo, CortexDB, Foundation DB y Orient DB ofrecen varios modelos NoSQL.
IBM ha extendido su base de datos DB2 para ofrecer la posibilidad de utilizar bases de datos NoSQL con BLU Acceleration. IBM DB2 en su versión extendida permite almacenar datos en XML, JSON y almacenamiento en modo grafo.

Bases de datos As a Service

Las bases de datos As a Service se diferencian del resto por ofrecer sus servicios en la nube. Sólo tienes que leer y escribir tus datos utilizando servicios ofrecidos por el proveedor. Probablemente con el tiempo, este va a ser una de las bases de datos más demandadas por su fácil uso.

Amazon SimpleDB

Base de datos que ofrece una interfaz de servicios web simple, sirve para almacenar y crear varios conjuntos de datos. Si quieres crear accesos a bases de datos sencillos Amazon SimpleDB puede ser una buena opción.

Los datos son almacenados como textos y se generan estructuras formadas por pares de parámetro valor. Además los datos se indexan automáticamente, facilitando las búsquedas de información

No hay benchmark.

Listado de módulos de Pandora FMS para monitorización de Bases de Datos

Base de Datos Módulos y plugins
Oracle Monitorización Oracle
DB2 Monitorización DB2
SQL Server Monitorización SQL Server
Teradata Monitorización Teradata Pandora FMS Enterprise
SAP Sybase Monitorización Sybase
Informix Monitorización Informix
MySQL Monitorización MySQL conexiones activas
MySQl Cluster
MysQL Monitoring
MySQL Performance
MySQL Plugin
MySQL Server Advanced Monitoring
Postgre SQL Perl PostgreSQL Monitorización
PostgreSQL Plugin Monitorización
Postgre SQL Plugin Monitorización
PostgreSQL Plugin Agentes
Mongo DB Módulo Monitorización MongoDBPlugin Monitorización Mongo DB
Couchbase Monitorización Couchbase con Pandora FMS Enterprise
Mark Logic Server Monitorización MarkLogic con Pandora FMS Enterprise
Elastic Search Monitorización Elastic Search con Pandora FMS Enterprise
Redis Monitorización Redis con Pandora FMS Enterprise
Riak Monitorización Riak con Pandora FMS Enterprise
Microsoft Azure Table Storage Monitorización Azure con Pandora FMS Enterprise
Apache Cassandra Monitorización Apache Cassandra
Apache Hbase Monitorización Apache hbase
Neo4j Monitorización Nwo4j con Pandora FMS Enterprise
Infinite graph Monitorización Infinite Graph con Pandora FMS Enterprise
Amazon SimpleDB Monitorización Amazon SimpleDB con Pandora FMS Enterprise

Esperamos que este artículo os haya sido útil, si queréis añadir alguna base de datos no dudéis en comentarnos. Además si tenéis cualquier duda sobre cómo monitorizar una base de datos en concreto, te invitamos a contactar con nosotros para ayudaros en lo que sea posible.

Bases de datosComunidadFeaturesMonitoringMonitorizaciónMonitorización de ServidoresPandora FMS

Reduce el coste de licencias oracle con Pandora FMS

febrero 26, 2016 — by steve2

licencias-oracle-pandorafms-1024x517.png

Para aquellos que se hayan enterado, y para los que no también, la empresa de software Oracle ha decidido cambiar su política de licencias (puedes obtener más información haciendo clic aquí o visitando la página oficial de Oracle). Del 26 de febrero en adelante se aplicará una tarifa extra a los clientes de Oracle según los recursos asignados a las bases de datos Oracle virtualizadas bajo entornos VMWare. Esto da lugar a facturas sorpresa y algún que otro problema legal para aquellos que virtualizan bases de datos de cierto tamaño. En este artículo se pretende explicar cómo Pandora FMS puede ayudarte a ajustar tus recursos asignados para que no sobren, y así reducir nuestro siguiente cobro de licencia por parte de Oracle.

Bases de datosMonitorizaciónMonitorización de Servidores

Cómo monitorizar Mongo DB

diciembre 28, 2015 — by Javier0

como-monitorizar-mongo-db-grafico.jpg

Como comentamos en el artículo de tipos de bases de datos, la correcta monitorización de las bases de datos es imprescindible en cualquier organización. En esta ocasión os vamos a contar todo lo que debéis saber para monitorizar un Mongo BD. No sólo os contamos los comandos de Mongo DB y qué debéis saber sobre esta base de datos, sino que además os damos los plugins necesarios para tener completamente monitorizadas vuestras instancias Mongo DB.

Tenemos que asegurarnos que nuestra base de datos funciona correctamente. Si MongoDB va mal, todas las aplicaciones que se nutren de tu mongo db fallarán. Así que, monitorizar las principales variables y configurar los parámetros de tu base de datos es la mejor opción para asegurarse de que tus bases de datos mongo db funcionan.

Bases de datos

NoSQL vs SQL: Principales diferencias y cuándo elegir cada una de ellas

noviembre 18, 2015 — by Javier0

mysqlvsnosql.jpeg

Hoy en día empieza a haber una tendencia alcista por la utilización de Bases de Datos No SQL. En este artículo queremos aclarar cuáles son las diferencias entre ambas bases de datos y en qué ocasiones debemos elegir un tipo u otro para nuestro proyecto. Si crees que puedes aportar más características o información a este artículo estaremos encantados en recibir tus comentarios.

Bases de datosMonitorización

Tipos de bases de datos y las mejores bases de datos del 2016

noviembre 18, 2015 — by Javier5

tipos-de-bases-de-datos.jpg

Nos encontramos en un momento muy interesante para el sector de las Bases de Datos y hay muchos tipos de bases de datos en el mercado. Por un lado tenemos las bases de datos relacionales, actualmente más establecidas. Por otro lado aparecen las bases de datos NoSQL. Decimos aparecen pero ya están en el mercado desde hace más de 10 años. Junto a estos dos tipos de bases de datos aparecen las bases de datos híbridas (SQL/NoSQL), bases de datos in-memory y bases de datos as a service.

Si queréis añadir información no dudéis en comentarnos vuestras experiencias para que podamos hacer más rico este artículo entre todos.

Bases de datosMonitorización

Cómo monitorizar Apache Hbase

julio 22, 2014 — by Carla Andres0

hbase_logo

En esta sociedad dominada por grandes volúmenes de datos, merece la pena tener en consideración una tecnología de base de datos llamada “Bigtable”. Este es el ejemplo de Hbase, una tecnología fruto del desarrollo de los ingenieros de Google, una empresa que sabe alguna que otra cosa acerca de gestionar grandes cantidades de datos. Ahora Pandora FMS también puede monitorizar los parámetros de rendimiento de Apache Hbase.

¿Qué es Hbase?

Hbase es una base de datos no relacional de código abierto, distribuida siguiendo el modelo de BigTable y escrita en Java, y cuyo desarrollo forma parte del proyecto de Software Apache Hadoop.
Hbase establece una manera, susceptible a errores, de almacenar grandes cantidades de información dispersa. Puede obtener más información sobre Apache Hbase visitando su página web: http://hbase.apache.org/

Recolección de información

Pandora FMS utiliza un agente software instalado en el sistema que contiene Hbase para ejecutar pruebas de tipo local y enviar los resultados en formato XML al servidor.

Este plugin devuelve 8 módulos, y todos ellos extraen información importante sobre el rendimiento. Puede fijar umbrales manualmente:

• Hbase Alive: Muestra si Hbase esta funcionando, si llega a estado crítico se corta la
monitorización en el resto de los módulos.

• Hbase Connections: Muestra la cantidad de conexiones de red.

• Hbase CPU Usage: Muestra el porcentaje de CPU utilizado por HBase.

• Hbase Memory Usage: Muestra el porcentaje de Memoria utilizada por Hbase.

• Hbase Heap Memory Used: Muestra el porcentaje de memoria heap utilizada por Hbase.

• Hbase Process State: El estado del proceso Hbase.

• Hbase Tables: Numero de tablas en Hbase.

 Hbase Time in CPU: Tiempo de CPU para el proceso de Hbase.

• Hbase/Region Servers Online: Número de Servidores de Región Activos.

• Hbase/Region Server Request per second: Petición por segundo del servidor de región

• Hbase Log Warning Messages: Número de mensajes de warning en el log de Hbase.

• Hbase Log Errors: Número de mensajes de error en el log de Hbase.

• Hbase/Region Server Cache Hit Ratio: Muestra el porcentaje de Cache Hit Ratio para el servidor Region.

 Hbase/Region Server Flush Queue Size: Muestra el Número de regiones encoladas.

• Hbase/Region Server Compaction time: Longitud de la cola de compactación. Este es el número de campos en el RegionServer designadas para compactación.

• Hbase/Region Server Memstore Size: Suma de todos los tamaños de Memstore en el RegionServer.

• Hbase/Region Server Read Request: Número de peticiones de lectura para el Region Server.

• Hbase/Region Server Write Request: Número de peticiones de escritura para el RegionServer.

• Hbase/Region Server Number of Online Regions: Número de las regiones activas en el RegionServer.

 

Configuración

Para configurar el plugin correctamente hay que seguir los siguientes pasos:

1. Mover el script hbase_plugin.sh de la carpeta de descarga por defecto al directorio etc/pandora/plugins/

2. Asignar los permisos necesarios a hbase.pl script:

chmod +x hbase_plugin.pl

3. Al final del fichero de configuración pandora_agent.conf añadir la siguiente línea:

module_plugin /etc/pandora/plugins/hbase_plugin.pl

4. Al final del fichero de configuración pandora_agent.conf añadir la siguiente línea:

module_plugin /etc/pandora/plugins/hbase_plugin.pl

5. Reinicia rel proceso de dicho agente:

sudo service pandora_agent_daemon restart

Para poder recoger la información correctamente a través del servidor de información de Hbase es necesaria una configuración específica de Hbase.

En primer lugar, Hbase deber ser desempaquetado en /etc. La carpeta donde se debe desempaquetar se llamará hbase. Antes de iniciar Hbase hay que modificar el fichero de configuración de Hbase, localizado en /etc/hbase/conf en función de nuestras necesidades.
Es preciso editar/añadir las siguientes líneas en hbase-site.xml entre las etiquetas de configuración (<configuration> and </configuration>):

<property>

<name>hbase.master.info.port</name>

<value>16010</value>

</property>

<property>

<name>hbase.master.info.bindAddress</name>

<value>127.0.0.1</value>

</property>

 

Información recolectada

hbase modules

Vista general de los módulos en la consola de Pandora FMS

hbase memory usage

Vista de gráfica de la información recolectada por un agente

icon_contact_us download_it-08
¿Quieres saber más sobre Pandora FMS? ¿Quieres descargar el plugin?