martes, 21 de agosto de 2012

Logster - instalación con Graphite


Logster es (según su página) una utilidad para leer archivos de log y generar métricas para Graphite o Ganglia. Es ideal para visualizar tendencias de eventos que están ocurriendo en su aplicación/sistema/error log. Por ejemplo, puede usar logster para graficar el numero de ocurrencias de respuestas http que sucedan en el log de su servidor web.

Logster mantiene un cursor, vía logtail, en cada archivo log que es leído, por lo tanto, cada sucesiva ejecución solo inspecciona las nuevas entradas del log. En otras palabras, un crontab configurado para correr cada un minuto generará la visualización de tendencias en tiempo real para Graphite o ganglia para cualquier cosa que quiera medir de sus logs.

Instalación

Logster depende de la utilidad logtail, por lo que primero la instalamos
apt-get install logtail
apt-get install logcheck
Bajamos Logster de su página de download, bajamos el archivo y lo descomprimimos, luego hacemos desde una consola con superusuario...
python setup.py install
y se instala... la instalación deja dos archivos de ejemplo... podemos correrlo con:
/usr/sbin/logster --dry-run --output=graphite --graphite-host=mi_server_graphite:puerto_gralmente_2003 SampleLogster /var/log/apache2/access.log 

Con --dry-run le decimos que "simule" la ejecución, pero mostrando la salida por pantalla, para ver si anda... si quitamos esa opción se ejecutará contra nuestro graphite y tendríamos que ver los datos graficados... Ejecutando 
logster -h
nos da la ayuda para mas información...
Los archivos de ejemplo (por ejemplo el SampleLogster al que hago referencia arriba), así como cualquier otro que querramos correr se encuentran en /usr/share/logster
Una gran utilidad de esto es por ejemplo crear un crontab que ejecute
/usr/sbin/logster --output=graphite --graphite-host=mi_server_graphite:puerto_gralmente_2003 SampleLogster /var/log/apache2/access.log 
una vez por minuto, con lo que conseguimos que nuestro gráfico se ven en vivo.



miércoles, 15 de agosto de 2012

Tips Linux Debian

Copiar archivos de una máquina a otra por la red muy facil

Sin samba ni cosas raras, lo más simple...usando NetCat (nc)
Desde la máquina que tiene el archivo que queremos copiar
nc -l -p puerto < archivoEnviar -q 0
puerto: es el puerto en el que se enviará el archivo
Desde la máquina que debe recibir el archivo
nc servidor puerto > nombreArchivo
servidor: la ip o nombre de la máquina que envía el archivo.
puerto: el  puerto (el mismo de arriba)
nombreArchivo: el nombre que se le da al archivo una vez recibido.+

Correr un programa en background

Se pone un & al final de la línea cuando se ejecuta el programa.
Si el programa ya está corriendo hacer CTRL+Z (lo deja en suspenso) despues escribir bg y ENTER.
Para volverlo al primer plano usar jobs para ver el número de trabajo asignado y fg <nro trabajo> para ponerlo en 1er. plano).

Agregar procesos o correr programas al inicio de debian

Agregarlos en /etc/rc.local

Teclado

Cambiar mapa de caracteres desde consola:
loadkeys es
Ver la lista de mapas de caracteres disponible
ls -l /usr/share/kvm/keymaps/
en squeezy
     loadkeys /usr/share/keymaps/i386/qwerty/es.kmap.gz
     loadkeys es

Otros simples

Cambiar password: comando passwrd

Comprimir/Descomprimir con tar


Comprimir un directorio:
tar -cvf nombre_comprimido.tar directorio_a_comprimir/
Descomprimir:
tar -xvf nombre_del_fichero
Ver el contenido de un tar
tar -tf nombre_del_fichero
Significado de las letras:
f: indica que a continuación viene el nombre del fichero; c: comprimir; x: extraer; v: que muestre lo que va haciendo.

martes, 14 de agosto de 2012

Graphite

