El sistema de BK Sistemas Informáticos está operativo y en continua observación por parte de los que administramos el sistema. Sin embargo, no todas las configuraciones son adecuadas, hay algunas de ellas que deberíamos cambiar, ¿No crees Juan?
Cierto Vindio, no todas las configuraciones son las mas adecuadas, por ello, tenemos que llevar un seguimiento del rendimiento del sistema en el siguiente sentido:
Analizar el uso que se hace de los recursos de la red y asegurar que el acceso a los más críticos no supone un problema para los usuarios autorizados.
Comprobar que la interacción entre los usuarios sigue los patrones establecidos "a priori".
Regular las tasas asignadas en un principio a los usuarios y a los recursos de la red, optimizándolas en el sentido de que los usuarios dispongan de la mayor flexibilidad posible sin comprometer la estabilidad del sistema.
Localizar posibles cuellos de botella en el sistema.
Asegurar los accesos y la operatividad en el sistema, sobre todo con los elementos críticos.
La administración de sistemas no se limita únicamente a gestionar usuarios, grupos, recursos y los entornos en los que se relacionan sino que también hay que llevar un seguimiento en el uso que se hace de todos sus elementos.
Al respecto, habrá que supervisar el rendimiento del sistema para asegurar que éste se desarrolla en las mejores condiciones y que las configuraciones llevadas a cabo, en principio para bien, originan el efecto deseado y no disminuyen las prestaciones más allá de lo previsto.
1.- Fundamentos teóricos de la monitorización del sistema.
Juan se reune con Noiba, Naroba y Jana para explicarles que la monitorización de BK Sistemas Informáticos se realiza con la finalidad de garantizar que la configuración establecida es en todo momento la más adecuada.
Juan, supongo que con esta monitorización se pueden analizar diversos parámetros del sistema y establecer un compromiso entre ellos de forma que puedan convivir. ¿Que elementos permite analizar esta monitorización del sistema?
Buena pregunta Noiba, la monitorización nos permite analizar los puntos críticos del sistema y, de acuerdo con los fundamentos teóricos de diseño y evaluación de configuraciones, establecer el patrón más óptimo para el sistema.
El concepto de sistema no debe aplicarse de forma exclusiva a un único equipo o a una red local. En esencia, un sistema es un conjunto de entidades que interactúan entre sí para transformar unos elementos en otros.
Parece evidente pensar entonces que "todo es un sistema". Y así es. En realidad un sistema puede englobar a su vez otros sistemas (llamados subsistemas) y estos a su vez otros,…y así sucesivamente.
Por otro lado, las relaciones entre los sistemas, que constituyen uno de los principales pilares en la llamada Teoría de sistemas, son muy diversas incluso entre aquellos de una misma naturaleza. Pensemos en las personas como sistemas integrantes de otro sistema (la sociedad, por ejemplo): cada uno se relaciona con otro de una determinada manera.
En cualquier sistema se busca obtener el máximo rendimiento utilizando el menor número de recursos posible. Esta situación se llama "optimización del sistema" y, aunque no siempre es posible, es el fin en sí de un sistema. Es decir, buscamos sistemas óptimos o eficientes.
Para saber cuándo un sistema es óptimo habrá que conocer dos datos:
Cuál es el rendimiento máximo de cada elemento por separado.
Cómo afecta el comportamiento de cada elemento al sistema.
El primer dato puede conocerse a través de las especificaciones del fabricante pero el segundo dato es tremendamente subjetivo y dependiente no sólo del resto de los elementos del sistema sino también de sus relaciones.
Parece evidente pensar que la única forma de conocer el máximo rendimiento de un sistema es ponerlo al límite. No obstante, esta solución no es viable ya que en el intento podríamos no sólo dañar partes del sistema sino inutilizar el sistema por completo. En definitiva, habrá que obtener una estimación de este valor.
Para medir las magnitudes que influyen en el rendimiento del sistema se hace uso de una herramienta llamada monitor. El monitor es una aplicación que tiene la capacidad de observar la actividad de un sistema mientras se ejecutan una serie de pruebas llamadas cargas. El monitor observa el comportamiento, recoge los datos de las pruebas, los analiza y presenta los resultados. El resultado de una medición será diferente en cada intento, ya que las condiciones en las que se efectúan las cargas no son idénticas, (motivo por el que se habla de monitorización y no de medición).
Una forma muy común de representar los resultados es a través de diagramas. De entre todos los modelos existentes destacamos, por su popularidad el diagrama de Kiviat. En este diagrama se miden varios parámetros de forma que se intercalan aquellos que deberán ofrecer valores máximos con aquellos que deberán ofrecer valores mínimos.
A través de estos gráficos es posible identificar cuellos de botella en el sistema y determinar qué elementos son mejorables. El gráfico que representa el estado ideal (óptimo) de un sistema recibe el nombre de estrella de Kiviat, por la forma que adopta.
Estrella en estado óptimo
Antonio López(Elaboración propia)
Flecha limitado por la E/S
Antonio López(Elaboración propia)
Iceberg limitado por la E/S
Antonio López(Elaboración propia)
Thresing. Saturado por paginación
Antonio López(Elaboración propia)
Fenómeno donde el rendimiento o la capacidad de un sistema es limitado por la actuación insuficiente de un elemento del mismo.
La monitorización del sistema consiste en realidad, en el control del comportamiento de sus objetos. A nivel de sistema operativo consideramos objeto, a un mecanismo estándar para identificar y utilizar un recurso del sistema. Los procesos se generan para representar procesos individuales, dispositivos físicos o secciones de memoria compartida.
El monitor del sistema agrupa los contadores en función del tipo de objeto. Así existe un conjunto de contadores para el procesador, otro para la memoria, otro para el disco duro, etc…
Ciertos tipos de objetos (y sus contadores) están presentes en todos los sistemas.
Del mismo modo, existen objetos y contadores que son específicos y sólo aparecen si la aplicación o el dispositivo están presenten y en ejecución en el sistema.
Cada objeto puede tener varias instancias; esto dependerá de la naturaleza de los componentes del sistema. Por ejemplo, en un equipo con varios discos duros el tipo de objeto disco duro tendrá una instancia por cada disco; en un sistema multiprocesador el objeto procesador tendrá una instancia por cada procesador del equipo, etc…
En el caso de objetos con varias instancias, cada una de ellas puede utilizarse (y, de hecho, se utiliza) en el mismo conjunto de contadores. El seguimiento de los resultados se hará igualmente a nivel de instancia.
Hay objetos como la memoria o el servidor que no tienen instancias.
Existen dos tipos de objetos muy relacionados:
Proceso: se crea al ejecutar un programa, un servicio o una orden.
Subproceso: es un objeto dentro de un proceso que ejecuta instrucciones del mismo. Permite la realización de operaciones concurrentes dentro de un proceso y hace posible el multiprocesamiento.
Cada subproceso en ejecución se identifica por una asociación con su proceso padre. Para que el proceso se establezca como finalizado deberán haberlo hecho todos sus subprocesos. En este aspecto, la ejecución de procesos se comporta como una pila.
Acciones de llamada y puesta en ejecución de un objeto o procedimiento en un sistema.
Sistema con dos o más procesadores que trabajan de forma cooperativa.
Dícese de la situación en la que dos o más elementos se ejecutan de forma simultánea y competitiva sobre un espacio común.
Estructura de datos en la que la salida de los elementos que la componen sigue el orden inverso al de entrada.
Laro, de forma periódica administro los equipos localmente. Una de las tareas que realizo es la de monitorizar el sistema para comprobar que los datos obtenidos a través de la red son fiables. Para llevar a cabo esta tarea ejecuto herramientas de monitorización propias para Windows y recojo los resultados para un posterior análisis. A partir de ahora también lo vas a hacer tú y Vindio.
De acuerdo Juan, pero ¿estas tareas de monitorización solo se hacen en Windows?
No, estas tareas se hacen en Windows, pero también en Linux.
Para llevar una monitorización eficiente del sistema se hace uso de los registros y alertas de rendimiento que pone a nuestra disposición el Monitor de rendimiento. Al respecto, estudiaremos los siguientes parámetros.
Registros de contador: proporcionan los datos de rendimiento de los contadores seleccionados cada vez que se cumple un determinado periodo de tiempo.
Registros de seguimiento: ofrecen información sobre el rendimiento de los contadores siempre que ocurra un determinado suceso relacionado.
Alertas: notifican que ha sucedido un evento o que se ha llegado a un determinado nivel de rendimiento. Las alertas pueden comunicarse mediante mensajes a través de la red o como archivos log. También se pueden configurar alertas para que inicien aplicaciones e incluso registros de rendimiento.
Para hacer uso de estos registros y alertas es necesario disponer de permiso tanto para crearlos como para ejecutarlos posteriormente. El administrador del sistema, por defecto, tiene estos permisos. Sin embargo, es posible que los usuarios no los tengan. En este caso el administrador, si lo considera oportuno, debería concedérselos individualmente o a través de la Directiva de Grupo.
Un aspecto importante a la hora de llevar a cabo la monitorización del sistema es el tratamiento que se hará de los archivos de registro. Estos archivos pueden crecer de tamaño rápidamente por lo que si se van a registrar datos durante mucho tiempo o si el caudal de datos es grande. Al respecto, habría que pensar en planificar la ubicación de estos datos, (en un volumen específico, en una unidad de red, etc.…).
Finalmente, recordar que cuanto más frecuente sea la actualización del registro, no sólo será mayor la cantidad de espacio que ocupe, sino también el tiempo que tiene ocupado el procesador, con las consecuencias que ello conlleva.
El entorno de Windows proporciona una serie de herramientas orientadas a la monitorización del sistema. Existen aplicaciones para este mismo propósito; sin embargo, para nuestro fin las que ofrece el sistema son suficientes.
A continuación hablaremos con más detalle de estas herramientas.
Tipo de archivo destinado a almacenar información sobre eventos originados durante la ejecución de un programa o proceso.
Parte del sistema operativo encargada de proporcionar contadores para la medición de su rendimiento.
Parte del sistema operativo encargada de proporcionar contadores para la medición de su rendimiento.
Tipo de archivo destinado a almacenar información sobre eventos originados durante la ejecución de un programa o proceso.
El Administrador de tareas es una herramienta del sistema operativo que nos muestra los programas, procesos y servicios que están en ese momento en ejecución.
Podemos abrir el administrador de tareas de cualquiera de las siguientes maneras:
Clic derecho en una zona libre de la barra de tareas y seleccionar la opción "Administrador de tareas".
Ejecutando la combinación de teclas Ctrl+Mayúsc+Esc.
Botón derecho en el menú de Inicio y seleccionar "Administrador de tareas".
Las principales cualidades de esta herramienta son:
Supervisa el rendimiento del sistema (CPU, Memoria, Disco y Ethernet).
Permite gestionar los programas y los procesos abiertos.
Historial de aplicaciones, nos permite ver una lista de aplicaciones utilizadas en una determinada fecha, cuánto tiempo de CPU han consumido, así como cuántos megabytes en la red.
Inicio, nos muestra una lista de las aplicaciones que pueden habilitarse al iniciar el equipo.
Usuarios, nos muestra los usuarios que tienen sesión abierta en el equipo y su estado.
Detalles, nos muestra información detallada de los proceso y aplicaciones en ejecución, así como una descripción de cada uno de ellos.
Servicios, muestra una lista de los servicios disponibles en el sistema. Aquí podremos iniciar o detener un servicio si es necesario.
El uso que se está haciendo de la red es escaso o nulo.
Windows(Elaboración propia)El uso de la red es regular pero bajo. Esquema típico de uso de Internet.Windows(Elaboración propia)
El uso que se está haciendo de la red es medio/alto. Esquema típico de transferencias en red local o uso intensivo de Internet
Windows(Elaboración propia)
Muestra los usuarios conectados al equipo y permite comunicarse con ellos y desconectarlos.
El Visor de eventos es una herramienta del sistema operativo que muestra información detallada sobre sucesos importantes en el equipo.
El Visor es accesible desde una cuenta de usuario, pero no a todos los registros de eventos. Por este motivo es importante acceder a esta herramienta como Administrador.
Los registros de eventos son archivos especiales mediante los cuales se lleva un control de los sucesos acontecidos en un equipo, (inicios de sesión, errores de programas, etc.). Cada vez que se produce un suceso, el sistema lo almacena en el registro de eventos correspondiente y a través del Visor puede consultarse en cualquier momento.
Existen dos tipos de registros:
Registros de Windows: diseñados para almacenar eventos de aplicaciones y eventos que afectan a todo el sistema.
Eventos de aplicaciones: generados por los programas.
Eventos de seguridad: provocados por los cambios de seguridad o al producirse un fallo.
Eventos de instalación: producidos por la instalación del sistema operativo o sus componentes.
Eventos del sistema: relacionados con el comportamiento de los servicios del sistema operativo.
Eventos reenviados: se reciben en este registro, procedentes de otros equipos de la red.
Registros de aplicaciones y servicios: almacenan eventos de una única aplicación o componente.
Eventos administrativos: indican que hay un problema y cómo solucionarlo.
Eventos operativos: se emplean para analizar un problema o una condición.
Eventos analíticos: describen el funcionamiento de programas e indican problemas que el usuario no puede controlar.
Eventos depurativos: empleados por los programadores para solucionar problemas con programas.
Todos los eventos se clasifican, según su gravedad, en…
Crítico: es un error del que no puede autorecuperarse (por ejemplo, un error del sistema).
Error: es un problema importante (por ejemplo, pérdida de información).
Advertencia: es un problema potencial, (por ejemplo, un programa que requiere reiniciar para funcionar correctamente).
Información: notifica una operación finalizada correctamente (por ejemplo, la instalación de una impresora).
Una de las principales características del Visor es la capacidad para filtrar eventos. Al respecto, podemos crear un conjunto de reglas para obtener sólo los registros que nos interese. Estos filtros pueden guardarse como vistas personalizadas para utilizarlos en otra ocasión.
El Visor admite la supervisión de un equipo remoto. Sin embargo, en ocasiones es necesario recopilar información de varios equipos del sistema para sacar conclusiones. La suscripción ofrece la posibilidad de recoger diferentes eventos de cuantos equipos de la red precise para almacenarlos en modo local y estudiarlos. Cuando la suscripción está activa recibirá la información en tiempo real, tal y como si se tratara de un evento local.
El Monitor de confiabilidad es una herramienta que proporciona información cuantificada de los problemas y cambios en el hardware y software del equipo. Emplea un índice de estabilidad entre 1 (menos estable) y 10 (más estable) para ayudar a evaluar la confiabilidad del equipo. Cualquier modificación en el equipo afectará a dicho índice.
Para acceder al Monitor de confiabilidad, en el panel de búsqueda escribimos Panel de control, hacemos clic sobre Panel de Control→Sistema y seguridad, en el panel de búsqueda escribimos Monitor de confiabilidad y hacemos clic en Ver historial de confiabilidad. Se nos abre el monitor de confiabilidad.
La ventana de este monitor proporciona inicialmente información gráfica de todos los eventos del sistema. Se puede hacer clic sobre cualquier evento para ver sus detalles. A través del campo "Acción" de esos detalles obtenemos información adicional sobre el evento en cuestión. También se puede consultar la gráfica de días o semanas anteriores para ver los sucesos producidos así como la variación producida en el índice de estabilidad.
Otra opción interesante es la posibilidad de consultar todos los informes de problemas que se han producido en el equipo, que es una forma de filtrar eventos para ocuparnos sólo de aquellos que están originando fallos. Estos informes de problemas pueden remitirse a Microsoft para su análisis. El historial de confiabilidad se puede guardar para un posterior tratamiento. El Monitor permite su exportación en XML.
El Monitor no permite suscripciones, por lo que para consultar la confiabilidad de todos los equipos de la red será necesario acceder individualmente a ellos. Por suerte este acceso no tiene por qué ser físico. El Monitor de confiabilidad puede ser consultado de forma remota, lo cual simplifica considerablemente el procedimiento.
El Monitor de rendimiento se emplea para evaluar el modo en que los programas en ejecución afectan al rendimiento del equipo. Este estudio puede hacerse en tiempo real o mediante una recopilación de datos de registro y un análisis posterior.
Se puede acceder al Monitor de rendimiento, escribiendo en el panel de búsqueda Monitor de rendimiento y haciendo clic en el resultado que aparece, o escribiendo en el terminal la orden <b>perfmon</b>.
Los elementos básicos que utiliza el monitor son:
Contadores de rendimiento: informan en intervalos previamente definidos sobre el estado o la actividad del sistema. Pueden formar parte del sistema o de aplicaciones instaladas en él.
Datos de seguimiento de eventos: informan sobre una acción o evento en el sistema o en una aplicación. El componente que proporciona estos datos se denomina proveedor de seguimiento.
Información de configuración: reúne información de los valores de las claves del Registro del sistema.
Todos estos elementos se agrupan en conjuntos recopiladores de datos. El conjunto, una vez creado, puede usarse…
De forma individual, para revisar o registrar el rendimiento de los indicadores que contiene.
De forma conjunta, asociándolo con otros conjuntos recopiladores de datos.
Como una alerta, configurándolo para que salte cuando alcance un valor umbral.
Como supervisores de rendimiento de aplicaciones que no son de Microsoft.
Un aspecto interesante de los conjuntos recopiladores de datos, es la posibilidad de asociarles reglas de programación, de forma que puedan recopilar información en momentos determinados.
Tras la ejecución del conjunto recopilador el Monitor emite un informe con los resultados obtenidos. De entre todos los apartados que lo constituyen hay que prestar especial atención a las advertencias (indican posibles anomalías), los resultados de las pruebas (si han sido correctas o han provocado algún fallo) y la información general del rendimiento de los recursos (si están en los límites esperados).
Juan, como también disponemos de equipos que funcionan bajo un sistema operativo Linux, habrá que ejecutar las herramientas correspondientes para monitorizar en este entorno y recoger los resultados obtenidos para analizarlos conjuntamente con el resto de equipos del sistema.
Efectivamente Vindio, igual que hemos hecho con los ordenadores con Windows tenemos que hacer con los equipos en Linux.
Las herramientas que se utilizan para la monitorización en Linux podemos agruparlas de la siguiente manera:
Herramientas integradas: son herramientas propias del sistema, que existen en la gran mayoría de las distribuciones Linux de forma predeterminada.
Monitor del sistema: es una herramienta que permite monitorizar los procesos que se encuentran en ejecución en el sistema. Realmente se trata de una herramienta integrada pero la diferenciamos por sus características y su importancia.
Herramientas Sysstat: es una colección de herramientas de monitorización que, además de proporcionar datos de rendimiento en tiempo real permite almacenarlos como históricos para futuras referencias.
A continuación estudiaremos las herramientas más características para la monitorización en Linux.
3.1.- Monitorización a través de herramientas integradas.
La gran variedad de distribuciones Linux hace que el abanico de herramientas integradas disponibles para la monitorización, sea demasiado extenso. De entre todas ellas, por su importancia y presencia en la gran mayoría de las versiones, destacamos las siguientes:
uptime: monitoriza la carga del sistema. Presenta la hora del sistema, cuánto tiempo lleva operativo, el número de usuarios conectados y el valor medio de la carga en el último minuto, los últimos 5 minutos y los últimos 10 minutos.
time: monitoriza el tiempo de ejecución de un programa. Permite conocer cómo se ha distribuido el tiempo de ejecución de su código, en modo usuario y en modo supervisor.
top: monitoriza la actividad de los procesos. Visualiza los procesos que hay en ejecución y cuánta memoria consumen. Por defecto la información se actualiza cada 5 segundos pero puede personalizarse.
ps: monitoriza la actividad de los procesos. Muestra los procesos lanzados en el sistema por el usuario que ha ejecutado la orden.
vmstat: monitoriza la actividad de la memoria. Informa sobre el uso de la memoria física y virtual, de la actividad de intercambio entre la memoria y el disco, las transferencias, las interrupciones, los cambios de contexto y el uso del procesador.
free: monitoriza la actividad de la memoria. Informa sobre el uso de la memoria física y la swap.
who: monitoriza la actividad de los usuarios del sistema. Permite obtener información sobre los usuarios conectados al equipo y qué están haciendo.
El Monitor del sistema en Linux es el interfaz gráfico de la orden top vista anteriormente. Este interfaz viene instalada por defecto en la mayoría de las distribuciones y puede encontrarse pinchando en el botón Mostrar aplicaciones y escribimos en el cuadro de búsqueda Monitor del sistema. Si no estuviera, habría que instalarlo a través del paquete gnome-system-monitor, disponible en los repositorios oficiales.
La apariencia de este Monitor es muy similar al Administrador de tareas de Windows. Ofrece las siguientes opciones:
Procesos: contiene un listado con los procesos del sistema, su estado y la carga media de los últimos minutos. También se puede crear un filtro para mostrar sólo determinados procesos, como pueden ser los procesos activos o los procesos del usuario. Sobre los procesos pueden realizarse varias operaciones como, por ejemplo, cambiar su prioridad, ver su mapa de memoria o finalizarlo (también denominado matarlo).
Recursos: informa a través de gráficos dinámicos el uso de los principales recursos del sistema (el procesador, la memoria y la red). Es la forma más directa de monitorización. Esta pestaña permite ser personalizada.
Sistemas de archivos: muestra un listado con los sistemas de archivos montados y sus principales características (espacio libre, punto de montaje, etc).
Ubuntu(Elaboración propia)
A través del Monitor del sistema no sólo se puede ejercer una monitorización de los principales elementos del sistema sino que también se puede modificar su comportamiento. Esto se hace aplicando una configuración directamente sobre el Monitor. La opción de configurar está disponible en el Monitor pinchando en el botón con tres rayas (parte superior derecha), nos aparece un menú contextual donde una de sus opciones es preferencias. En preferencias se pueden modificar diferentes elementos de configuración de las pestañas Procesos, Recursos y Sistemas de archivos.
Ubuntu(Elaboración propia)
Herramientas de terceros
Podemos utilizar herramientas de terceros con las que podremos hacer lo mismo, aunque con estas se mostrará una información más avanzada o nos permitan visualizar unos datos parecidos, pero de forma más cómoda. Algunas de ellas son:
I-Nex: esta herramienta nos muestra toda la información de nuestro equipo. Nos enseñará los componentes de nuestro ordenador, como el microprocesador que utiliza hasta la temperatura en tiempo real, distribución que estamos usando y sus componentes.
Conky: es mas completa que la anterior. Nos crea en el escritorio un widget en el que se muestra toda la información que queramos. Si descargamos Conky Manager podremos configurarlo a nuestro gusto.
Netdat: un servicio de monitorización remota para Linux. Es muy potente y consume muy pocos recursos. Para acceder a la página oficial de Netdata pincha aquí.
Sysstat es un conjunto de herramientas orientadas a monitorizar el rendimiento de equipos con sistema operativo Linux. Al igual que sucede con las herramientas que hemos estudiado, tienen la capacidad de proporcionar información en tiempo real o de recopilarla para un posterior análisis. El paquete se llama sysstat y está disponible en los repositorios oficiales.
De todas las herramientas de que consta Sysstat, destacamos las siguientes:
mpstat: genera informes del rendimiento de cada procesador del sistema.
iostat: genera informes de la actividad de la CPU y de los dispositivos de E/S.
pidstat: genera informes de las tareas gestionadas por el kernel.
sar: recoge la información de rendimiento de todas las áreas del sistema (CPU, memoria, red,…).
sadf: permite exportar los datos recopilados por sar en diferentes formatos (XML, CVS,…).
Para poder recoger datos de forma periódica y guardarlos en ficheros históricos hay que editar el archivo <i>/etc/default/sysstat</i> y poner la variable ENABLED a "true".
A la hora de interpretar la información podemos hacer uso de isag, un programa con interfaz gráfico que se instala independiente de sysstat y que nos permite crear gráficas de la información recopilada que tenemos en los ficheros de rendimiento.
En los siguientes enlaces se proporciona información (en inglés) sobre la sintaxis de estas herramientas con las funciones de los principales operadores:
Materiales desarrollados inicialmente por el Ministerio de Educación, Cultura y Deporte y actualizados por el profesorado de la Junta de Andalucía bajo licencia Creative Commons BY-NC-SA.
Antes de cualquier uso leer detenidamente el siguenteAviso legal