Tecnoquia: Mi proyecto personal

Algunos de los que leeis este blog, quizás no sepais qué significa la palabra Tecnoquia. La palabra tecnoquia la inventó Juanjo Vidal y la tenía apuntada en una lista de nombres candidatos para posibles proyectos o empresas. Según me contó Raúl Sánchez, solían llevar un registro de los nombres chulos que se les ocurrían estando trabajando o de copas, para cuando los necesitaran para algún proyecto. Siempre me pareció una muy buena idea romántica y respetuosa con el futuro que nos ha de venir, ya que el nombre con el que bautizamos las cosas es determinante: Si no te engancha desde el principio nunca puede funcionar, e incluso enganchando, no es garantía de que vaya a llegar abien, pero eso ea es de otra historia, y no toca hoy.
Así que Raúl me animó a que le escribiera a Juanjo y que me regalara alguno de ellos. Estuve semanas intentándolo por mi cuenta, buscando palabros que me sonaran bien y me engancharan, en diferentes idiomas. A parte de sonarme bien, tenían que tener el dominio libre, y tener pocas entradas en google, cuando buscáramos la palabra. Al final, seguí el consejo de Raúl. y le pedí alguno de los nombres que tenía reservados Juanjo. De todos los nombres que me envió, finalmente me convenció tecnoquia. Estas fueron sus palabras:

Jugando con el griego... me invento un palabro. teknos- y -quía, o lo que es lo mismo técnica/arte y poder. De ahí sacamos palabras como monar-quía (poder de uno), oligar-quía (poder de unos pocos), y en nuestro caso poder de la técnica. El .com está libre de momento.

La explicación me convenció, pero lo importante era que el nombre cumplía todos mis requisitos: me quedé con ella. Todo esto ocurrió durante las semanas que dejaba mi trabajo en la administración pública como funcionario y empezaba la locura de trabajar como profesional autónomo, y lanzarme al río contra corriente: así que la palabra me ha acompañado desde entonces y, dado que en blog voy anontando apuntes técnicos sobre mi trabajo como ingeniero de servicios basados en software libre, y tonterías de mi vida personal, porque no termino de acostumbrarme a usar facebook o twitter, la asocio ya a mi proyecto personal.

Este año me había propuesto entre otras cosas, ir cambiando el aspecto del blog. Llevo casi dos años recopilando información de esto me gusta, esto no, este color, este logo, como este blog, esta fuente, esta estructura, este no se qué... un rollo que no termino de cuajar... y como he aprendido durante este tiempo y yo mismo recomiendo a mis clientes: No hay que saber ni aprender hacer todo, basta con subcontratar a la persona que sepa hacerlo. Después de perder varios días de mis vacaciones a ratos intentándolo con InkScape, usando a mi sobrino Fran a ver si me daba ideas nuevas, etc... tuve que subcontratar, y como hoy día todo se subcontrata a Asia, mientras que preparamos y acondicionamos África, eso hice yo: encargarle este trabajo a LutFi Sahid un diseñador de indonesia que finalmente me cobró 150$ USD vía PayPal. Bueno, pues este el resultado del que quedé muy satifecho.


Para el diseño, como tenía ya mucha información de lo que me gustaba y lo que no, rellené todos los campos del formulario y le envié un correo con los links a los logos que me inspiraban y representaban la combinación tecnica + conocimiento (mejor conocimiento que poder, aunque ya se sabe que la información-conocimiento es poder), que quería para el logo.
Tecnoquia is an invented word, which could be translated as knowledge about technology.
Always thought in a logo appearing brain and chip (or electronic circuit), like this: http://www.freshbrain.org.

Other similar logos could be:
http://eserrano.com/logos/.../geek-brain-logo.gif
http://cbcl.mit.edu/.../brain-logo-2.jpg
http://www.designoutpost.com/forums/attachment.php?...1
http://www.designoutpost.com/forums/attachment.php?...2
http://www.thelogofactory.com/.../EGlogo-contest-brain2.jpg