Graphite (http://graphite.wikidot.com/) es un soft que básicamente hace dos cosas (documentación sobre el soft se puede encontrar en http://graphite.readthedocs.org):
  • Almacena series cronológicas de datos numéricos.
  • Crea gráficos de esos datos contra demanda.
Tiene 3 componentes
  • carbon - un demonio que queda escuchando a la espera de series cronológicas de datos
  • whisper - una librería para base de datos simples para almacenar las series cronológicas de datos (similar en diseñó a RRD)
  • graphite webapp - Un Django webapp que renderiza los gráficos on-demand usando Cairo

Instalación en Debian

Bajamos Graphite y sus accesorios desde https://launchpad.net/graphite/
wget https://launchpad.net/graphite/0.9/0.9.10/+download/graphite-web-0.9.10.tar.gz
(o la versión más nueva que haya)... lo mismo con Carbon, Whisper y el archivo check-dependencies.py.
Los descomprimimos
tar xzvf graphite-web-0.9.10.tar.gz
... lo mismo para carbon y whisper
Antes de seguir vamos a correr (en realidad se pueden instalar Carbon y Whisper antes de correr esto, que nos dirá si están los prerequisitos de Graphite Web App)
python check-dependencies.py

que nos va a decir que está faltando para poder instalar Graphite... el resultado puede ser algo como esto...

[FATAL] Unable to import the 'whisper' module, please download this package from the Graphite project page and install it.
[FATAL] Unable to import the 'django' module, do you have Django installed for python 2.6.6?
[FATAL] Unable to import the 'tagging' module, do you have django-tagging installed for python 2.6.6?
[WARNING] Unable to import the 'mod_python' module, do you have mod_python installed for python 2.6.6?
mod_python is one of the most common ways to run graphite-web under apache.
Without mod_python you will still be able to use the built in development server; which is not
recommended for production use.
wsgi or other approaches for production scale use are also possible without mod_python
[WARNING]
Unable to import the 'memcache' module, do you have python-memcached installed for python 2.6.6?
This feature is not required but greatly improves performance.

[WARNING]
Unable to import the 'ldap' module, do you have python-ldap installed for python 2.6.6?
Without python-ldap, you will not be able to use LDAP authentication in the graphite webapp.

[WARNING]
Unable to import the 'txamqp' module, this is required if you want to use AMQP.
Note that txamqp requires python 2.5 or greater.
3 necessary dependencies not met. Graphite will not function until these dependencies are fulfilled.
4 optional dependencies not met. Please consider the warning messages before proceeding.


Por lo que procederemos a instalar lo que esté faltando, la primer línea se refiere al whisper que acabamos de bajar.
Para instalarlo simplemente vamos a la carpeta donde lo descargamos
cd whisper-0.9.10
en mi caso... luego ejecutamos
python setup.py install 
(para instalar los 3 programas se procede igual, se entra en el dir donde se descomprimió y se ejecuta python setup.py install)
Se sigue instalando todo lo que haga falta... y listo...

Carbon

Configurando Carbon

La configuración de Carbon se encuentra en /opt/graphite/conf/carbon.conf en un principio no existe y uno debe crearlo, para facilitar las cosas tiene por defecto un archivo carbon.conf.example con un ejemplo de configuración... en el mismo directorio encontrarás otros archivos con configuraciones. Otro archivo que es necesario para poner a andar el daemon es storage-schemas.conf; una vez configurados arrancamos el daemon con:
/opt/graphite/bin/carbon-cache.py start
los logs quedan en opt/graphite/storage/log/carbon-cache/ es bueno verlos para ver si hay algún error tras lanzar el demonio.
(para agregarlo para que inicie cada vez que se inicia linux agregar esa línea al archivo /etc/rc.local)

Graphite Web App

Inicializar la base de datos

vamos a
cd /opt/graphite/webapp/graphite
y ejecutamos
python manage.py syncdb
Debemos luego verificar que opt/graphite/storage/, opt/graphite/storage/log/webapp/ y opt/graphite/storage/graphite.db tengan permisos de escritura para el usuario de apache y permiso de lectura en opt/graphite/storage/whisper/.
La base de datos que se usa por defecto es sqlite.
Una vez instalado es una buena idea darse una vuelta por /opt/graphite/webapp/graphite y ver el archivo local_settings.py para cambiar lo que sea necesario, por ejemplo yo seteo mi timezone a la de Buenos Aires
TIME_ZONE = 'America/Buenos_Aires'

Configurar Apache

Usaré Apache con wsgi, si aun no está instalado hacemos:
apt-get install libapache2-mod-wsgi
luego agregamos esta línea al httpd.conf (en debian en /etc/apache2/httpd.conf)
LoadModule wsgi_module    modules/mod_wsgi.so
Luego habilitamos el host
cp /opt/graphite/examples/example-graphite-vhost.conf /etc/apache2/sites-available/default
(si no esta el default en /etc/apache2/sites-available/default crearlo y hacer el link en sites-enabled)
ahora entrar en /etc/apache2/sites-available/default y modificar la línea del WSGISocketPrefix por
WSGISocketPrefix /var/run/apache2/wsgi
copiamos el arch de settings, debemos cambiar adentro si queremos usar una base de datos que no sea la por defecto.
cp local_settings.py.example local_settings.py
creamos la base de datos
cd /opt/graphite/webapp/graphite/
python manage.py syncdb

reiniciar el apache
/etc/init.d/apache2 restart
y tendríamos que ver todo andando en el localhost, hagamos una prueba...

Un pequeño script en perl que se conecta con Carbon y manda datos para ver en Graphite, manda números al azar durante 2 hs una vez por minuto.

#!/usr/bin/perl
use IO::Socket::INET;
use strict;

my($carbon_server) = '<la ip de su serv>';
my($carbon_port) = <el puerto en gral 2003>;
my ($path) = "pancho.y.z";
my ($dato) = "";
my ($i) = 0;

my($sock) = IO::Socket::INET->new (
 PeerAddr => $carbon_server,
 PeerPort => $carbon_port,
 Proto => 'tcp'
);
die "Unable to connect: $!\n" unless ($sock->connected);
for ($i = 0; $i < 120; $i++)
{
 $dato = $path . " " . int(rand(11)) . " " . time . "\n";
 print $dato;
 $sock->send($dato);
 sleep(60);
}
$sock->shutdown(2);


lunes, 13 de agosto de 2012

GLPI & Fusion Inventory

GLPI (Gestion Libre de Parc Informatique, algo así como Gestionador Libre del Parque Informático), es, según su web un software libre distribuido bajo licencia GPL, que facilita la administración de recursos informáticos. GLPI es una aplicación basada en Web escrita en PHP, que permite registrar y administrar los inventarios del hardware y el software de una empresa.

GLPI incluye también software de mesa de ayuda para el registro y atención de solicitudes de servicio de soporte técnico, con posibilidades de notificación por correo electrónico a usuarios y al mismo personal de soporte, al inicio, avances o cierre de una solicitud.

Las principales funcionalidades de GLPI están articuladas sobre dos ejes:

1) el inventario preciso de todos los recursos informáticos, y el software existente, cuyas características se almacenan en bases de datos.

