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.
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:
- Forma parte de las herramientas básicas que todo administrador de sistemas en GNU/Linux debe tener, ¡desinstalar el lenguaje Python en GNU/Linux ocasiona severos problemas!
- PostgreSQL permite guardar directamente programas en lenguaje Python en la base de datos e interpretarlos directamente.
- Nagios, en sus complementos o «plugins» lo utiliza (aparte de otros lenguajes).
- PRTG Network Monitor lo ocupa en sus «sensores» (agentes).
- Para mostrar la temperatura ambiental en una pantalla LCD por medio de un Raspberry Pi.
- Nuestros lectores lo recomiendan, leed los comentarios (en inglés) de esta entrada comparativa de Pandora FMS, Zenoss y Nagios.
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… 😉

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!

- 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.

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

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:

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:


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!

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:

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:

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 |