Pasados un par de días LutFi me envió una primera prueba, que retocamos, pero que prácticamente era el definitivo. Me gustó. La explicación que me dió para el diseño fue la siguiente:
The main concept I use in this design is clean, excel, and modern.
I took brain and loop shape line form as base for design.
Brain is main part of our body, it's looping giving command to our human body parts to work precisely.
It's also symbol of knowledge.
Any brilliant ideas came from our mind (brain). I use rising star to reflect this ideas.

Color I use;
- Light blue which is associated with health, healing, tranquility, understanding, and softness. It is often associated with depth and stability.
- Light Green is the color of nature. It symbolizes growth, harmony, freshness, and fertility.It has strong emotional correspondence with safety. Green has great healing power. It is the most restful color for the human eye; it can improve vision. Green suggests stability and endurance.
- Golden yellow is associated with joy, happiness, intellect, and energy. Iillumination, wisdom, and wealth. Gold symbolizes valuable and high quality.

Bueno, pues ya tengo un logo ... y un nombre. Gracias Juanjo y Raúl. Que sepais que todavía no os he pagado la copa (creo que será un cena) por la palabra que regalasteis.

Etiquetadas las fotos del viaje a Canarias


Por fín he sacado tiempo para etiquetar las fotos de mi viaje a Canarias y subirlas al album de casa. Como siempre, las fotos están hechas con la cámara del móvil y son de una calidad bastante pobre. pero prefiero ir ligero de equipaje a tener que parecer el inspector gadget cargado de cámara, portátil, netbook (que aún no tengo), el móvil, el reproductor de música y demás cacharros que nos han digitalizado la vida. Cuando cambie de móvil intentaré que tenga una cámara mejor ... o no :).

Monitorizar servidores Apache con Cacti

Continuando con la serie de posts dedicados a Cacti, en este post veremos cómo podemos monitorizar servidores Web Apache con ayuda de Cacti. Para ello, nos basaremos en el post http://forums.cacti.net/about9861.html.

  1. Descargar el fichero ws_apachestats.pl.gz, descomprimirlo y copiar el script ws_apachestats.pl al directorio los scrips, de nuestro servidor cacti.
    scp ws_apachestats.pl  root@SERVIDOR_CACTI:/var/www/cacti/scripts/
  2. Ahora, descargar el fichero cacti087b_host_template_webserver_-_apache.xml. Abrir la consola de Cacti como administrador, e importarla (Import Templates)
  3. Cconectarnos al servidor Apache que queremos monitorizar, y asegurarnos de que tenemos descomentada la sección server-status, y que permitimos a nuestro servidor Cacti acceder al recurso.
     ExtendedStatus On
    <Location /server-status>
    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from 192.168.
    </Location>
    Cuando lo configuremos, tendremos que reiniciar el servicio Apache. Podremos comprobar que está accesible, accediendo a http://Servidor/server-status. Tendremos que ver una pagina
Una vez lo hayamos hecho, ir a un servidor que ya tengamos dado de alta (y si no, dar de alta un nuevo Device). Luego, ya en la página de edición del dispositivo, dentro de la sección Associated Graph Templates, elegir WebServer - Apache Statistics - Bytes / Request en el apartado Add Graph Template. Luego pulsar el botón Add. Repetir el proceso para WebServer - Apache Statistics - CPU Load, WebServer - Apache Statistics - kBits / s, WebServer - Apache Statistics - Thread Details, WebServer - Apache Statistics - Thread Details (%) y WebServer - Apache Statistics - Thread Scoreboard.

Cuando lo hayamos hecho, hacer click en Create Graphs for this Host, y luego marcar todas las gráficas que hemos seleccionado, y luego el botón Create. Esperar unos minutos a que se recopilen valores y se pinte la gráfica.

La foto la he sacado del album de Medicinehorse7 en flickr

Monitorizando servidores Linux con Cacti

