Mostrando entradas con la etiqueta Graphite. Mostrar todas las entradas
Mostrando entradas con la etiqueta Graphite. Mostrar todas las entradas

martes, 26 de febrero de 2013

Tips Graphite


Eliminar gráficas

Si queremos eliminar métricas realizadas en nuestro graphite, es muy fácil...
Los datos de las gráficas quedan en
 
/opt/graphite/storage/whisper/
 
...De donde los podemos borrar directamente.

Validar los esquemas

Graphite nos dá una herramienta para validar que nuestros archivos de schema estén bien formados, la misma se encuentra en
 
/opt/graphite/bin/validate-storage-schemas.py

Resulta muy útil para estar seguros de no tener errores en nuestros schemas.

Resetear Carbon

Es necesario hacer un restart al Carbon después de haber cambiado los archivos conf
/opt/graphite/bin/carbon-cache.py start

Sincronizar database

sudo /opt/graphite/webapp/graphite/python manage.py syncdb


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.



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);