martes, 22 de septiembre de 2009

VBoxGuestAdditions para Debian

Es muy útil instalar VBoxGuestAdditions (cliente de virtual box para máquinas virtuales) en las máquinas virtuales que tengas corriendo en un servidor de VirtualBox. Así facilitarás la comunicación entre el Kernel de la máquina virtual y el servidor de máquinas virtuales.

Para instalarlo lo primero que tenemos que hacer es comprobar el Kernel que estamos utilizando en la máquina virtualizada. Para ello ejecutamos:
# uname -a
Linux Debian5Nagios 2.6.26-2-686 #1 SMP Thu Mar 26 01:08:11 UTC 2009 i686 GNU/Linux

Una vez sabemos el Kernel que estamos utilizando ejecutaremos el script correspondiente, en nuestro caso:
# ./VBoxLinuxAdditions-x86.run

Es posible que obtengamos el siguiente error:
Verifying archive integrity... All good.
Uncompressing VirtualBox 2.2.2 Guest Additions for Linux installation.................................................................
VirtualBox 2.2.2 Guest Additions installation
Please install the build and header files for your current Linux kernel.
The current kernel version is 2.6.26-2-686
This system does not seem to have support for OpenGL direct rendering.
VirtualBox requires Linux 2.6.27 or later for this. Please see the log
file /var/log/vboxadd-install.log if your guest uses Linux 2.6.27 and you still see this message.
Problems were found which would prevent the Guest Additions from installing.
Please correct these problems and try again.

Esto es porque necesitas las cabeceras del Kernel para poder compilar un modulo, para instalar las cabeceras de nuestro Kernel: (RECUERDA QUE TENDRÁS QUE INSTALAR LAS CABECERAS DEL KERNEL QUE ESTÉS UTILIZANDO)
# aptitude install linux-headers-2.6-686
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Leyendo la información de estado extendido
Inicializando el estado de los paquetes... Hecho
Leyendo las descripciones de las tareas... Hecho
Se instalarán los siguiente paquetes NUEVOS:
cpp-4.1{a} gcc-4.1{a} gcc-4.1-base{a} linux-headers-2.6-686 linux-headers-2.6.26-2-686{a}
linux-headers-2.6.26-2-common{a} linux-kbuild-2.6.26{a}
0 paquetes actualizados, 7 nuevos instalados, 0 para eliminar y 0 sin actualizar.
Necesito descargar 7254kB de ficheros. Después de desempaquetar se usarán 41,3MB.
¿Quiere continuar? [Y/n/?]
Escribiendo información de estado extendido... Hecho
Des:1 http://ftp.rediris.es lenny/main gcc-4.1-base 4.1.2-25 [207kB]
Des:2 http://ftp.rediris.es lenny/main cpp-4.1 4.1.2-25 [2317kB]
Des:3 http://ftp.rediris.es lenny/main gcc-4.1 4.1.2-25 [417kB]
Des:4 http://ftp.rediris.es lenny/main linux-headers-2.6.26-2-common 2.6.26-19 [3718kB]
Des:5 http://ftp.rediris.es lenny/main linux-kbuild-2.6.26 2.6.26-3 [194kB]
Des:6 http://ftp.rediris.es lenny/main linux-headers-2.6.26-2-686 2.6.26-19 [398kB]
Des:7 http://ftp.rediris.es lenny/main linux-headers-2.6-686 2.6.26+17+lenny1 [2474B]
Descargados 7254kB en 10s (699kB/s).
Seleccionando el paquete gcc-4.1-base previamente no seleccionado.
(Leyendo la base de datos ...
29434 ficheros y directorios instalados actualmente.)
Desempaquetando gcc-4.1-base (de .../gcc-4.1-base_4.1.2-25_i386.deb) ...
Seleccionando el paquete cpp-4.1 previamente no seleccionado.
Desempaquetando cpp-4.1 (de .../cpp-4.1_4.1.2-25_i386.deb) ...
Seleccionando el paquete gcc-4.1 previamente no seleccionado.
Desempaquetando gcc-4.1 (de .../gcc-4.1_4.1.2-25_i386.deb) ...
Seleccionando el paquete linux-headers-2.6.26-2-common previamente no seleccionado.
Desempaquetando linux-headers-2.6.26-2-common (de .../linux-headers-2.6.26-2-common_2.6.26-19_i386.deb) ...
Seleccionando el paquete linux-kbuild-2.6.26 previamente no seleccionado.
Desempaquetando linux-kbuild-2.6.26 (de .../linux-kbuild-2.6.26_2.6.26-3_i386.deb) ...
Seleccionando el paquete linux-headers-2.6.26-2-686 previamente no seleccionado.
Desempaquetando linux-headers-2.6.26-2-686 (de .../linux-headers-2.6.26-2-686_2.6.26-19_i386.deb) ...
Seleccionando el paquete linux-headers-2.6-686 previamente no seleccionado.
Desempaquetando linux-headers-2.6-686 (de .../linux-headers-2.6-686_2.6.26+17+lenny1_i386.deb) ...
Procesando disparadores para man-db ...
Configurando gcc-4.1-base (4.1.2-25) ...
Configurando cpp-4.1 (4.1.2-25) ...
Configurando gcc-4.1 (4.1.2-25) ...
Configurando linux-headers-2.6.26-2-common (2.6.26-19) ...
Configurando linux-kbuild-2.6.26 (2.6.26-3) ...
Configurando linux-headers-2.6.26-2-686 (2.6.26-19) ...
Configurando linux-headers-2.6-686 (2.6.26+17+lenny1) ...
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Leyendo la información de estado extendido
Inicializando el estado de los paquetes... Hecho
Escribiendo información de estado extendido... Hecho
Leyendo las descripciones de las tareas... Hecho