2) administración e historiales de las diferentes labores de mantenimiento y procedimientos relacionados, llevados a cabo sobre esos recursos informáticos.

Este soft que estuve probando tiene toda la funcionalidad necesaria para manejar el inventario completo del hardware y el software de una organización, su manejo es fácil e intuitivo.

Instalación GLPI

Para instalar el soft, se puede descargar de la web http://www.glpi-project.org/ en la sección Downloads.
Luego de haberlo bajado su instalación es bastante simple, necesitamos tener le lenguaje PHP y un servidor MySQL instalado, funciona tanto en Linux como en Windows (por ejemplo usando WAMP en windows).  Una vez bajado, descomprimimos el archivo en la carpeta web de nuestro servidor (en linux var/www generalmente); al descomprimirse el GLPI queda en una carpeta llamada glpi. Una vez hecho esto, si entramos en localhost/glpi podemos ver la pantalla de instalación.
Durante la instalación, que es casi automática, se le pedirán algunos datos, como el acceso a la base de datos y se verificará que el servidor tenga lo necesario (permiso de escritura en varios directorios, tal vez alguna configuración en php, etc.). Sin mayores problemas se instala en unos 5 minutos, luego ya podremos entrar en htt.://localhost/glpi y ver el sistema ya en funcionamiento con los usuarios por defecto.

Fusion Inventory

Fusion Inventory es un software que tiene la función de obtener los la información del software y hardware instalado en sus computadoras. También dispone de un plugin que funciona con GLPI (también con OCSInventory) y sirve para transferir la información obtenida de cada máquina al GLPI.
Para ello FusionInventory cuenta con:
  1. Un agente (Fusion Inventory Agent) que se instala en cada máquina. Funciona tanto en entornos Linux como Windows, está programado en Perl y es de muy simple instalación y configuración.
  2. Un plugin que se agrega facilmente a GLPI que recibe la información de los agentes instalados en las máquinas y tiene la capacidad de escanear las redes a las que se encuentre conectado descubriendo impresoras y otros hardwares/softwares conectados a sus redes.

Plugin Fusion Inventory For GLPI 

