Archivo de Autor

[SysAdmin] Herramientas de monitoreo en infraestructuras de TI

24 Mayo 2011

Definitivamente las herramientas de monitoreo nos facilitan la vida a los administradores de TI. Directamente nos permiten conocer el uso de los recursos en el tiempo, el estado de las aplicaciones o servicios, ver el estado actual de hardware y software entre otros. Indirectamente nos permite proyectar la adquisición de nuevos equipos o partes, prevenir futuros problemas, incluso solucionar problemas actuales.

Las herramientas de monitoreo cumplen objetivos generales como:

  • Alertar sobre problemas inminentes o actuales.
  • Tener una visión centralizada de los equipos, servicios, software, hardware, versiones.
  • Tener datos históricos de uso de recursos.
  • Mostrar gráficos, reportes, resúmenes que ayudan a sintetizar la información.

Estos objetivos permiten a los administradores de TI realizar tareas como:

  • Prevenir posible problemas futuros relacionados con falta de recursos por aumento de carga o uso.
  • Resolver problemas inminentes con avisos y alertas pertinentes antes que el problema sea alertado por los usuarios finales.
  • Estimar presupuestos para adquisiciones de software/hardware brindando datos históricos para sustentar la inversión.
  • Realizar mejoras y optimizaciones en el uso de los recursos.
  • Prevenir fallas de seguridad.
  • Reforzar los puntos débiles de la infraestructura, ya sea hardware, software o servicios.

En esta ocasión describiremos tres herramientas de monitoreo que cubren diferentes funcionalidades y permiten tener una vista integral de la infraestructura de TI.

Munin

Esta herramienta permite tener una recopilación gráfica de como ha evolucionado el uso de los recursos durante el tiempo.

Características

  • Cuenta con una interfaz web que muestra la evolución histórica del uso de recursos durante el tiempo.
  • Munin monitorea el uso de recurso de cada máquina, recursos como disco, red, uso de CPU, RAM, Carga (load).
  • También es capaz de monitorear indicadores de algunas aplicaciones como tamaño de cola de postfix, procesos de apache, consultas de mysql entre otras.
  • Genera gráficas por día, semana, mes y año de cada uno de los indicadores.
  • Muestra el mínimo, máximo, media y valor actual los indicadores en cada periodo de tiempo.
  • Es posible configurar umbrales de alerta para estado de advertencia y crítico.
  • El servidor corre sobre Linux, el agente corre sobre Linux y Windows (con algunas limitaciones).

Beneficios

  • Permite determinar con anticipación cuando un recurso estará sobre utilizado o será insuficiente. Por ejemplo permite anticipar la compra de discos duros antes que estos estén llenos.
  • Permite monitorear errores o generar mejoras. Por ejemplo permite detectar errores de red que pueden ser causados por la alta carga del servidor.
  • Permite medir cuantitativamente el crecimiento del uso de los recursos, de esta manera es posible sustentar compra de hardware o medir el crecimiento.

Nagios

El principal objetivo de esta herramienta es sensar el estado de aplicaciones mediante escaneo de puertos, ejecución de comandos o la ejecución de cualquier prueba que pueda determinar si un servicio está corriendo correctamente (peticiones http o consultas sql por ejemplo).