Una vez instaladas las cabeceras correspondientes a tu Kernel, no tendrías que tener ningún error al ejecutar:
# ./VBoxLinuxAdditions-x86.run
Verifying archive integrity... All good.
Uncompressing VirtualBox 2.2.2 Guest Additions for Linux installation.......................................................................
VirtualBox 2.2.2 Guest Additions installation
This system does not seem to have support for OpenGL direct rendering.
VirtualBox requires Linux 2.6.27 or later for this. Please see the log
file /var/log/vboxadd-install.log if your guest uses Linux 2.6.27 and you still see this message.
Building the VirtualBox Guest Additions kernel module...
Building the shared folder support kernel module...
Installing the VirtualBox Guest Additions...

Could not find X.org or XFree86 on the guest system. The X Window drivers
will not be installed.

Y después de reiniciar la máquina virtual y ejecutar un "# ps aux", podrás ver un proceso correspondiente al modulo recién compilado.
/usr/sbin/vboxadd-timesync --daemonize

Ahora el Kernel de tu máquina virtual Debian se comunicará más fácilmente con el Kernel de tu máquina servidora de máquinas virtuales.

miércoles, 2 de septiembre de 2009

Respuesta a Claudio Aliste sobre Nagios

No es ninguna molestia contestar un correo de alguien que necesite mi ayuda. No soy un gran experto en el tema, pero conseguí montarlo después de muchas pruebas.

Sinceramente no recuerdo exactamente como llegué a configurarlo, ahora mi vida profesional ha tomado otro rumbo, orientándose más al análisis de información (BI) y tengo un poco olvidado el tema de la administración de servidores. Pero aún mantengo el servidor Nagios que monté hace más de un año para mantener vigilados unos 50 servidores.

Veo en el servidor que la configuración de Nagios se hace desde /usr/local/nagios/etc, ahí deberás encontrar los ficheros que necesitas para configurarlos.

Te adjunto la salida de un tree de mi directorio /usr/local/nagios/etc.
Debian5Nagios:/usr/local/nagios/etc# tree
.
|-- cgi.cfg
|-- htpasswd.users
|-- nagios.cfg
|-- nrpe.cfg
|-- objects
| |-- commands.cfg
| |-- contacts.cfg
| |-- localhost.cfg
| |-- localhost.cfg.original
| |-- printer.cfg
| |-- switch.cfg
| |-- templates.cfg
| |-- timeperiods.cfg
| `-- windows.cfg
|-- resource.cfg
`-- servers
|-- asd
| |-- hostgroup.cfg
| `-- nahor.cfg
|-- dsa
| |-- dabih.cfg
| `-- hostgroup.cfg
...

El resultado es mayor, porque dentro del directorio servers tengo un montón de directorios (uno por cada cliente) y dentro los ficheros de configuración de cada uno de los servidores correspondientes. Es una buena forma de organizar Nagios:
/usr/local/nagios/etc/servers/cliente1/servidor11.cfg
/usr/local/nagios/etc/servers/cliente1/servidor12.cfg

/usr/local/nagios/etc/servers/cliente2/servidor21.cfg
/usr/local/nagios/etc/servers/cliente2/servidor22.cfg
/usr/local/nagios/etc/servers/cliente2/servidor23.cfg

Tendrás que editar el fichero /usr/local/nagios/etc/nagios.cfg y descomentar la linea "cfg_dir=/usr/local/nagios/etc/servers" (para descomentarla quitale la # que tiene al principio), así te cogerá todos los .cfg que crees en /usr/local/nagios/etc/servers/*

Te adjunto el fichero de configuración de un servidor en concreto, este se llama nahor y Nagios monitoriza algunos de los servicios más basicos (ping, http y ssh).
Debian5Nagios:/usr/local/nagios/etc# cat servers/aic/nahor.cfg
# Define a host for the local machine

define host{
host_name nahor
alias nahor
address DIRECCION DEL SERVIDOR
parents internet
check_command check-host-alive
check_interval 5
retry_interval 1
max_check_attempts 5
check_period 24x7
process_perf_data 0
retain_nonstatus_information 0
# contact_groups router-admins
notification_interval 30
notification_period 24x7
notification_options d,u,r
icon_image firewall.gif
statusmap_image firewall.gd2
}

# Define a service to "ping" the local machine

define service{
use local-service ; Name of service template to use
host_name nahor
service_description PING
check_command check_ping!100.0,20%!500.0,60%
}

define service{
use local-service ; Name of service template to use
host_name nahor
service_description HTTP
check_command check_http
notifications_enabled 0
}

define service{
use local-service ; Name of service template to use
host_name nahor
service_description SSH
check_command check_ssh
notifications_enabled 0
}

Además dentro de cada cliente yo he creado un hostgroup.cfg como podrás ver en la salida del "tree". Esto es porque todos los servidores tienen que pertenecer a un grupo.

En este caso el cliente "asd" solo tiene un servidor al que monitorizar. Esta es la salida de su
hostgroup.cfg.
define hostgroup{
hostgroup_name asd ; The name of the hostgroup
alias ada ; Long name of the group
members nahor ; Comma separated list of hosts that belong to this group
}

Para verificar que toda tu configuración sea correcta, tendrás que ejecutar el comando:
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

Y en una de las lineas te tiene que decir "Total Errors: 0" cuando tengas esto haz un restart del servicio nagios y todo tiene que funcionar correctamente.

Espero que mi información te sea de ayuda.
Un saludo.