El plugin fusioninventoryforglpi se baja de http://www.fusioninventory.org/ y se instala facilmente, solo hay que descomprimir el archivo bajado en la carpeta plugins de glpi y luego entrar en el sistema GLPI ->Configuración->Plugins.
Una vez allí tendrá la opción de ir instalando y actualizando los diferentes plugins (son 4). Al hacerlo verá que uno de los plugins requiere tener el plugin glpi-webservices instalado, para ello debe bajarlo de la página de plugins (a la que puede acceder también desde (GLPI ->Configuración->Plugins->See the catalogs of plugins) e instalarlo descomplimiendolo en la carpeta plugins igual que hizo antes (lo mismo es para cualquier plugin).
Una vez instalados estos plugins podrá acceder a los mismos desde GLPI->Plugins->Fusion Inventory o bien Web Services.

Deploy

Deploy es una de las características más interesantes que trae Fusion Inventory, ella permite pasar archivos a las pcs de la red que tengan instalado el agente, instalar o desinstalar programas en las mismas, ejecutar comandos, etc.
Se ingresa a la misma por GLPI->Plugins->Fusion Inventory->Deploy->Package Management->Add a package (para agregar uno nuevo). Una vez allí aparecen dos solapas: Installation y Unninstallation. Ambas solapas presentan 3 secciones: List of checks (lo que se debe chequear antes de seguir la tarea), Files to copy on computer (los archivos que se quieren pasar a la/s computadoras y Actions to archieve (lo que se debe hacer una vez pasados los archivos).

Los archivos a pasar pueden subirse desde el browser o bien pasarlos por ftp al servidor (cuando sean mas grandes que el máximo que permita el servidor). Para cambiar el tamaño por defecto que pueden subirse los archivos se hace en /etc/php5/apache2/php.ini por defecto es 2. Cuando se suben archivos para bajar desde el server, se deben subir a /var/www/cd glpi/files/_plugins/fusinvdeploy/upload por defecto, esto se configura desde Plugins ->Fusion Inventory->Configuración (de la botonera de arriba); solapa Fusion Inventory Deploy.

Fusion Inventory Agent


Cliente en linux


Se baja de http://prebuilt.fusioninventory.org/stable/ ver la versión del SO requerida, se corre directamente desde el directorio en que se descomprime.
O bien se instala desde synaptic o con


apt-get install fusioninventory-agent



es el agente principal, otras características se instalan con:

apt-get install libfusioninventory-agent-task-ocsdeploy-perl


apt-get install libfusioninventory-agent-task-netdiscovery-perl


apt-get install libfusioninventory-agent-task-snmpquery-perl 


La configuración se hace desde agent.cfg en el directorio donde se descomprimió, o si se instaló con apt en /etc/fusioninventory/agent.cfg. En la configuración, cambiar el valor de server por http://<el nombre de su servidor>/glpi/plugins/fusioninventory/front/plugin_fusioninventory.communication.php por defecto trae otro valor que sirve para que funcione el inventario, pero no funciona el deploy.
El cliente deja un log en /var/log/fusioninventory.log muy útil para ver errores y como trabaja el programa.

Cliente en windows

Los datos de configuración se pueden cambiar desde la registry (ejecutar regedit) hkey_local_machine->software->FusionInventory-Agent
Cambiar el valor de server por http://<el nombre de su servidor>/glpi/plugins/fusioninventory/front/plugin_fusioninventory.communication.php por defecto trae otro valor que sirve para que funcione el inventario, pero no funciona el deploy. *1
Revisar luego de instalar que el directorio Program Files/FusionInventory-Agent/var tenga permiso de escritura y también e el archivo agent-log o su directorio para crearlo (Program Files/FusionInventory-Agent)
En windows el log del agente queda en C:\Program Files\FusionInventory-Agent

*1 - Ahora en nuevas versiones del GLPI (del plugin fusioninventory) agregaron una muy útil configuración que nos permite elegir en qué carpeta van a recibirse los datos que envía el agente eso podemos cargarlo en Inicio -> Plugins -> FusionInventory -> Configuración general en el campo Service URL de la pestaña Configuración General, para la configuración que estoy armando en este ejemplo debo poner "http://<el nombre de su servidor>/glpi/".
Es importante para la gente que actualiza de versiones anteriores (como me paso a mi) que carguen ese valor ya que al actualizar (por lo menos a mí) me quedo vacío y no recibía los datos de los agentes.

Ver el estado del FusionInventory-Agent

Bueno,  una vez instalado el agente uno puede ir a la página http://localhost:62354 y ver el estado del Agente de Fusion Inventory, ahí aparece una pagina simple que indica la próxima vez que se va a contactar al servidor, el estado actual del agente y también nos da la posibilidad de lanzar un inventario manualmente haciendo click en "Force an inventory".
También podemos lanzar un inventario por medio de la línea de comandos, entrando en windows en c:/Archivos de programa/FusionInvenotry-Agent/perl/bin
y ejecutando 
perl.exe fusioninventory-agent --h
podemos ver la ayuda del agente que nos indicará como llamarlo con sus diferentes opciones y para qué sirve cada una de ellas.