Giter Site home page Giter Site logo

andresdfx / monitorrest Goto Github PK

View Code? Open in Web Editor NEW
0.0 2.0 0.0 19 KB

RESTfull architecture-based application to monitor the host in inlet GCP

Home Page: http://34.83.147.81:8000

Python 84.24% Shell 15.14% Dockerfile 0.62%
flask python inlet google-cloud-platform

monitorrest's Introduction

MonitorRest

La motivación de este documento es el de mostrar un mecanismo con el cual se puede compartir un servicio o un recurso con un cliente, jefe o un amigo; a través de Internet. Pero imagine que ese recurso/servicio se encuentra en una red privada y existen factores externos que dificultan que ese servicio sea expuesto en Internet. Una herramienta de software que permite este tipo de comunicación se llama inlets en el cual se basa la ejecucion de este proyecto.

Por otro lado el estilo arquitectural RESTful es una de las arquiecturas de software orientadas a servicios más populares hoy en día. Esto se evidencia en el hecho que muchas de las plataformas centradas en la nube ofrecen su información y servicios siguiendo este estilo arquitectural.

El microframework Flask permite el fácil desarrollo y despliegue de servicios que siguen el esquema arquitectura RESTful. Creditos al docente josanabr.

La definicion de la VM utilizada para pruebas se encuentra en el siguiente Vagrantfile.


Parte 1 - Monitoreo del servidor

En el archivo flask-monitor.py se encuentran todos los ejercicios desarrollados. Dentro del archivo se encontrarán EJEMPLOs y encontrarán EJERCICIOs.


Rutas

En este momento los siguientes recursos están disponibles para flask-monitor.py:

  • GET /index.html devuelve en formato JSON todas las rutas del web services.

  • GET /os devuelve en formato JSON la salida del comando uname. Es posible pedir valores específicos mediante POST.

    • POST /os/kernel
    • POST /os/release
    • POST /os/nodename
    • POST /os/kernelversion
    • POST /os/machine
    • POST /os/processor
    • POST /os/operatingsystem
    • POST /os/hardware
  • GET /who devuelve en formato JSON los usuarios conectados en ese momento

    • POST /who/<user> envia un JSON y devuelve si el usuario especifico <user> esta conectado
  • GET /cpu/<type> devuelve en formato JSON el uso de la CPU. Posibles valores para <type>:

    • us user
    • sy system
    • id idle
    • wa waiting
    • st tiempo consumido por máquinas virtuales
  • GET /mem/<type> devuelve en formato JSON el uso de RAM. Posibles valores para <type>:

    • swpd swap
    • free free
    • buff buffered
    • cache cached
  • POST /partition/ envia un JSON y devuelve el uso de la particion especifica o la lista de todas las particiones si se utiliza all

  • GET /swap/<type> devuelve en formato JSON el comportamiento de SWAP. Posibles valores para <type>:

    • si memory swapped in
    • so memory swapped out

Parte 2 - GTD

En el archivo flask-task.py se encuentra una aplicación que modela el proceso Getting Things Done bajo un esquema API REST. Diapositivas asociadas a este problema se encuentran aquí.


Instalacion

Para llevar a cabo esta práctica se necesita tener una cuenta en Google y tener registrado alguna forma de pago dado el caso que un exceso a los recursos que se ofrecen en GCP requiera ser cobrado.

Los detalles de la instalacion se encuentran en este repositorio. Teniendo encuenta que la aplicacion desplegada puede cambiar y al acceso por medio de los metodos GET y POST dependen de la IP asignada para el projecto creado en Google Cloud Plataform.

Para el contenedor especifico de mi proyecto ejecute

docker pull andresdfx/flask-monitor 
docker run --rm -d -p 5000:5000 andresdfx/flask-monitor

Posteriormente si esta en un sistema Unix ejecute este comando en su terminal para acceder por medio del alias REMOTE a los servicios prestados por mi servidor.

export REMOTE=34.83.147.81:8000

Un ejemplo para verificar el funcionamiento seria, la IP y el puerto dependen de su la propia configuracion de su projecto

curl http://34.83.147.81:8000/mem/swpd 

La documentacion completa de la invocacion de los servicios se encuentra en el archivo del servicio programado en Flask flask-monitor.py.

monitorrest's People

Contributors

andresdfx avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.