Características

  • Para establecer un sensor se siguen los siguientes pasos:
    • Determinar el servidor que va a ser sensado.
    • Determinar el tipo de sensor (HTTP, TCP, SMTP, SQL, etc).
    • Establecer los umbrales de alerta y crítico. (Por ejemplo tiempo de respuesta mayor a X segundos o más de Y correos en la cola de correo).
    • Establecer el tipo de alerta (normalmente correo) y el contacto (persona o servicio al que llega la alerta).
  • La herramienta cuenta con una interfaz web que muestra el estado de los diferentes servidores y servicios.
  • Los posibles estados son desconocido, correcto, advertencia y crítico.
  • Permite establecer diferentes niveles de alerta o escalamiento. Diferentes niveles de alerta pueden llegar a diferentes contactos.
  • Es posible establecer diferentes alertas según periodos de tiempo (horas laborales, días laborales, fines de semana, madrugada, etc)
  • Permite establecer modelos (templates) de tipos de servidores (servidores remotos o locales, servidores o desktops, servidores o equipos de red) o tipos de servicios (servicios críticos o no críticos, servicios locales o remotos, etc) según este modelo es posible establecer diferentes frecuencias de muestreo, contactos de alertas, umbral de falla, etc.
  • Una de las características que me parece más resaltante de Nagios es la facilidad para crear nuevos sensores y otros comandos. Es posible crear un sensor virtualmente para cualquier tipo de servicio. Además es posible crear un comando personalizado para el envío de alertas utilizando algún medio alternativo (VoIP, mensajería instantánea, etc).
  • El sensado puede ser de 3 tipos:
    • Activo, el servidor inicia la prueba, por ejemplo el servidor solicita una página http.
    • Remoto, el servidor inicia la prueba, pero esta se ejecuta un agente remoto. Por ejemplo ejecutar un comando remoto para saber cuantos procesos se están ejecutando en otro servidor.
    • Pasivo: el servidor nagios recibe el estado de otro servidor, en este caso no inicia la prueba y no tiene control de la frecuencia de ejecución.
  • Permite programar los tiempos de inoperatividad con anticipación para evitar el envío innecesario de alertas.

Beneficios

  • Permite tener un control exhaustivo del estado de los servicios de los diferentes servidores de manera centralizada.
  • Permite realizar pruebas sobre infinidad de servicios.
  • Permite ejecutar alertas según el tipo de evento.
  • Permite detectar los problemas antes que causen daños mayores.

OCSInventory

Este programa sencillo pero muy útil permite tener un inventario centralizado de software y hardware.

Características

  • Interfaz web que muestra el listado de servidores o computadoras. El listado puede ser ordenado por cualquier columna y es posible agregar o quitar columnas según la necesidad.
  • La interfaz web muestra el detalle de cada servidor incluyendo:
    • Hardware: CPU, RAM, red, placa madre, video, sonido, entre otros.
    • Software: Sistema operativo, programas instalados.
    • Versión de BIOS
    • Detalles de red o redes activas
  • Cuenta con una funcionalidad de búsqueda que permite filtrar datos como programas instalados, memoria RAM, redes, entre otros.
  • Permite agrupar los servidores por diferentes criterios (similar a la búsqueda).
  • El agente debe ser instalado y configurado en cada servidor o computadora a ser inventariada.
  • El instalador del agente se encuentra disponible para Windows y Linux.

Beneficios

  • Permite tener una vista centralizada de los servidores y computadores de escritorio.
  • Facilita la tarea de mantenimiento y renovación de hardware.
  • Facilita la detección de software no autorizado.
  • Facilita la prevención de ataques de seguridad brindando detalle de las versiones de los programas instalados en cada computador.

Listado de máquinas

Búsqueda por Software

¿Cuál usar?

En un ambiente de producción, el uso de todas estas herramientas es casi necesario. Son herramientas complementarias que además se pueden integrar entre sí. Por ejemplo, Munin y Nagios se pueden integrar para que el primero reporte al segundo en forma relativamente sencilla. La fortaleza del Munin es poder contar con reportes de uso de recursos en el tiempo, mientras que la de Nagios es la de reportar alertas no sólo respecto a recursos si no a disponibilidad de servicios (por su flexibilidad).

Enlaces

SSH Master Password

4 Diciembre 2010

Introducción

SSH Master Password es una idea que surge del problema de tener que memorizar o apuntar la contraseña de varios servidores. El tener las contraseñas apuntadas en un block de notas o en un correo electrónico resulta pesado e inseguro.

El problema

Estos scripts cubren los siguientes problemas:

  • No escribir la contraseña de cada servidor para poder loguearse: Almacena los usuarios, dirección de servidor y contraseñas en un archivo de configuración.
  • Tener las contraseñas en texto plano: Las contraseñas están encriptadas.
  • Memorizar múltiples contraseñas: Las contraseñas son encriptadas con una o varias llaves.
  • Restricción para usar una llave ssh previamente compartida.