Siguiendo con la serie de entradas que hablan de Cacti, en este post veremos cómo podemos monitorizar un servidor Linux remoto, mediante Cacti con ayuda de snmp. Para ello, nos basaremos en la discusión http://forums.cacti.net/about11634.html que además de Linux, nos permitirá monitorizar servidores Solaris y HPUX.

  1. Lo primero será descargarnos el archivo cacti_templates-1.3.tar.gz con las plantillas. Acabado, lo descomprimiremos:
    tar -xzvf cacti-templates-1.3.tar.gz
  2. En nuestra consola de Cacti como administrador, hacer click en la opción de menú: Import Templates. Luego, hacer click en el botón examinar y buscar en el directorio local donde descomprimimos el fichero cacti-templates-1.3.tar.gz, para seleccionar el archivo cacti_templates/cacti_host_template__linux_host_ucdnetsnmp-1.3.xml y luego pulsar el botón Save.
  3. En la pantalla Import Results, pulsar el botón Save del final de la ventana.
  4. Ahora, del post http://forums.cacti.net/post-156897.html descargaremos el archivo tcp_stats.zip que nos permitirá monitorizar el estado de las conexiones TCP/IP del equipo. Descomprimir el archivo ejecutando:
    unzip tcp_stats.zip 
  5. De nuevo, ir a la consola de Cacti como administrador y en la opción Import Templates, importar la plantilla: tcp_stats/cacti_graph_template_snmp_-_zing_tcp_stats.xml.
  6. Ahora, nos conectaremos como root al equipo que queramos monitorizar y tendremos que instalar el servicio SNMP.
    • En Debian, ejecutaremos:
      apt-get install snmpd libsnmp10 snmp
      Luego modificaremos el fichero /etc/snmp/snmpd.conf para aplicar las siguientes diferencias:
      61,62c61,62
      < com2sec paranoid default public
      < #com2sec readonly default public
      ---
      > #com2sec paranoid default public
      > com2sec readonly default public
      109,110c109,113
      < syslocation Unknown (configure /etc/snmp/snmpd.local.conf)
      < syscontact Root <root@localhost> (configure /etc/snmp/snmpd.local.conf)
      ---
      > ## syslocation Unknown (configure /etc/snmp/snmpd.local.conf)
      > ## syscontact Root <root@localhost> (configure /etc/snmp/snmpd.local.conf)
      > syslocation CASA
      > syscontact Ignacio <mi_email@gmail.com>
      >
      144c147
      < #proc mountd
      ---
      > proc mountd
      150c153
      < #proc sendmail 10 1
      ---
      > proc sendmail 10 1
      259c262
      < #disk / 10000
      ---
      > disk / 10000
      288c291
      < #load 12 14 14
      ---
      > load 20 14 14
      Además, editaremos el fichero /etc/default/snmpd, y cambiaremos la 127.0.0.1 por 0.0.0.0 en las opciones SNMPDOPTS
    • En RHEL5, ejecutaremos:
      yum install net-snmp net-snmp-utils 
      Luego modificaremos el fichero /etc/snmp/snmpd.conf para aplicar las siguientes diferencias:
      41c41,43
      < com2sec notConfigUser default public
      ---
      > com2sec local localhost public
      > com2sec mynetwork 192.168.0.0/16 public
      >
      47,48c49,55
      < group notConfigGroup v1 notConfigUser
      < group notConfigGroup v2c notConfigUser
      ---
      > group MyRWGroup v1 local
      > group MyRWGroup v2c local
      > group MyRWGroup usm local
      > group MyROGroup v1 mynetwork
      > group MyROGroup v2c mynetwork
      > group MyROGroup usm mynetwork
      >
      55,56c62
      < view systemview included .1.3.6.1.2.1.1
      < view systemview included .1.3.6.1.2.1.25.1.1
      ---
      > view all included .1 80
      62c68,70
      < access notConfigGroup "" any noauth exact systemview none none
      ---
      > access MyROGroup "" any noauth exact all none none
      > access MyRWGroup "" any noauth exact all all none
      >
      162,163c170,171
      < syslocation Unknown (edit /etc/snmp/snmpd.conf)
      < syscontact Root <root@localhost> (configure /etc/snmp/snmp.local.conf)
      ---
      > syslocation CASA
      > syscontact Ignacio <mi_email@gmail.com>
      197c205
      < #proc mountd
      ---
      > proc mountd
      203c211
      < #proc sendmail 10 1
      ---
      > proc sendmail 10 1
      313c321
      < #disk / 10000
      ---
      > disk / 10000
      342c350
      < #load 12 14 14
      ---
      > load 20 14 14

