Aplicación cliente servidor usando C++11 y la librería Boost

Aplicación cliente servidor usando C++11 y la librería Boost

System Activity Monitor

Hoy os traigo una nueva aplicación a la venta, se trata de un software para observar máquinas y enviar información a un servidor a través de un socket de protocolo http.

Objetivo del programa

Este par de programas ofrece el diseño de una arquitectura cliente/servidor multi-plataforma para coleccionar estadísticas (o cualquier otra información) en red.

Características del código fuente
  • Cliente/Servidor escritos íntegramente en C++11 usando las librerías boost para todos los SO, y las librerías gtop2 para GNU Linux/cygwin/OSX y las psapi + pdh en el caso de Windows.
  • Posibilidad de usar una base de datos nosql o relacional (tipo mysql) opcionalmente
  • Todo el software es abierto y no usa código propietario de terceros

Como siempre, lo más fácil es ver el funcionamiento del programa usando un vídeo de youtube:

Características del programa cliente

  • Puede ser usado sin instalación en una intranet o en internet
  • Parámetros a monitorizar configurables, incluído el tiempo entre medidas
  • Usa un servidor ,puerto, login y clave
  • Se guarda un log de las actividades del programa así como de los errores y respuestas del servidor

Cacterísticas del programa servidor

  • Puede configurarse para escuchar en un puerto junto con la información del servidor de correo y base de datos opcional
  • Sin tener que cerrar el programa una vez lanzado, podemos cambiar la configuración de un cliente en su fichero xml
  • Puede usarse en una intranet o en internet
  • Genera sesiones únicas para cada cliente de forma que podemos hacer tracking por sesión usando ficheros de bases de datos
  • Opcionalmente podemos volcar los logs en una base de datos relacional o nosql
  • Cuando un límite es alcanzado por un cliente que nos suministra tal información cada X segundos / minutos, se envía un email por SMTP
  • Incluye pruebas de unidad para comprobar que efectivamente el servidor y el cliente hacen lo que se espera de ellos y se comunican correctamente

El funcionamiento del programa es bien sencillo, tenemos en la máquina que hace de servidor que puede ser cualquier sistema operativo, el programa servidor sysmon_server.

Lanzamos este programa para que quede a la espera de nuevas conexiones de clientes, mediante la orden:

$ sysmon_server <puerto>

el programa arrancará y aparecerá el mensaje : «Server up and running on port <puerto>», desde este momento, podemos lanzar clientes que conecten con este servidor ,para poder usarlo, debemos tener una clave válida, asociada a un usuario (correo electrónico), estos datos se encuentran en un fichero xml del servidor, con una configuración como la que sigue:

<clients> 
  <client key=«xxx» mail=«email@dominio.com»>
 <alert type=«memory» limit=«20%» />
 <alert type=«cpu» limit=«50%» />
<alert type=«processes» limit=«5» /> 
   </client>
</clients>

este primer cliente tiene acceso a través de un par key-email, cada vez que este cliente lance una instancia del programa sysmon_client de la forma:

$ sysmon_client <IP_Servidor> <puerto> <key> <email>

se empezará a monitorizar el SO donde se lance (dependiendo de sus permisos claro), de forma que cada X segundos configurados, enviará por el socket de conexión con el servidor, un mensaje con la información de uso de memoria, cpu ,y número de procesos como un JSON, que el servidor guardará en una base de datos y comprobará con su configuración para ese cliente, si debe avisar por email de que un límite de los configurados ha sido superado.

No hay que mencionar que el código es escalable y sigue los principios de diseño de arquitectura de software que siempre recomendamos en este blog, como son

  • Keep It Simple, Stupid: KISS
  • Código Modular: uso de comandos para diferentes tipos de información a monitorizar
  • Integración de Pruebas de software
  • Manejo de excepciones para cualquier tipo de API usada.
  • Código elegante, eficiente, plenitud funcional
  • Comentarios en el código y documentación equilibrada con la claridad del código escrito

Podéis descargar el diseño de la arquitectura en pdf. El precio del software es 50€ (+impuestos para factura)

Artículos relacionados:

 

footer
jbelon © | sitemap.xml