Lenguaje Python:graficando nuestros datos de monitorización en GNU

El lenguaje Python tiene infinidad de usos y por supuesto la monitorización no es la excepción, veamos cómo podemos aprovecharlo, incluso con Pandora FMS.

Dictador Benevolente De Por Vida

Tranquilos, tranquilas, no venimos a hablaros de política. Ahora que tenemos vuestra atención os aclaramos que ése es el título que tenía Guido van Rossum, creador del lenguaje Python:  «Benevolent Dictator For Life» hasta julio de 2018, cuando él decidió renunciar sin dejar sucesor o sucesora ni tampoco políticas claras al respecto sobre el futuro del lenguaje Python. No obstante este suceso, no creáis que el lenguaje Python ha perdido el rumbo de su desarrollo o que no va a continuar.

Python logo sin texto

Tampoco os hablaremos de la muy larga historia del lenguaje Python, solo os traemos hoy una amena observación acerca de los usos y posibles usos de dicho «idioma» de programación.

El lenguaje Python y el software de monitorización

Por este vuestro blog os hemos referido muy brevemente los usos del lenguaje Python en la informática con que trabajamos en este sector:

Y lo dejamos sólo hasta acá porque es hora de mostraros un uso práctico del lenguaje Python, y si escribimos solamente «Python» (pitón) ya sabréis que no estamos hablando de una serpiente… 😉

