Pi-py-stats (sistema de estadísticas)

Hola buenas!

Estoy en un proyectillo para sacar estadísticas de la placa Raspberry Pi, aun que es perfectamente compatible con cualquier otro equipo con linux (con windows solo habría que cambiar dos o tres lineas de código pero por ahora no interesa)

Actualmente hay muchos del estilo, monitorix es el que mas estoy viendo ultimamente, pero el problema de estos es el uso de cpu y tener que tener arrancado apache y todas esas cosas que realmente no son necesarias.

Todo esto me hizo plantearme este sistema, solo tienes que lanzar un python, que usa como máximo 2mb de ram, y abrir un puerto al exterior, desde un servidor web se pueden consultar los datos de esa máquina y ahorrarse tener todo lo antes mencionado.

Para evitar que los usuarios tengan que montar su apache también, he montado un servidor público para que todos podáis usar también.

Código: https://github.com/kianxineki/Pi-py-stats <- el pc que queráis monitorizar solo tenéis que lanzar start.py, client.py y index.php no es necesario, eso es solo para la parte del servidor

aquí os dejo un link de ejemplo, cambiando la ip y puerto podéis ver vuestros pc's :D : http://ks24935.kimsufi.com/check_load.p ... ast_days=0

imagen:
Imagen


edit: requiere instalar python-psutil (está en todos las distros en sus repositorios :) )

Esquema de funcionamiento:

Imagen
Muy chulo KiAn, yo me hice un pequeño script en Python (aunque bastante más cutre que el tuyo) porque el phpsysinfo y similares chupaban mucha CPU. Te forkeo (aunque seguramente no pueda mirar el código de momento).

Lo que no me termino de aclarar es: ¿se supone que el client.py envía los datos desde el raspberry que quieres monitorizar al servidor que tienes en el Kimsufi que enlazas? Vamos que no es el propio Raspberry el que hace de servidor ¿no?
Mola, para este verano tengo pensado una raspberry por lo que me viene bastante bien. La duda que tengo es, ¿funciona a través de la raspberry o tendríamos que consumir ancho de banda de tu servidor? ¿O el servidor lo tenemos que montar nosotros? Porque si es lo primero igual te crujen el ancho de banda xD.
Korso10 escribió:Muy chulo KiAn, yo me hice un pequeño script en Python (aunque bastante más cutre que el tuyo) porque el phpsysinfo y similares chupaban mucha CPU. Te forkeo (aunque seguramente no pueda mirar el código de momento).

Lo que no me termino de aclarar es: ¿se supone que el client.py envía los datos desde el raspberry que quieres monitorizar al servidor que tienes en el Kimsufi que enlazas? Vamos que no es el propio Raspberry el que hace de servidor ¿no?


La raspberry debe correr el start.py, y desde el servidor web ejecuta el index.php y el index.php ejecuta por detrás el client.py para comunicarse con el start.py que le indiquemos.

¿por qué no tener un server todo en php o todo en python? por que tardaría mas en hacerlo xD aun que posiblemente lo unifique mas adelante.

Uso json como estructura de los datos.

Gracias por todo Korso! cualquier idea, consejo, queja o lo que sea es bien recibida!

edit:

dark_hunter escribió:Mola, para este verano tengo pensado una raspberry por lo que me viene bastante bien. La duda que tengo es, ¿funciona a través de la raspberry o tendríamos que consumir ancho de banda de tu servidor? ¿O el servidor lo tenemos que montar nosotros? Porque si es lo primero igual te crujen el ancho de banda xD.

En principio el sistema lo voy a dejar corriendo, total, el server lo único que hace es recibir un .json, que no suele ocupar mas de 400kb (mas adelante prepararé para poder solicitar estadísticas por días, ahora envía todo, aun que por parámetros podemos pedir un rango de datos)


El servidor lo podéis montar vosotros también, tan solo es copiar el archivo index.php y client.py a alguna máquina que tenga un servidor web y a tirar :)
Creo que a veces nos asustamos demasiado pronto. El monitorix presume de ser ligero (no lo he probado pero bueno, tampoco parece muy pesado) y existen mucha alternativas ligeras a Apache como lighttpd (instalado por defecto en Ubuntu por ejemplo) si lo que quieres es montar un servicio básico de http sin los infinitos plugins de Apache.

En fin, como siempre depende de tus necesidades y del nivel de detalle que busques. Si monitorix te va grande para lo que buscas, me parece una opción muy válida lo que estás haciendo :)
AxelStone escribió:Creo que a veces nos asustamos demasiado pronto. El monitorix presume de ser ligero (no lo he probado pero bueno, tampoco parece muy pesado) y existen mucha alternativas ligeras a Apache como lighttpd (instalado por defecto en Ubuntu por ejemplo) si lo que quieres es montar un servicio básico de http sin los infinitos plugins de Apache.

En fin, como siempre depende de tus necesidades y del nivel de detalle que busques. Si monitorix te va grande para lo que buscas, me parece una opción muy válida lo que estás haciendo :)

Realmente en otras máquinas uso monitorix, y va muy bien, pero cuando alguien ve las estadísticas la cpu al 100% mientras se generan las estadisticas jode bastante, de ahí la alternativa :)

Si es cierto que lighttpd es ligero, pero no creo que llegue a usar solo 2 mb, la idea es evitar "desperdiciar" ram dentro de lo posible.

Edit: realmente sería como un monitorix pero modularizado, y que no toda la carga se la coma la máquina que monitoriza.
levanto el post para decir que ya tiene sistema de "scripting" añadiendo parámetros en la config que está dentro de client.py

Por ejemplo, poder monitorizar el número de conexiones por http, por ssh, o lo que queráis.
6 respuestas