De los paquetes que descargamos de internet tendremos que copiar al servidor linux que queramos monitorizar los scripts, y cambiarle los permisos:
scp tcp_stats/netstat.py  root@SERVIDOR:/usr/local/bin/
scp tcp_stats/netstat root@SERVIDOR:/etc/cron.d/

ssh root@SERVIDOR chmod 755 /usr/local/bin/netstat.py

Una vez hecho, editaremos el fichero /etc/snmp/snmpd.conf del servidor que queremos monitorizar y añadiremos el siguiente bloque al final del archivo:
# Monitorizar estado de las conexiones TCP/IP
pass .1.3.6.1.3.2 /usr/bin/python /usr/local/bin/netstat.py

Cuando terminemos, reiniciaremos el servicio snmpd: /etc/init.d/snmpd restart. Luego iremos a la consola de Cacti y crearemos una plantilla para servidores Linux, siguiendo los siguientes pasos:
  1. En la consola como Administrador, seleccionar en el panel izquierdo, Host Templates. Cuando refresque la ventana derecha, hacer click en Add.
  2. Cambiará el marco derecho. Escribir en el campo Name, el nombre que queramos tenga la plantilla, por ejemplo PLANTILLA_Servidor_Linux, y luego hacer click en el botón Create.
  3. Al hacerlo, se actualizará la pantalla y nos aparecerán dos nuevas secciones: Dentro de la sección Associated Graph Templates, en Add Graph Template seleccionaremos la opción SNMP - Zing TCP Stats y luego pulsaremos el botón Add. Repetiremos esto para las opciones: ucd 00 CPU Linux, ucd 01 Load Average, ucd 11 Swap, ucd 12 Detailled Memory y ucd 20 Processes .
  4. Luego en la sección Associated Data Queries, en el cuadro de selección Add Data Query, seleccionar ucd 00 Lan y luego pulsar el botón Add.
  5. Cuando hayamos terminado, pulsar el botón Save.

Ahora, añadiremos propiamente el servidor, iendo en el menú de la izquierda en la pestaña Console a Devices. Luego, en la parte derecha hacer click en Add. Rellenaremos los siguientes campos:
  • En Description, pondremos el nombre del servidor.
  • En Hostname, pondremos la dirección IP del servidor.
  • Y en Host Template, buscaremos y seleccionaremos la plantilla que acabamos de crear: PLANTILLA_Servidor_Linux.

Cuando hayamos terminado, pulsar el botón Create. Si en ese momento nos aparece un mensaje en rojo, indicándonos: Error: Passwords do not match, please retype., será porque tendremos en SNMP Version, la Versión3, el campo SNMP Password (v3) relleno. Borrar este campo y volver a crear el host. Cuando lo hayamos conseguido, nos cambiará la pantalla y tendremos que pulsar en Create Graphs for this Host.
Marcaremos todas las gráficas. Para la sección LAN, cambiaremos Select a graph type, y elegiremos In/Out Bytes. Marcaremos las interfaces de red de las que queremos tener gráficas, y pulsaremos el botón Create.

Por último, sólo nos quedará ubicar el nuevo servidor en el árbol. Para ello, vaya a Console->Graph Trees, y cuando refresque la parte derecha, haga click en el árbol donde quiera añadir el dispositivo. Si quiere añadir una rama al árbol (Equipos Linux, por ejemplo) pulse en Add. Escriba el nombre de Title y pulse Create. De nuevo en la ventana del árbol, pulse en (Add) junto a la rama recién creada. Luego en Tree Item Type, seleccione Host, y en el Host busque el equipo que acaba de crear. Cuando lo haya hecho, pulse el botón Create, y espere unos minutos a que se recopilen los datos, y empiece a dibujar gráficas.
La foto la he sacado del album de scatterkeir en flickr

