Creando un sistema de visualización de series temporales V: recolector de datos con PowerShell

Recolector de Datos

Como vimos en la primera entrada de esta serie, para crear el sistema de visualización de series temporales, utilizamos un Recolector de datos (o varios) para recoger la información que queremos visualizar y almacenarla en la base de datos InfluxDB para su posterior explotación por parte de Grafana.

Los desarrolladores de InfluxDB trabajan en Telegraf, que podríamos describir como un agente basado en plugins que permite recoger datos de diferentes fuentes y almacenarlas en diferentes soportes. Puede obtener datos de diferentes tipos de sistemas gracias a su sistema de plugins (apache, docker, elasticsearch, mysql, sql server…) y almacenarlo en bases de datos como InfluxDB, Graphite, Graylog, Prometheus…

El objetivo principal del sistema de visualización que estoy creando es obtener datos de una infraestructura VMware vSphere y como Telegraf no tiene un plugin específico, me he planteado varias opciones:

  • Desarrollar un script propio
  • Desarrollar un plugin que se integre en Telegraf

Al final me he decantado por crear un script propio por los siguientes motivos:

  • Puedo adaptarlo totalmente a mis necesidades. Los proyectos arriba indicados, son un buen punto para empezar. Junto con los scripts de SexiGraf me ha servido para ver que datos puedo obtener, como guardarlos y también ver lo que les falta y a mi me puede parecer interesante. Puede que para alguien con esos scripts le sea suficiente (recomiendo revisar los sitios en GitHub que he enlazado)
  • Puedo elegir el lenguaje en el que implementar el recolector. Llevo bastante tiempo trabajando con Powershell casi a diario y es un lenguaje en el que me siento muy cómodo por lo que es el lenguaje que voy a utilizar. Podría haber utilizado  otros lenguages como Go, Perl o Python, que tienen liberías para consultar la API de VMware  y así haber sido la excusa para adentrarme en esos lenguajes, pero de momento prefiero quedarme con PowerShell.

Esquema del recolector

Sin entrar al detalle y el código en concreto del recolector que he creado, el esquema básico de las tareas que realiza es el siguiente:

  • Obtener los datos de entrada: obtiene los datos del sistema vSphere al que nos vamos a conectar, el servidor y la base de datos InfluxDB donde vamos a guardar los datos y distintas opciones de los datos a obtener.
  • Conectarse al servidor vCenter (o servidores): utilizando el API de powershell nos conectamos al servidor vCenter con el objetivo de obtener las métricas correspondientes
  • Obtención de las métricas: recorremos los objetos de la infraestructura vSphere (clusters, datastores, máquinas virtuales, hosts…) y de cada uno de ellos obtenemos las métricas que más nos interesan. En algún caso, como decisión de diseño he decidido que algunos de los datos se guarden con los cálculos realizados en el propio recolector (por ejemplo, el ratio de vCPU – pCPU)
  • Guardar los datos en InfluxDB: los datos obtenidos se almacenan en una base de datos InfluxDB

En la siguiente entrada describiré con más detalle los scripts que he creado, las métricas obtenidas y la estructura de datos que genera.

visualizacionseriestemporales-05powercli

Como guardar datos en InfluxDB desde PowerShell

Para terminar esta entrada voy a indicar, de forma resumida, el código que he utilizado para almacenar datos de InfluxDB desde PowerShell.

Datos de conexión

Tenemos que generar una URL en la que indicamos el servidor, el puerto, la base de datos y otras opciones adicionales:

En este ejemplo, he añadido la opción “epoch=s” que indica que vamos a guardar datos con una precisión de un segundo.

Autenticación

Si InfluxDB requiere un usuario y contraseña para acceder:

Generar los Points de InfluxDB

Podemos introducir los datos de uno en uno o que en un mismo paso guardemos varios datos. En ambos casos creamos una variable de tipo string

Un dato

Varios datos (por ejemplo dentro de un bucle)

Enviar los datos a InfluxDB

Con las variables que hemos creado en los puntos anteriores en los puntos anteriores, utilizamos Invoke-Requeste para almacenar los datos

Si el resultado de la ejecución es un código 204 es que ha sido ejecutado correctamente:

 

Actualización Julio 2017:

Incluyo el repositorio donde están algunos de los scripts que he utilizado como recolectores.

https://github.com/robertoorayen/vSphere-InfluxDB

 

2 comentarios en “Creando un sistema de visualización de series temporales V: recolector de datos con PowerShell”

    1. Hola Miquel,

      Perdona por la tardanza, pero se me había pasado tu comentario.

      Voy a revisarlos y los comparto para que estén accesibles a través de Github. En cuanto los tenga, actualizaré la entrada con el enlace.

      Gracias y un saludo,

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.