Monitorizar ciudades inteligentes con Grafana, Timescale y Sentilo

Monitoritzar ciutats intel·ligents amb Grafana, Timescale i Sentilo

connected devices & IoT

Miquel Asensio és Project Manager a SEIDOR Opentrends i està enfocat en projectes de smart cities (ciutats intel·ligents), analítica de dades i IoT (Internet of Things).

A la companyia, construïm i mantenim Sentilo, una plataforma de sensors i actuadors de codi obert per a ciutats intel·ligents. Com a part d'aquest projecte, sempre estem buscant maneres d'integrar eines de codi obert que puguin estalviar temps i diners alhora que augmenten l'eficiència de les smart cities.

Com si fos un puzle, procurem incorporar l'eina “Open source” que encaixi millor per a cada cas d'ús a mesura que sorgeixen noves necessitats. Inicialment, vam desenvolupar Sentilo el 2012 com un petit projecte d'IoT en col·laboració amb l'Ajuntament de Barcelona i avui comptem amb un producte madur recolzat per una comunitat diversa d'entitats públiques i privades. Com a referència, la instància de Barcelona Sentilo gestiona més de 7,5 milions de missatges al dia. SEIDOR Opentrends manté Sentilo per a diversos clients, tant mitjançant desplegaments “on premises” així com servei SaaS a través del seu spin-off Thingtia. Per acabar, però no menys important, liderem la Comunitat Sentilo mitjançant el suport econòmic de l'Ajuntament de Barcelona.

Com a part d'aquest creixement, i amb l'objectiu d'expandir el conjunt de mòduls que sustenta la plataforma, recentment incorporem Grafana i TimescaleDB, les quals han esdevingut peces importants a la nostra solució de ciutat intel·ligent. En aquest article, explicaré per què la sol·licitud d'un client ens va portar a crear noves visualitzacions personalitzables amb Grafana que van ajudar a millorar una varietat de processos a les ciutats intel·ligents.

Integració de Grafana i TimescaleDB

Un dels principals objectius de Sentilo és lliurar informació als seus mòduls subscrits el més ràpid possible, aquests mòduls solen ser altres sistemes externs o fonts de dades, com ara un sistema de monitorització d'energia o un data lake corporatiu. Per aconseguir això, les dades recopilades pels sensors de la ciutat intel·ligent (de vehicles, panells elèctrics i més) s'emmagatzemen en memòria, cosa que ens brinda un alt rendiment… però cal tenir en compte que la memòria és cara. Aquest repositori de dades és només temporal; necessitàvem emmagatzematge a llarg termini per a les dades històriques.

Per a algunes de les nostres implementacions de Sentilo, els usuaris tenen els seus propis data lakes (llacs de dades), per la qual cosa tenim un conjunt de connectors per a diferents repositoris de destinació, com Kafka, Elasticsearch i les bases de dades relacionals més comunes del mercat. Però aquest tipus de configuració no funciona per a tots els escenaris a causa de la seva volumetria i/o cost. Per aquest motiu, quan un dels nostres clients ens va demanar que creéssim el seu repositori històric des de zero i l'integréssim a la plataforma Sentilo, vam haver d'avaluar diverses solucions per brindar la solució adequada per al cas d'ús.

Necessitàvem alguna cosa que ens ajudés a processar la informació en temps real i ens permetés explorar i descobrir dades històriques mitjançant una eina visual interactiva basada en web. Teníem certa experiència prèvia en l'ús de Grafana per a la monitorització del sistema i coneixíem les seves excel·lents característiques i les múltiples fonts de dades integrables. Per tant, després d'analitzar altres opcions del mercat i fer diversos PoC, decidim optar per la combinació següent:

  • Timescale. Aquesta base de dades de sèries temporals de codi obert, que es basa en PostgreSQL, proporciona un alt rendiment i escalabilitat tot treballant amb grans volums de dades. També ens brinda un conegut llenguatge de consulta com a SQL.
  • Grafana. Aquesta eina de visualització de codi obert té un gran conjunt de potents panells. A més, proporciona característiques interessants per als nostres casos d'ús com permetre incrustar contingut, suport multiusuari i ús compartit de taulers.

Com es pot apreciar al diagrama d'arquitectura, la nostra plataforma de ciutat intel·ligent es basa en una combinació de bases de dades, sensors, connectors i eines. Aquí hi ha una breu descripció de com aquestes peces interactuen:

  • Sentilo emmagatzema dades de sensors en dues bases de dades diferents: Redis per a dades en temps real i MongoDB per a les metadades del catàleg del sensor.
  • L'API de Sentilo proporciona serveis per interactuar amb el catàleg i per publicar les dades en temps real (1). A continuació, les dades s'emmagatzemen al repositori corresponent (2).
  •  Un connector Sentilo personalitzat, basat en una arquitectura d'agent comú que rep el flux de dades de Redis, rep la informació i l'emmagatzema a TimescaleDB (3).
  • Les metadades del sensor se sincronitzen periòdicament amb la base de dades Timescale utilitzant un altre mòdul a mida (4).
  • Sentilo proporciona una interfície web per a diferents propòsits d'administració (5). Els administradors poden administrar el seu catàleg i visualitzar les dades en temps real. I mitjançant Grafana, els usuaris poden explorar la base de dades històrica i crear quadres de comandaments específics (6).
  • Sentilo també inclou una interfície web enfocada a la ciutadania, on qualsevol ciutadà pot explorar el mapa de la ciutat, visualitzar els sensors i les dades d'accés públic.

A través de Grafana, podem oferir visualitzacions més riques i interactives adaptades al sector o tipologia específica que es poden integrar sense problemes al lloc web públic de la plataforma.

Aquesta solució ha estat implementada per a les instàncies Sentilo de la Barcelona Smart Region i per a l'Ajuntament d'Eivissa (Espanya) a través de Thingtia. Ens proporciona un marc interactiu de cerca i descobriment sobre grans volums de dades (milions) i amplis marcs temporals (anys) amb un rendiment i temps de resposta òptim.