Tener dos instancias OpenLDAP en el mismo servidor RHEL5

OpenLDAP es una implementación Open Source del protocolo Lightweight Directory Access Protocol (LDAP). LDAP es el protocolo de red que nos permite hacer consultas a un directorio (consultas de lectura y escritura, aunque está optimizado para soportar muchísimas lecturas en poco tiempo). Un directorio es una base de datos de objetos organizada jerárquicamente en forma de árbol, y hace tiempo ya que los usamos para guardar objetos que representan recursos de una red: un equipo, una impresora, un concesión del DHCP, un nombre de hosts, una cuenta de correo, un cuenta de usuario con su contraseña y datos personales, etc. Al final resulta muy cómodo y fácil decirle a nuestras aplicaciones y servicios de red, que busquen las cuentas de acceso y las contraseñas en un directorio central, en vez de mantener cada uno su propia gestión de usuario.
OpenLDAP es una implementación que podemos usar en cualquiera de las distribuciones de Linux modernas, además de BSD, HP-UX, AIX, MacOsX, Windows, etc, pero por alguna razón que desconozco, en RHEL5 no resulta nada fácil tener dos instancias de OpenLDAP en distintos puertos en el mismo equipo. ¿Para qué podemos necesitar algo así?: Para tener un maestro y un esclavo en el mismo equipo, garantizando que no hay cortes de red en la replicació o para poder clusterizar en activo-pasivo varias instancias aprovechando la misma infraestructura de cluster de los equipos. Estos han sido los escenarios en los que yo he necesitado tener dos instancias en el mismo equipo, y que voy a contaros como hacer, aunque sea un poco artesanal.
Para ilustrar el procedimiento consideraremos que ya tenemos un maestro que tiene la configuración en /etc/openldap/slapd.conf, la base de datos en /var/lib/ldap y el demonio de arranque y parada en /etc/init.d/ldap. También supondremos que este maestro escucha conexiones en el puerto 389.
Ahora supondremos que queremos levantar una segunda instancia que llamaremos de respaldo en el puerto 3890. Los pasos que tendremos realizar son los siguientes:

  1. Lo primero sera parar el ldap maestro.
    /etc/init.d/ldap stop
  2. Ahora crearemos el usuario que ejecutará la instancia de respaldo:
    useradd ldap-respaldo -c "LDAP User backup" -s /bin/false -d /var/lib/ldap-respaldo
    No es casualidad que el usuario se llame ldap-respaldo: nos será mucho más rápido y rentable añadir el sufijo -respaldo a las ocurrencias de ldap, que sustituir por completo las ocurrencias por otra cadena más apropiada.
  3. Copiar los directorios y ejecutables del usuario ldap al usuario ldap-respaldo.
    cp  /etc/init.d/ldap  /etc/init.d/ldap-respaldo
    cp /usr/sbin/slapd /usr/sbin/slapd-respaldo
    chmod 755 /usr/sbin/slapd-respaldo

    mkdir -m 777 /var/run/openldap-respaldo

    cp /etc/openldap -R /etc/openldap-respaldo
    cp /var/lib/ldap -R /var/lib/ldap-respaldo

    chown -R ldap-respaldo.ldap-respaldo \
    /etc/openldap-respaldo \
    /var/run/openldap-respaldo \
    /var/lib/ldap-respaldo
  4. Editar el fichero de configuracion (/etc/openldap-respaldo/slapd.conf) de la nueva instancia y cambiar las líneas
    pidfile  /var/run/openldap/slapd.pid
    argsfile /var/run/openldap/slapd.args
    directory /var/lib/ldap
    ...por estas otras...
    pidfile  /var/run/openldap-respaldo/slapd.pid
    argsfile /var/run/openldap-respaldo/slapd.args
    directory /var/lib/ldap-respaldo
  5. Por último, tendremos que editar el demonio de arranque y parada del nuevo servicio (/etc/init.d/ldap-respaldo), y aplicar las siguientes diferencias:
    12a13,16
    >
    > # Sufijo...
    > export lsfx="-respaldo"
    >
    29c33
    < slapd=/usr/sbin/slapd
    ---
    > slapd=/usr/sbin/slapd${lsfx}
    94c98
    < user=ldap
    ---
    > user=ldap${lsfx}
    98,99c102,103
    < slaptestflags=
    < for dbdir in `LANG=C egrep '^directory[[:space:]]+[[:print:]]+$' /etc/openldap/slapd.conf | sed s,^directory,,` ; do
    ---
    > slaptestflags=" -f /etc/openldap${lsfx}/slapd.conf "
    > for dbdir in `LANG=C egrep '^directory[[:space:]]+[[:print:]]+$' /etc/openldap${lsfx}/slapd.conf | sed s,^directory,,` ; do
    116,117c120
    < # Unaccessible TLS configuration files.
    < tlsconfigs=`LANG=C egrep '^(TLS_CACERT|TLSCACertificateFile|TLSCertificateFile|TLSCertificateKeyFile)[[:space:]]' /etc/openldap/slapd.conf /etc/openldap/ldap.conf | awk '{print $2}'`
    ---
    > tlsconfigs=`LANG=C egrep '^(TLS_CACERT|TLSCACertificateFile|TLSCertificateFile|TLSCertificateKeyFile)[[:space:]]' /etc/openldap${lsfx}/slapd.conf /etc/openldap${lsfx}/ldap.conf | awk '{print $2}'`
    124,134c127,138
    < if ! action $"Checking configuration files for $prog: " /sbin/runuser -m -s "$slaptest" -- "$user" $slaptestflags; then
    < if /sbin/runuser -m -s "$slaptest" -- "$user" "-u" > /dev/null 2> /dev/null ; then
    < dirs=`LANG=C egrep '^directory[[:space:]]+[[:print:]]+$' /etc/openldap/slapd.conf | awk '{print $2}'`
    < for directory in $dirs ; do
    < if test -r $directory/__db.001 ; then
    < echo -n $"stale lock files may be present in $directory" ; warning ; echo
    < fi
    < done
    < fi
    < exit 1
    < fi
    ---
    >
    > # if ! action $"Checking configuration files for $prog: " /sbin/runuser -m -s "$slaptest" -- "$user" $slaptestflags; then
    > # if /sbin/runuser -m -s "$slaptest" -- "$user" "-u" $slaptestflags > /dev/null 2> /dev/null ; then
    > # dirs=`LANG=C egrep '^directory[[:space:]]+[[:print:]]+$' /etc/openldap${lsfx}/slapd.conf | awk '{print $2}'`
    > # for directory in $dirs ; do
    > # if test -r $directory/__db.001 ; then
    > # echo -n $"stale lock files may be present in $directory" ; warning ; echo
    > # fi
    > # done
    > # fi
    > # exit 1
    > # fi
    140c144
    < user=ldap
    ---
    > user=ldap${lsfx}
    147c151
    < if grep -q ^TLS /etc/openldap/slapd.conf || test x$SLAPD_LDAPS = xyes ; then
    ---
    > if grep -q ^TLS /etc/openldap${lsfx}/slapd.conf || test x$SLAPD_LDAPS = xyes ; then
    152a157,158
    > harg="ldap://0.0.0.0:3890/ "
    > export SLAPD_OPTIONS=" -F /etc/openldap${lsfx} -f /etc/openldap${lsfx}/slapd.conf "
    168c174
    < if grep -q "^replogfile" /etc/openldap/slapd.conf; then
    ---
    > if grep -q "^replogfile" /etc/openldap${lsfx}/slapd.conf; then
    179c185
    < [ $RETVAL -eq 0 ] && touch /var/lock/subsys/ldap
    ---
    > [ $RETVAL -eq 0 ] && touch /var/lock/subsys/ldap${lsfx}
    191c197
    < if grep -q "^replogfile" /etc/openldap/slapd.conf; then
    ---
    > if grep -q "^replogfile" /etc/openldap${lsfx}/slapd.conf; then
    199c205
    < [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/ldap /var/run/slapd.args
    ---
    > [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/ldap${lsfx} /var/run/slapd${lsfx}.args
    219c225
    < if grep -q "^replogfile" /etc/openldap/slapd.conf ; then
    ---
    > if grep -q "^replogfile" /etc/openldap${lsfx}/slapd.conf ; then
    232c238
    < if [ -f /var/lock/subsys/ldap ] ; then
    ---
    > if [ -f /var/lock/subsys/ldap${lsfx} ] ; then

Ahora ya se puede probar a arrancar los directorios, ejecutando:
/etc/init.d/ldap start
/etc/init.d/ldap-respaldo start
Si ahora ejecutamos ps aux, deberían aparecernos dos entradas para slapd. Si después de esto, necesitáramos crear una tercera instancia, podríamos usar un nuevo sufijo que fuera por ejemplo -tercera, tendríamos que aplicar los 4 primeros pasos cambiando en -respaldo por -tercera, y en el quinto paso, bastaría con hacer una copia de /etc/init.d/ldap-respaldo en /etc/init.d/ldap-tercera y luego editar este último para cambiar la línea 16, y en vez de poner:
export lsfx="-respaldo"
...pusiera el nuevo sufijo...
export lsfx="-tercera"
Bueno aunque sea una solución un poco aventurera, y a mí ha servido. Espero a que vosotros también.
La foto la he sacado del album de vertigogen en flickr

Descomprimir un RPM en Debian

Como ya he comentado alguna vez, en los clientes mantenemos los scripts que desarrollamos bajo el control de versiones, y luego los empaquetamos en ficheros RPM para desplegarlos en los servidores. Esta mañana estaba desplegando un servidor Debian y necesitaba instalar los clientes personalizados que hemos escrito para Nagios en el equipo, y asi que quedara monitorizado. Para hacer esto en Debian podemos ejecutar:

apt-get install rpm alien

mkdir /tmp/unRpm
cd /tmp/unRpm
rpm2cpio /opt/software/tyo-nagios-0.15-5.i386.rpm | cpio -iduv ./*

Luego, manualmente llevamos cada archivo o directorio a su lugar.
La foto la he sacado del album de jmelero en flickr

Instalación de Cacti en RHEL5

Hace ya tiempo estamos usando Cacti para monitorizar en tiempo real las redes, servidores y servicios de algunos de nuestros clientes, y tener reportes gráficos con los que poder tomar tomar decisiones pro-activas y detectar cuellos de botella. Además, al ser software libre, le vamos haciendo hacks, para integrarlo en otras herramientas del cliente como Nagios. Cacti lo podemos probar descargando appliance donde ya viene preconfigurado, el problema es que estos appliances suelen venir instalados con una gentoo capada que nos permite instalar más paquetes con conary, pero la lista de repositorios es limitada, y cuando queremos empezar a sacarle partido a Cacti, no podemos instalar lo que ayuda pide que se necesita, y no podremos monitorizar muchos dispositivos. Para tener una referencia rápida de los dispositivos que podemos monitorizar con cacti, y cómo hacerlo podemos visitar: http://www.debianhelp.co.uk/cactitemplates.htm. Si queremos ver una instalación funcionando podemos visitar https://ciist.ist.utl.pt/cacti/graph_view.php?action=tree: Así podemos echar un vistazo a qué tipo de métricas presta atención otra gente.
Para instalar Cacti en RHEL5, lo primero será descargar los paquetes RPM. Un buen sitio es dag.wieers.com, donde encontraremos un montón más de paquetes que nos pueden venir muy bien instalar desde el RPM en vez de usar el fuente directamente:


Como estos paquetes no son de la distribución oficial, los guardaré en /opt/software. Así, cuando pase tiempo y tenga que volver a instalar el cacti en otro equipo no tengo que pensar: ¿qué versión usé, de dónde descargué los paquetes?: Voy a /opt/software y allí deben estar. Después me planteo si actualizo y pongo una versión más moderna o sigo usando la misma.
Una vez están todos los paquetes descargados, los instalaremos ejecutando:
  1. Instalar las dependencias de la distribución, ejecutando:
    yum -y install net-snmp net-snmp-utils php-mysql php-snmp
  2. Ahora instalar los paquetes que hemos descargado:
    cd /opt/software/cacti
    rpm -ivh cacti-*rpm perl-rrdtool-*rpm \
    python-rrdtool-*.rpm rrdtool-*.rpm rrdutils-*.rpm
  3. Ahora necesitaremos un servidor MySQL. Podemos instalar el que viene con RHEL ejecutando yum -y install mysql-server . Una vez tengamos arrancado el servidor, nos conectaremos como root y crearemos el usuario que usará cacti para conectar a la BBDD:
    create database cacti;
    GRANT ALL ON cacti.* TO cactiuser@localhost IDENTIFIED BY "pwd4cacti";
    flush privileges;
    Usaremos localhosts cuando Cacti y MySQL estén en la misma máquina. Si no, podremos una segunda línea, sustituyendo localhost por la dirección IP desde se espera que conecte el servidor CACTI.
  4. Volver a la consola del servidor donde hayamos instalado Cacti, y cargar el esquema de Base de Datos, ejecutando:
    mysql -h localhost -u cactiuser --password=pwd4cacti cacti < /var/www/cacti/cacti.sql
  5. Editar el fichero /var/www/cacti/include/config.php, para configurar en las líneas 26 a 31 los parámetros de conexión a la base de datos
  6. Editar /etc/httpd/conf.d/cacti.conf y cambiar en la línea 8 desde qué direcciones IP queremos se puedan conectar los usuarios. Si queremos que esté abierto a nuestras suredes podemos poner allow from 192.168. Luego reiniciar Apache y configurarlo para que se inicie con el sistema.
    /etc/init.d/httpd restart
    chkconfig httpd on
  7. Añadir al crontab del usuario cacti la siguiente línea:
    */5 * * * * php /var/www/html/cacti/poller.php > /dev/null 2>&1

Ya habremos terminado de instalar. Ahora desde un navegador, accederemos a la página de Cacti, poniendo la IP o nombre del equipo seguido de /cacti/. En mi caso yo pongo http://draw.casa.tecnoquia.com/cacti/, y nos aparecerá el asistente de configuración :
  1. En la primera pantalla Cacti Installation Guide, pulsar el botón Next>>
  2. En Please select the type of installation, dejar seleccionada New Install y pulsar el botón Next>>.
  3. Después en Make sure all of these values are correct before continuing deberíamos tenerlo todo en OK. Pulsar el botón Finish.
  4. Nos aparecerá una ventana para que nos autentiquemos. Usaremos como nombre de usuario y contraseña admin.
  5. Ahora nos aparecerá un mensaje *** Forced Password Change *** donde nos obliga a cambiar la contraseña por defecto. Pondremos la que nos interese tenga el administrador de Cacti y pulsaremos el botón Save.

Ahora configuraremos brevemente Cacti, para fijar los valores predeterminados de monitorización y permitir acceso como invitado, que siempre viene bien cuando lo usamos desde otras herramientas.
  • Ir a la pestaña Console, y luego a Settings. En general Snmp version dejaremos seleccionada Versión 1, y pulsaremos el botón Save
  • Luego, en Settings en la pestaña Poller, ir a la opción Downed Host Detection, y seleccionar Ping and SNMP. Pulsar Save.
  • Todavía en Settings, ir a la última pestaña Authentication y en Guest User, seleccionar guest. Pusar el botón Save.
  • Ahora ir seleccionar User Management el panel de la izquierda, dentro de la pestaña general Console. Hacer click en guest y luego marcar la casilla de verificación Enabled y justo debajo, desmarcar la opción User Must Change Password at Next Login. Pulsar Save.

Cerrar la sesión como admin e intentar acceder a la URL http://draw.casa.tecnoquia.com/cacti/graph_view.php?action=tree. No nos debería pedir login ni password.
La foto la he sacado del album de hipopotominha en flickr