Dependencias

Los scripts tienen las siguientes dependencias:

  • Expect: Permite interactuar automáticamente con el programa ssh.
  • OpenSSL: Encripta y desencripta las contraseñas.

Expect Script masterssh

#!/usr/bin/expect -f
set user [lrange $argv 0 0]
set alias [lrange $argv 1 1]
set mypassword [exec getfrommasterpassword.sh $alias $user]
set host [lindex $mypassword 0]
set password [lindex $mypassword 1]
set timeout -1
match_max 100000
spawn /usr/bin/ssh $user@$host
expect {
        "yes?no" {
                send -- "yes\r"
                exp_continue
        }
        "password" {
                send -- "$password\r"
        }
}
send -- "\r"
interact

Script getfrommasterpassword.sh

#!/bin/bash
cd `dirname "$0"`
HOST_ALIAS=$1
HOSTS_FILE=${3:-"~/.passwords.txt"}
USERNAME=${2:-"root"}
LINEMATCH=$(egrep "^$HOST_ALIAS " "$HOSTS_FILE" | grep "$USERNAME")
HOST=$(echo $LINEMATCH | awk '{print $3}')
PASSWORD=$(echo $LINEMATCH | awk '{print $4}')
PASSWORD=$(echo "$PASSWORD"|openssl des -d -a )
echo $HOST $PASSWORD

Ejmplo passwords.txt

#alias usuario ip/hostname PasswordEncriptado
servidor1 root 192.168.100.1 U2FsdGVkX1/N1E4jydOhGb9S8KXBuhocQnE1PD5ddAM=
servidor2 root 192.168.100.2 U2FsdGVkX1+AaGic90We22DzNfb2HJRll2xlWPsvbuA=
servidor3 otro nomb.comp.com U2FsdGVkX1+BZ90Go6zEOcgKnjUylJXvwAu9W/QjulI=

Encriptar las contraseñas

Para encriptar el password que se usa en un servidor (<MIPASSWORD>) con la llave <MILLAVE>, bastará ejecutar en la línea de comando:

openssl des -e -a -A -k "<MILLAVE>" <<< "<MIPASSWORD>"

El output de ese comando es <MIPASSWORD> encriptado, y es el que se usa en el archivo de passwords.

Instalación y uso

  • Crear los dos scripts en ~/bin/
  • Crear y modificar el archivo ~/.passwords.txt con las contraseñas encriptadas.
  • Uso: masterssh <USUARIO> <ALIAS>
  • Nota: <USUARIO> y <ALIAS> deben existir en el archivo de passwords.

Virtualización en Linux: Comparando VMWare, VirtualBox y Xen

23 Junio 2010

El artículo de hoy es resultado de las investigaciones realizadas por el área de Infraestructura de Tecnologías de Información de Antartec en los últimos meses. No constituye una comparación cuantitativa de rendimiento de soluciones de virtualización; sin embargo constituye una primera aproximación a las tecnologías de virtualización, muy en boga hoy en día.

Captura de VirtualBox ejecutando Windows XP en Ubuntu

Algunas notas iniciales sobre Virtualización

Hoy en día los equipos de cómputo y sus componentes son cada vez menos costosos, por lo cual resulta más fácil para una persona u organización considerar la adquisición de varias máquinas para cubrir variedad de requerimientos de sistemas informáticos, tales como:

  • Utilizar programas que corren sobre diferentes sistemas operativos o utilizan los mismos puertos de comunicación
  • Implantar aplicaciones que utilizan diferentes versiones de las mismas librerías, programas adicionales o versiones diferentes de sistema operativo
  • Brindar a un usuario permisos de administrador sobre el sistema operativo, pero sin posibilidad de modificar programas que no le corresponde
  • Reiniciar o modificar la configuración del sistema operativo sin afectar a los otros sistemas
  • O simplemente tener un orden específico en las instalaciones de sistemas que realizamos

» Leer más: Virtualización en Linux: Comparando VMWare, VirtualBox y Xen