Monitorizar ciudades inteligentes con Grafana, Timescale y Sentilo

Monitorizar ciudades inteligentes con Grafana, Timescale y Sentilo

connected devices & IoT

Miquel Asensio es Project Manager en SEIDOR Opentrends y está enfocado en proyectos de smart cities (ciudades inteligentes), analítica de datos e IoT (Internet of Things). 

En la compañía, construimos y mantenemos Sentilo, una plataforma de sensores y actuadores de código abierto para ciudades inteligentes. Como parte de ese proyecto, siempre estamos buscando formas de integrar herramientas de código abierto que puedan ahorrar tiempo y dinero al mismo tiempo que aumentan la eficiencia de las smart cities

Como si se tratase de un puzzle, procuramos incorporar la herramienta “Open source” que mejor encaje para cada caso de uso a medida que surgen nuevas necesidades. Inicialmente, desarrollamos Sentilo en 2012 como un pequeño proyecto de IoT en colaboración con el Ayuntamiento de Barcelona y hoy, contamos con un producto maduro respaldado por una comunidad diversa de entidades públicas y privadas. Como referencia, la instancia de Barcelona Sentilo gestiona más de 7,5 millones de mensajes al día. SEIDOR Opentrends mantiene Sentilo para varios clientes, tanto mediante despliegues “on premises” así como  servicio SaaS a través de su spin-off Thingtia. Por último, pero no menos importante, lideramos la Comunidad Sentilo mediante el apoyo económico  del Ayuntamiento de Barcelona.

Como parte de ese crecimiento, y con el objetivo de expandir el conjunto de módulos que sustenta la plataforma, recientemente, incorporamos Grafana y TimescaleDB, las cuales se han convertido en piezas importantes en nuestra solución de ciudad inteligente. En este artículo, explicaré por qué la solicitud de un cliente nos llevó a crear nuevas visualizaciones personalizables con Grafana que ayudaron a mejorar una variedad de procesos en las ciudades inteligentes.

Integración de Grafana y TimescaleDB

Uno de los principales objetivos de Sentilo es entregar información a sus módulos suscritos lo más rápido posible, estos módulos suelen ser otros sistemas externos o fuentes de datos, como un sistema de monitoreo de energía o un data lake corporativo. Para lograr esto, los datos recopilados por los sensores de la ciudad inteligente (de vehículos, paneles eléctricos y más) se almacenan en memoria, lo que nos brinda un alto rendimiento… pero hay que tener en cuenta que la memoria es cara. Este repositorio de datos es sólo temporal; necesitábamos almacenamiento a largo plazo para los datos históricos. 

Para algunas de nuestras implementaciones de Sentilo, los usuarios tienen sus propios data lakes (lagos de datos), por lo que tenemos un conjunto de conectores para diferentes repositorios de destino, como Kafka, Elasticsearch y las bases de datos relacionales más comunes del mercado. Pero este tipo de configuración no funciona para todos los escenarios debido a su volumetría y/o costo. Por este motivo, cuando uno de nuestros clientes nos pidió que creáramos su repositorio histórico desde cero y lo integráramos a su plataforma Sentilo, tuvimos que evaluar varias soluciones para brindar la solución adecuada para el caso de uso.

Necesitábamos algo que nos ayudase a procesar la información en tiempo real y nos permitiera explorar y descubrir datos históricos a través de una herramienta visual interactiva basada en web. Teníamos cierta experiencia previa en el uso de Grafana para el monitoreo del sistema y conocíamos sus excelentes características y las múltiples fuentes de datos integrables. Por lo tanto, después de analizar otras opciones del mercado y hacer varios PoC, decidimos optar por la siguiente combinación:

  • Timescale. Esta base de datos de series temporales de código abierto, que se basa en PostgreSQL, proporciona un alto rendimiento y escalabilidad aun trabajando con grandes volúmenes de datos. También nos brinda un conocido lenguaje de consulta como SQL.
  • Grafana. Esta herramienta de visualización de código abierto tiene un gran conjunto de potentes paneles. Además, proporciona características interesantes para nuestros casos de uso como permitir incrustar contenido, soporte multiusuario y uso compartido de tableros.

Como se puede apreciar en el diagrama de arquitectura, nuestra plataforma de ciudad inteligente se basa en una combinación de bases de datos, sensores, conectores y herramientas. Aquí hay una breve descripción de cómo esas piezas interactúan:

  • Sentilo almacena datos de sensores en dos bases de datos diferentes: Redis para datos en tiempo real y MongoDB para los metadatos del catálogo del sensor.
  • La API de Sentilo proporciona servicios para interactuar con el catálogo y para publicar los datos en tiempo real (1). A continuación, los datos se almacenan en el repositorio correspondiente (2).
  • Un conector Sentilo personalizado, basado en una arquitectura de agente común que recibe el flujo de datos de Redis, recibe la información y la almacena en TimescaleDB (3).
  • Los metadatos del sensor se sincronizan periódicamente con la base de datos Timescale utilizando otro módulo a medida (4).
  • Sentilo proporciona una interfaz web para diferentes propósitos de administración (5). Los administradores pueden administrar su catálogo y visualizar los datos en tiempo real. Y mediante Grafana, los usuarios pueden explorar la base de datos histórica y crear cuadros de mandos específicos (6).
  • Sentilo también incluye una interfaz web enfocada en la ciudadanía, donde cualquier ciudadano puede explorar el mapa de la ciudad,  visualizar los sensores y sus datos de acceso público. 

A través de Grafana, podemos ofrecer visualizaciones más ricas e interactivas adaptadas al sector o tipología específicos que se pueden integrar sin problemas en el sitio web público de la plataforma.

Esta solución se ha implementado para las instancias Sentilo de la Barcelona Smart Region y para el Ayuntamiento de Eivissa (España) a través de Thingtia. Nos brinda un marco interactivo de búsqueda y descubrimiento sobre grandes volúmenes de datos (millones) y amplios marcos temporales (años) con un rendimiento y tiempo de respuesta óptimo.

Los paneles Grafana están integrados en el visualizador público Sentilo estándar y están vinculados a diferentes sectores: monitoreo de ruido, calidad del aire, riego, fuentes de agua y monitoreo de energía. Nuestros clientes pueden crear sus propios tableros potentes de forma autónoma y compartirlos con otros miembros de la comunidad de Sentilo.

Uso de Grafana para obtener valor de big data

Por supuesto, siempre hay que tener en cuenta que cuando trabajas con grandes volúmenes de datos y aplicar filtros, debes optimizar las consultas, agregar índices o limitar los datos que el panel puede administrar, especialmente si esas funciones están abiertas al público. Esto es importante si deseas mantener bajos los costos y brindar resultados rápidos al ejecutar tus consultas.

Aún así, la solución ha demostrado ser un buen enfoque para trabajar con grandes cantidades de datos. Nos ha ayudado a explorar y descubrir datos, y podemos extraer información valiosa al combinar diferentes fuentes. También es una buena manera de crear cuadros de mando potentes que se pueden integrar fácilmente en otros sitios web de la ciudad.

Si desea obtener más información sobre cómo funciona Sentilo o cómo puedes incorporarlo en tus propios planes de ciudad inteligente, puedes consultar la comunidad de Sentilo. Puedes descargar el código gratis, usarlo como SaaS o contactarnos para construir una solución a medida.

Miquel Ángel Asensio

Miquel Ángel Asensio es Project Manager en SEIDOR Opentrends. Está enfocado en proyectos de smart cities (ciudades inteligentes), analítica de datos e IoT (Internet of Things).