Serpiente pitón (Wikipedia https://upload.wikimedia.org/wikipedia/commons/thumb/a/ab/Python_natalensis_Smith_1840.jpg/640px-Python_natalensis_Smith_1840.jpg)
Serpiente pitón (Wikipedia https://upload.wikimedia.org/wikipedia/commons/thumb/a/ab/Python_natalensis_Smith_1840.jpg/640px-Python_natalensis_Smith_1840.jpg)

Instalando Python… o casi

En sistemas GNU/Linux, como afirmamos, Python viene por defecto y utilizaremos la versión disponible para Debian/Ubuntu al momento de escribir esta líneas, la versión 3.6.3 y en nuestro caso, aunque en varias imágenes que mostraremos dice «Anaconda, Inc» en realidad usamos Miniconda… y no, ¡no seguimos hablando precisamente de serpientes!

Lenguaje Python y la inteligencia artificial
Lenguaje Python y la inteligencia artificial
  • Anaconda es un entorno de programación que ocupa varios gigabytes de espacio en el disco duro. Es utilizado para trabajos científicos y la llamada «inteligencia artificial». Es tan vasto que el mismo lenguaje Python es considerado como un componente más: Anaconda contiene a Python y no al contrario.
  • Miniconda como su nombre lo indica apenas ocupa unos cientos de megabytes con las librerías básicas y el catálogo de software y a medida que necesitemos lo instalamos. Éste es el que usamos para nuestros estudios perennes en ciencias informáticas.
Anaconda venezolana (Wikipedia https://commons.wikimedia.org/wiki/File:Anaconda_(Eunectes_murinus)_(8990193853).jpg)
Anaconda venezolana (Wikipedia https://commons.wikimedia.org/wiki/File:Anaconda_(Eunectes_murinus)_(8990193853).jpg)
  • pip en cambio es un gestor de paquetes ligero, con un catálogo muy amplio de utilidades. Al igual que los anteriores deberemos instalarlo en nuestros equipos. pip forma parte de la «Tienda de Quesos» («Cheese Shop»), nombre clave para los diversos «contenedores» de paquetes en Python.
  • Windows Subsystem for Linux, o mejor dicho, «for GNU», nos permitirá instalar pip en un equipo con Microsoft® Windows 10® tal como si estuviéramos en un ambiente GNU/Linux; en este enlace web (en inglés) están las instrucciones y además el código en lenguaje Python para ejecutar Tetris®.
  • Necesario es decir que Python lo podremos instalar en Microsoft® Windows 7 SP1® o superior pero no contaremos con las utilidades GNU sino que deberemos contar con Powershell y WMI, y esas, ésas son otras historias.

Instalando pip y matplotlib

Dicho esto procedemos a instalar pip en las siguiente figura: la primera instrucción lo instala (en nuestro caso ya estaba instalado) y en la segunda instrucción solicitamos actualizar (y ya veis que nos coloca la última versión, la 10):

Por favor, lea también   Usando el comando «mktemp»
sudo apt install python-pip python-dev sudo pip install --upgrade pip
sudo apt install python-pip python-dev
sudo pip install –upgrade pip

Luego ejecutamos el intérprete de Python donde colocaremos línea por línea lo siguiente:

>>> import matplotlib.pyplot as plot
>>> xs = [ 2, 4, 6 ]
>>> ys = [ 1, 3, 5 ]
>>> plot.plot(xs, ys)
>>> plot.show()

Veréis algo parecido a esto en vuestra terminal:

Graficando con lenguaje Python
Graficando con lenguaje Python

Y se os abrirá en una ventana aparte un bonito gráfico con el que podremos interactuar, podremos cambiarle la leyenda, por ejemplo:

¿Qué hemos hecho?

  • En la primera línea le diremos a Python que cargue («import») en memoria las librerías necesarias para graficar .
  • En la segunda y tercera línea introducimos valores arbitrarios en dos sendas matrices de una sola fila.
  • En la cuarta línea graficamos en memoria.
  • En la última línea pedimos mostrar por pantalla.

Monitorizando temperatura en los discos duros

Ahora hagamos algo práctico, instalemos el programa hddtemp y cada cinco minutos tomemos la medida de dos discos duros, «a» que contiene el sistema operativo y «b» que contiene los datos del usuario:

sudo apt-get install hddtemp
sudo apt-get install hddtemp
sudo apt-get hddtemp /dev/sda
sudo apt-get hddtemp /dev/sda

Representando gráficamente con Python

Ahora introduciremos de manera interactiva un pequeño programa con los valores de temperatura obtenidos:

>>> import matplotlib.pyplot as plot
>>> tiempo = [ 0, 5, 10 ]
>>> disco1 = [38, 38, 38 ]
>>> disco2 = [41, 41, 40 ]
>>> plot.xlabel('Tiempo')
>>> plot.ylabel('Temperatura')
>>> plot.title(r'Temperatura en discos')
>>> plot.plot(tiempo, disco1, label=r'Disco 1', color='blue')
>>> plot.plot(tiempo, disco2, label=r'Disco 2', color='green')
>>> plot.legend(loc='upper right')
>>> plot.show()

¡Y obtendremos una excelente gráfica como esta!

Gráfica con temperatura en discos
Gráfica con temperatura en discos

Por supuesto, el paso siguiente sería crear un programa con lenguaje Python que ejecute hddtemp cada cierto tiempo, vaya almacenando en dos matrices, luego cargue los datos para el gráfico y en vez de mostrar por pantalla guarde en disco imágenes numeradas sucesivamente cada hora; para ello en vez de usar plot.show() usaríamos plot.savefig(‘fichero-ene.png’) ¿Queréis ir un paso más allá?

Módulos de Pandora FMS que utilizan el lenguaje Python

Esto ya es más avanzado: utilizar el lenguaje Python para que haga un trabajo completo y entregue sus resultados a un agente de Pandora FMS, por eso lo hemos dejado para finalizar.

Hemos escogido uno de los hilos creados en el foro de preguntas y respuestas de Pandora FMS donde utilizan un programa hecho en Python para entregar datos a un complemento (agradecimiento al sr. José Luis por la información) midiendo la velocidad de acceso que tengamos a la Internet.

Primero deberemos instalar el programa con «sudo apt-get install speedtest-cli«, luego descargaremos el código del foro que mencionamos y lo guardaremos con el nombre «speedtest.py». En un primer intento ejecutaremos simplemente lo siguiente «python3 speedtest-cli» en la carpeta donde descargamos el guion:

python3 speedtest-cli
python3 speedtest-cli

Observamos su resultado y ahora vamos a echar mano de la entrada estándar y salida estándar (STDIN, STDOUT) contemplado en el POSIX y que permite pasar valores entre diferentes programas. El artificio que usaremos obtiene la salida anterior y lo «procesa»con estos comandos (una sola línea):

| awk '/Download:|Upload:/ {print "<module>\n<name>"$1" Speed</name>\n<type>generic_data</type>\n<data>"$(NF-1)"</data>\n<unit>"$NF"</unit>\n</module>\n"}'

Mirad como es, en su conjunto:

Python y awk
Python y awk

Esto último que vemos es el formato que espera recibir Pandora FMS para convertirlo en información y guardarlo en la base de datos. Para mayores detalles, tomad un café, descansad y continuad con el siguiente tutorial publicado con anterioridad: «Creación de un plugin remoto con Pandora FMS» que aunque no contiene lenguaje Python sí que podréis ver el formato contentivo de datos y cómo trabajar con la consola web. Cualquier duda, inquietud o comentario ¡por favor contáctanos!

Presente y futuro de Python

Desde el año 2010 Python progresivamente ha ido aumentado el porcentaje de consultas en los buscadores web alcanzando un puntaje de 60 en 2018, ¡un 40% de los profesionales lo usamos y de entre quienes no lo usan un 25% dice que desea hacerlo a futuro! Para despedir: en el último año en América el número de búsquedas sobre Python ha superado a las realizadas sobre Kim Kardashian, una popular estrella de televisión en este continente ¿Qué os parece?

¡Hasta una próxima oportunidad!

 

http://timgolden.me.uk/python/wmi/cookbook.html
https://www.economist.com/sites/default/files/imagecache/640-width/images/print-edition/20180721_STC872.png
https://shreevatsa.wordpress.com/2010/03/07/matplotlib-tutorial/
https://matplotlib.org/users/installing.html#windows
https://matplotlib.org/tutorials/introductory/sample_plots.html#sphx-glr-tutorials-introductory-sample-plots-py
https://www.ochobitshacenunbyte.com/2017/06/09/instalar-paquetes-escritos-en-python-con-pip/
https://towardsdatascience.com/5-quick-and-easy-data-visualizations-in-python-with-code-a2284bae952f
https://hackernoon.com/why-is-python-so-slow-e5074b6fe55b