integración de un sistema de control para una plataforma
TRANSCRIPT
ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INDUSTRIALES Y DE TELECOMUNICACIÓN
UNIVERSIDAD DE CANTABRIA
Trabajo Fin de Grado
Integración de un Sistema de Control para una Plataforma de la Internet de las Cosas
(Integration of a Control Dashboard over a Smart City Internet of Things Platform)
Para acceder al Titulo de
Graduado en Ingeniería de Tecnologías de Telecomunicación
Autor: Ignacio Fernández- Regatillo Rubio
Septiembre - 2016
IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas
2
E.T.S DE INGENIEROS INDUSTRIALES Y DE TELECOMUNICACIÓN
GRADUADO EN INGENIERÍA DE TECNOLOGÍAS DE TELECOMUNICACIÓN
CALIFICACIÓN DEL TRABAJO FIN DE GRADO
Realizado por: Ignacio Fernández-Regatillo Rubio�Director del TFG: Luis Sánchez González��Título: “Integración de un Sistema de Control para una plataforma de la Internet de las Cosas”��Title: “Integration of a Control Dashboard over a Smart City Internet of Things Platform“ Presentado a examen el día: 16 de Noviembre de 2016
para acceder al Título de
GRADUADO EN INGENIERÍA DE TECNOLOGÍAS DE
TELECOMUNICACIÓN Composición del Tribunal: Presidente (Apellidos, Nombre): Sanz Gil, Roberto Secretario (Apellidos, Nombre): Sánchez González, Luis Vocal (Apellidos, Nombre): Villa Benito, Enrique Este Tribunal ha resuelto otorgar la calificación de: ...................................... Fdo.: El Presidente
Fdo.: El Vocal
Vo Bo del Subdirector
Fdo.: El Secretario
Fdo.: El Director del TFG (sólo si es distinto del Secretario)
Trabajo Fin de Grado No (a asignar por Secretaría)
3
AGRADECIMIENTOS
Quisieraagradecerenprimerlugaramifamiliatantoporlaeducacióncomoporlosvaloresquemehaninculcadodurantetodosestosaños,asícomoelapoyomostradoalolargodeestosañosdecarrera.
MenciónespecialaMarina,portodosestosañosquemehaestadoaguantando,siempreconunaactitudpositiva.Deverdad,gracias,porapoyarme,cuidarmeysobretodo,confiarsiempreenmí.
Igualmente, a todosmis compañeros, con los que he tenido la posibilidad decompartirbuenosymalosmomentosalolargodetodaestaetapauniversitaria.
Porultimo,agradeceratodoelcuadrodocentedelaEscuelaTécnicaSuperiordeIngenierosIndustrialesyTelecomunicación,porlosconceptosyvaloresquemehanidoenseñandoalolargodelaformacióncomoIngeniero,especialmenciónamitutor,LuisSánchez, por haberme orientado y ayudado a la hora de realizar este Trabajo,aportándomepartedesusconocimientos,necesariosparalaconsecucióndelmismo.
Graciasporestosaños.
IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas
4
RESUMEN
Elprogresivodesplazamientodelapoblaciónhacialaszonasurbanas,implicaquelosretosalosqueseenfrentanhoylasgrandesciudadesseancadavezmayores,conelobjetivoprimordialdeproporcionarunentornodevidasostenibley lanecesidadactualdeorientarnuestravidahacia lasostenibilidad.Porello,elprincipalobjetivodeesteTrabajoFindeGradonoesotroqueeldecontribuiralamejoradelaeficienciadelosserviciosde losentornosurbanosyconseguirundesarrollomássosteniblede losmismos,medianteeldiseñoe implementacióndeunSistemadeControlqueofrezcaunainterfazvisualenlaqueseconcentretodalainformaciónrelativa a una infraestructura de dispositivos de IoT. Este sistema se haprobadoenparticularparalainfraestructuraIoTdesplegadaenelproyectoSmartSantander.
Una adecuada gestión de los datos, nos llevará a desarrollaraplicacionesqueutilicentoda la informaciónqueproporcionandeformainteligenteyconellodarrespuestaalosretossocialesqueimperanenlaactualidad. Sin embargo, es necesario poder tener un control de lainfraestructura subyacente a través del cual el proveedor de lainfraestructura pueda en todo momento detectar funcionamientosanómalosycorregirlosoportunamente.Paraello,elobjetivoqueseaborda,eseldecrearunaPlataformadeControl(Dashboard)quefacilitelagestióndelainfraestructuraIoTsubyacenteaunaSmartCity.
Así, el alcancede este trabajo será conseguir la integraciónde unsistemadecontrol,queoperarásobrelaplataformaSmartSantander,conelfindequelosgestorescuentenconuncuadrodecontrolvisualenqueseconcentre la información relativa a toda la infraestructura, facilitando yagilizandodeestemodosugestión,medianteunainterfazvisualatractiva,atravésdelacualsepresentarálainfraestructuradesplegada.
5
ABSTRACT
The progressive displacement of the population to urban areasimplies that the challenges of today’s large cities are growing. Its mainobjectiveistosupplyasustainableenvironmentandtherealnecessitytoorientateourlivestowardssustainability.Duetothis,theprimarypurposeof thisend-of-degreeProject is tocontribute to the improvementof theurban areas efficiency services, and to achieve a more sustainabledevelopmentforthem,throughthedesignandimplementationofaControlSystem that provides a visual interface in which all the informationregardingan IoTdevice infrastructure is gathered. This systemhasbeenparticularly tested for the IoT infrastructure deployed in theSmartSantanderProject.
Anadequatedatamanagementwillleadustodevelopapplicationswhichusealltheinformationtheyprovideinanintelligentway,andwiththat,wewillbeabletoprovideanswerstothesocialchallengesthatprevailtoday. Nevertheless, it is necessary to have control over the underlyinginfrastructure throughwhich the infrastructure supplier can at all timesdetectmalfunctionsandcorrecttheminduecourse.Forthatpurpose,theaddressedobjectiveistocreateaControlPlatform(Dashboard)thateasesthemanagementoftheunderlyingIoTinfrastructureofaSmartCity.
Thereby, the scope of this Project is to achieve the inclusion of acontrol systemwhichwill operate over the SmartSantander platform, inorder toprovidetheagentswithavisualcontrolboxthatassemblestheinformationrelatedtotheentireinfrastructure,facilitatingandspeedingupits management through an attractive visual interface, whereby thedeployedinfrastructurewillbepresented.
IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas
6
ÍndiceAGRADECIMIENTOS........................................................................................3
RESUMEN.......................................................................................................4
ABSTRACT......................................................................................................5
ÍndicedeFiguras............................................................................................8
ÍndicedeTablas..............................................................................................9
ListadodeAcrónimos...................................................................................10
INTRODUCCIÓN.......................................................................11
1.1 Motivación................................................................................................11
1.2 Objetivosdelproyecto..............................................................................12
1.3 Resumenejecutivo....................................................................................13
MarcodelDesarrollo...............................................................15
2.1 InternetdelasCosas,Big-DataySmartSantander.....................................15
2.1.1 InternetdelasCosas.................................................................................15
2.1.2 BigData.....................................................................................................17
2.1.3 SmartSantander........................................................................................19
2.2 Logstash,ElasticsearchyKibana................................................................23
2.2.1 Logstash....................................................................................................23
2.2.2 Elasticsearch..............................................................................................26
2.2.3 Kibana........................................................................................................28
2.3 PlataformasCloud:Infrastructure,PlatformandSoftwareasaService.....30
2.3.1 IaaS............................................................................................................33
2.3.2 PaaS...........................................................................................................33
2.3.3 SaaS...........................................................................................................33
SistemadeControldeInfraestructurasIoT..............................35
3.1 ArquitecturadelSistema...........................................................................35
3.2 AccesoalasObservacionesdeSmartSantander........................................36
3.3 MódulodeCaptacióndeDatos.................................................................40
3.4 MódulodeAlmacenamiento.....................................................................45
7
3.5 MódulodeRepresentación.......................................................................49
3.6 DesplieguedelSistema.............................................................................51
3.7 DashboardsdeControl..............................................................................53
DirectricesparalaExtensibilidaddelSistema...........................59
Conclusionesyfuturaslíneasdetrabajo..................................63
5.1 Conclusiones.............................................................................................63
5.2 FuturasLíneasdeTrabajo..........................................................................65
Bibliografía..............................................................................66
Anexo1.ArchivodeconfiguracióndeLogstash............................................67
IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas
8
ÍndicedeFigurasFigura1.DescripciónGráficadelMundoInterconectado.............................................15Figura2.TiposdeDatosdeBigData.............................................................................18Figura3.RepresentaciónGráficadeSmartSantander...................................................20Figura4.FuncionalidadesdeLogstash..........................................................................23Figura5.ConfiguraciónAvanzadadeunaLogstashPipeline.........................................25Figura6.EjemplodeunDashboard...............................................................................30Figura7.ClasificacióndelasCloud................................................................................32Figura8.SeparacióndeResponsabilidadesdelaComputaciónenlaNube.................34Figura9.ArquitecturadelSistema................................................................................35Figura10.GráficodelaSistemáticadeunaSubscripciónaSmartSantander...............36Figura11.CreacióndeunaSubscripción.......................................................................37Figura12.ElementosdeunaSubscripción....................................................................38Figura13.ArquitecturadeLogstash.............................................................................41Figura14.CódigodelInputdeLogstash........................................................................41Figura15.CódigodelFiltrodeLogstash........................................................................43Figura16.CódigodelFiltrodeLogstash........................................................................44Figura17.CódigodelaSalidadeLogstash....................................................................45Figura18.FormatoCoordenadasdeLocalizacióndeSmartSantander.........................46Figura19.MappingdeElasticSearch.............................................................................46Figura20.EstructuradeElasticSearch..........................................................................48Figura21.InterfazWebdeKibana................................................................................49Figura22.InterfazWebdeKibana(Visualize)...............................................................50Figura23.CapturadelDashboardGeneral...................................................................53Figura24.PersonalizacióndelFiltrodelosDashboards...............................................54Figura25.VisualizacionesdelDashboardGeneral........................................................55Figura 26. Gráficas de Línea del Dashboard General. (a) Nivel de llenado de los
contenedoresdebasura(b)Niveldecargadelasbaterías.......................................................55Figura27.GráficadeÁreadelaTemperaturaMedia...................................................56Figura28.GráficosCircularesyLinealesdelNiveldeBatería.......................................56Figura29.GráficoCirculardelaBatería........................................................................57Figura30.GráficadelCampoElectromagnético...........................................................57Figura31.CreacióndeBúsquedasenKibana................................................................59Figura32.OpcionesdeVisualizacióndeKibana............................................................59Figura33.IlustracióndelosDistintosCamposenlaCreacióndeVisualizaciones........60Figura34.BarradeCreacióndeDashboard..................................................................60
9
ÍndicedeTablasTabla1.NúmerodeObservacionesgeneradasdiariamenteenelbancodepruebasde
SmartSantander.........................................................................................................................22
IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas
10
ListadodeAcrónimos
API InterfazdeProgramacióndeAplicaciones
DB BasedeDatos
DSL DomainSpecificLanguage
GFS GoogleFileSystem
HDFS HadoopDistributedFileSystem
HTTP ProtocolodeTransferenciadeHipertexto
IaaS InfraestructuracomoServicio
IoT InternetofThings
IP ProtocolodeInternet
JSON NotacionesdeObjetosJavaScript
M2M MachinetoMachine
MIT MassachusettsInstituteofTechnology
PaaS PlataformacomoServicio
REST TransferenciadeEstadoRepresentacional
SaaS SoftwarecomoServicio
TCP ProtocolodeControldeTransmisión
TIC TecnologíasdelaInformaciónylaComunicación
XML LenguajedeMarcasExtensible
Capítulo1.Introducción
11
INTRODUCCIÓN
1.1 Motivación En las últimas décadas, estamos asistiendo a nivel mundial, a un progresivo
desplazamientode lapoblaciónhacia laszonasurbanas,o loquees lomismo,aunaprogresivaurbanización.Estehecho,implicaquelosretosalosqueseenfrentanhoyendíalasgrandesciudadesseancadavezmayores.Enestesentido,estosretossepuedenresumirenunobjetivoúnico,proporcionarunentornodevidaurbanosostenible.LasciudadesinteligentesoSmartCities,nosonsinoelresultadodelanecesidadactualdeorientarnuestravidahacialasostenibilidad.
CadavezmásciudadesimplementanlasinfraestructurasbasadasenlaInternetde lasCosas.El IoTes,entreotros,unode losnovedososhabilitadoresde lasSmartCities. El avance en la microelectrónica y la evolución que están alcanzando lastecnologíasinalámbricas,hanpermitidolaintegracióndelmundofísicoconelmundodigital.ElIoTsecomponededispositivostantofijoscomomóvilesqueinteractúanentreellos.LasinfraestructurasbasadasenlaInternetdelasCosaspermitenmonitorizarelcorrectofuncionamientodesusestructuras,asícomoadaptarsufuncionamientoantenuevoseventosdeformamásflexible.
LosobjetivosdeesteTrabajoFindeGradoestánembebidosenestosgrandesobjetivosquelasgrandesciudadestienen,yquenosonotrosquemejorarlaeficienciadelosserviciosdelosentornosurbanosyconseguirundesarrollomássostenibledelosmismos.
UnadelasclavesdelconceptodeSmartCityeslacapacidad,quelaevolucióndelasTecnologíasdelaInformaciónylasComunicacioneshapermitido,deaccederaunacantidad cada vez mayor de información acerca del entorno urbano y todos lossubsistemasqueenélcoexisten.Sinembargo,esnecesariopodergestionarymanejartalcantidaddeinformacióndetalmaneraquesepuedasintetizaryseleccionartodalainformaciónypoderhacerunbuenusodelamisma.Unaadecuadagestióndelosdatosnosllevaráadesarrollaraplicacionesqueutilicentodalainformaciónqueproporcionande forma inteligente y con ello afrontar los retos sociales y medioambientalesanteriormentereferidos.
Siunodelosretosanivelmundial,esconseguirciudadessosteniblesyeficientes,enlasquelosciudadanospuedeninteractuardeformadinámicaconlaadministracióny losservicios,unode losretosdeesteTrabajoFindeGradoescontribuirenalgunamedidaaello.
ElcontroldelaoperativadeunaplataformadelaInternetdelasCosas,requierelaobservacióndevariossistemasycomponentesqueseencuentrandistribuidosenunaarquitecturademúltiplesniveles.Portodoello,elobjetivodelTrabajoqueseaborda,es el de crear una Plataforma de Control (Dashboard) que facilite la gestión de laInfraestructuraIoTsubyacenteaunaSmartCity.
IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas
12
Asumirunatareadegestióndeunainfraestructuraquepuedellegaracontenermillaresdedispositivos,sepuedeconvertirenunprocesomuyengorroso,quenoharíasinolimitarlacapacidaddereacciónyanálisisdelgestorresponsabledeestaplataformasi se hace de forma manual.�La infraestructura desplegada por el ProyectoSmartSantander,nosofrecelaposibilidaddedesarrollareinvestigarnuevosprotocolosytecnologíasderedenelentornodelasredesdesensores.Dehecho,elserlaciudaddeSantanderprobablementelaciudadquecuentaconmássensoresdelmundo(sehandesplegadomásde20000dispositivosenlaciudadyentornosparadiferentesámbitosdeaplicación)animóalarealizacióndeesteproyectoquesepresenta.
ConesteProyectosepretendeconseguirlaintegracióndeunsistemadecontrol,queoperarásobrelaplataformaSmartSantander,conelfindequelosgestorescuentenconuncuadrodecontrolvisualenelqueseconcentrelainformaciónrelativaatodalainfraestructura.
El cuadro de control diseñado será accesible víaweb y el sistema de controlestará basado en tres herramientas propietarias de Elastic: Logstash(módulo decaptacióndedatos);Elasticsearch(módulodealmacenamiento)yKibana(móduloderepresentación).
1.2 Objetivos del proyecto ElprincipalobjeticodeesteTrabajoes:
DiseñareimplementarunSistemadeControlqueofrezcaunainterfazvisualenelqueseconcentretodalainformaciónrelativaalainfraestructuradedispositivosIoTdesplegadaenelproyectoSmartSantander.
Este Sistema de Control permitirá que se opere sobre la plataforma deSmartSantander,quelosgestorescuentenconuncuadrodemandoquefaciliteyagilicesu gestión, así como una interfaz visual atractiva a través de la cual presentar lainfraestructuradesplegada.
Paraconseguiresteobjetivo,sehaprocedidoa:
• Conocerlatipologíadedatosproporcionadaporlossensores.SehaestudiadoelmodelodedatosutilizadoporSmartSantanderalahoradegenerarlainformación.ConocerycomprenderelmodeladodelainformaciónesfundamentalparasuposteriortratamientoporpartedelSistemadeControldesarrolladoenesteTrabajo.
• Capturarlosdatosquenosproporcionanparaprocederasuanálisis.Paraellosehanevaluado lasdiferentesopcionespermitidaspor laplataformadeSmartSantanderyseleccionadalaquemejorseajustaa las tecnologías empleadas por el Sistema de Control que se hadesarrollado.
• Estudiarycomprendercadaunadelasherramientasintegradasenel
SistemadeControl.Esteestudiohapermitidoquesehayanadquirido
Capítulo1.Introducción
13
losconocimientosnecesariosenlaimplementaciónygestióndelasmismas,parapoderexplotarsusposibilidadesysuutilización,quenosllevenaunaexitosapuestaenfuncionamientodeesteTrabajo.
• IntegrarydesarrollarelSistemadeControlhasido laúltimade las
tareasdesempeñadas.
1.3 Resumen ejecutivo ElTrabajoFindeGradoquesepresentaestádivididoencincocapítulos.Enel
primercapítulo,apartedelpresenteresumenejecutivo,sellevaacabounaexposicióndelasmotivacionesquehanllevadoaldesarrollodelmismo,asícomolosobjetivosquesepretendenconelmismo.
Enelsegundocapítulo,sedescribeelmarcotecnológicoenelquesehabasadoesteTrabajo,abordandoenprimerlugarconceptosyestudiosdelaIoT,BigData,asícomo la descripción del Proyecto SmartSantander. En segundo lugar, se describen yestudianlasherramientasLogstash,ElasticsearchyKibana,culminandoelcapítuloconladescripciónsomeradelasplataformascloud.
El tercer capítulo se centra en el Sistema de Control de Infraestructuras IoT,incluyendolaarquitecturadelsistema,elaccesoalasobservacionesdeSmartSantanderydesarrollandolosmódulosdecaptacióndedatos,eldealmacenamiento,asícomoelmóduloderepresentación.DesarrollandofinalmenteenestecapítuloeldesplieguedelsistemaylosDashboardsdecontrol.
A continuación, en el capítulo cuarto se especifican las directrices para laextensibilidad del sistema mediante un pequeño tutorial explicando las distintasposibilidadesdeampliacióndelosdistintosDashboards.
Enelquintoyúltimocapítuloseexpondrántodas lasconclusionesalcanzadastrasanalizarlosresultados,asícomolasposiblesfuturaslíneasdetrabajoquequedanabiertas.
Capítulo2.MarcodelDesarrollo
15
MarcodelDesarrollo
2.1 Internet de las Cosas, Big-Data y SmartSantander
2.1.1 Internet de las Cosas
La Internetde lasCosas (IoT, por sus siglas en Inglés) esun conceptoque serefierealainterconexióndigitaldelosobjetoscotidianosconinternet.
LaIoT,sebasaensensores,enredesdecomunicacionesyenunainteligenciaquemanejatodoelprocesoylosdatosquesegeneran.Lossensoressonlossentidosdel sistema y para que puedan ser empleados de forma masiva, deben tener bajoconsumoycoste,unreducidotamañoyunagranflexibilidadparasuusoentodotipodecircunstancias.
Figura1.DescripciónGráficadelMundoInterconectado
Esteconcepto,fuepropuestoporKevinAshtonen1999enelAuto-IDCenterdelMIT1,dondesellevabanacaboinvestigacionesenelcampodelaidentificaciónporradiofrecuenciaytecnologíasdesensores.
1MIT:“MassachusettsInstituteofTechnology”
IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas
16
LaIoT,enesencia,esunsistemadecomunicacióndemáquinaamáquina,perosusimplicacionesvanmuchomásalláquesimplementelainterconexióndedispositivos.
AligualqueocurreconlaInternet,supotencialsedesvelacuandoseplanteanlasaplicacionesquepuedellegarasoportar.LosdatosdelaIoTcreanoportunidadesparaanalizarlasituacióndeunentornoenunmomentodadoyactuarenconsecuencia,habida cuenta de que no sólo se interconectan dispositivos sensores sino tambiénactuadores.
Desdehacemuchosañossevienetrabajandoconlaideadehacerunpocomásinteractivos todos los objetos deuso cotidiano.Así la IoT, permitequeobjetos, queantiguamente se conectaban mediante circuitos cerrados, como comunicadores,cámaras,sensoresydemás,(loquesehavenidoadenominarInternet-of-Things)ahorasepuedanexportarsusserviciosdemaneraglobalatravésdelaredderedes.
Sepodríapuesdefinir,comounaredqueinterconectaobjetosfísicosvaliéndosedeInternet.Sevaledeunhardwareespecializadoquelepermitenosólolaconectividadainternet,sinoquetambiénprogramaeventosespecíficosenfuncióndelastareasqueleseandictadasremotamente.
NohayuntipoespecíficodeobjetosconectadosalaIoT,enrealidadsonobjetosquefuncionancomosensoresyobjetosquerealizanaccionesactivas.CadaunodelosobjetosconectadosaInternet,tieneunadirecciónIPespecíficaymedianteesadirecciónIPpuedeseraccedidopara recibir instrucciones.Asímismo,puedecontactarconunservidorexternoyenviarlosdatosquerecoja.
LaIoT,nohaencontrado,alcontrarioqueotrastecnologías,sufocodeexpansiónen el mercado del consumo. Si bien Apple y Google han dado algunos pasos contecnologíascomoHomeKityAndroidHome,esenelsectorprivado,dondeelinternetdelascosasseestáhaciendocadavezmáspopular:
• Cadavezmásciudades implementanlas infraestructurasbasadasen laIoT: control de semáforos, puentes, vías de tren, permitiendo de estemodo monitorear el correcto funcionamiento de sus estructuras, asícomo adaptar más flexiblemente su funcionamiento ante nuevoseventos.LasaplicacionesIoTquepodemosencontraractualmenteenlasciudades inteligentes son variadas, como aparcamientos inteligentes,controldetráfico,alumbradosinteligentes…
• Casas inteligentes, en las que el objetivo es lograrmejores niveles de
confortmientrassedisminuyeelgastototal.• En la industria de producción en masa, cada vez más empresas
centralizanelcontroldelainfraestructuraenloqueseconocehoyendíacomoFactoría4.0
Capítulo2.MarcodelDesarrollo
17
• Además, en el sector de la salud y del control ambiental, también se
vislumbraun granpotencial para la IoT (p.ej. telemedicina, control deincendios,etc).
Si bien haymuchasmaneras en que la IoT podría afectar a la sociedad y losnegocios,estassepuedencondensarentresgrandesáreasquesoncomunesacualquieraplicacióndelasqueseintuyetengalaIoT,asaber,comunicación,controlyahorrodecostes.
Unpunto importantede la IoT,esque requeriráhabilidadesy conocimientosespecíficos combinados (tecnológicas, matemáticas o de funcionamiento de lasorganizaciones), en un perfil que hasta ahora no existía. Esto abrirá nuevasoportunidades de trabajo, como son los llamados gestores de datos que requierenconocer y manejar las nuevas herramientas para la captura, el análisis y elaprovechamientodelosdatos.
2.1.2 Big Data
SedenominaBigDataalagestiónyanálisisdeenormesvolúmenesdedatosquenopuedensertratadosdemaneraconvencional,alsuperarloslímitesycapacidadesdelasherramientasdesoftwarequehabitualmenteutilizamosparalacaptura,gestiónyprocesamientodedatos.
Esunconceptoqueenglobatecnologíasyserviciosdeinfraestructurasquehansido creados para dar solución al procesamiento de grandes conjuntos de datosestructurados,semiestructuradosonoestructurados.
Los datos estructurados son aquellos que tienen longitud y formato y quepuedenseralmacenadosentablas;losdatosnoestructuradossonaquellosquecarecendeunformatodeterminadoyquenopuedenseralmacenadosenunatabla,puedenserde tipo texto (documentos Word) y de tipo no texto (audio, video); y lossemiestructurados,aquellosquenopertenecenabasesdedatosrelacionalesyaquenoselimitanacamposdeterminados(documentosXML,HTML...).
ElobjetivodeBigData,esconvertir losdatosa información, facilitandoasí latomadedecisiones,inclusoentiemporeal.Peroquizá,comopiensanlamayoríadelosexpertos,másqueunacuestióndetamaño,esunacuestióndeoportunidaddenegocio.
HablamosdeBigDatacuandolosvolúmenessuperanlacapacidaddesoftwarehabitualparasermanejadosygestionados.Cuandosehabladegrandesvolúmenes,seestá hablando de Terabytes o Petabytes. Así, esto permite incluir en este tipo de
IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas
18
proyectos informaciones(logs)quehastahacepocotiemponoseutilizabaporquelatecnologíanopermitíaprocesarlosenuntiemporazonable.
La gestión de una información desestructurada precisa de una tecnologíadiferenteypermitetomardecisionesbasadaseninformaciónquetienenimportantesgradosdeinexactitud.Muchosdeestosalgoritmosserelacionanconlostratamientosdesistemasavanzadosdelógicadifusa.
Peroademásdelgranvolumendeinformación,existeunagranvariedaddedatosquepuedenserrepresentadosdediversasformasentodoelmundo,porejemplodesistemasGPS,dispositivosmóviles,video,audio,anemómetros,etc,loscualespuedenmedirycomunicarelmovimiento,elposicionamiento,latemperatura,lahumeda,etc.detalformaquelasaplicacionesqueanalizanestosdatosrequierenquelavelocidadderespuestasealomásrápidaposibleparalograrobtenerlainformacióncorrectaenelmomentopreciso.
Si bien existe una amplia variedad de tipos de datos a analizar, la Figura 2muestralosmásutilizados:
1. Web and Social Media, incluye contenido web e información que es
obtenidadelasredessocialescomoFacebook,Twitter,etc.
Figura2.TiposdeDatosdeBigData
Máquina-a-Máquina
• Contadoresdeconsumoeléctricos
• EtiquetasRFID• Sensoresdelecturade
plataformaspetrolíferas• SeñalesGPS
WebandSocialMedia
• TwitterFeeds• FacebookPostings• WebContent
DatosBiométricos
• ReconocimientoFacial
• Genética
DatosGeneradosporHumanos
• Grabacionesdecentrosdellamadasdevoz
• Email• Registroselectrónicosmédicos
• Registrodetalladodellamadastelefónicas
• Registrosdefacturacióndeserviciospúblicos
GrandesTransaccionesdeDatos
Capítulo2.MarcodelDesarrollo
19
2. Máquina-a-Máquina (M2M), que se refiere a las tecnologías quepermitenconectarseaotrosdispositivos.
3. GrandesTransaccionesdeDatos,queincluyeregistrosdefacturación.4. DatosBiométricos,queeslainformaciónbiométricaenlaqueseincluyen
huellasdigitales,reconocimientosfaciales…5. DatosGeneradosporHumanos,comonotasdevoz,correoselectrónicos,
estudiosmédicos…
Componentes de una plataforma Big Data
Actualmentequientieneelliderazgoentérminosdepopularidadparaanalizarenormescantidadesdeinformación,eslaplataformadecódigoabiertoHadoop2.
Hadoop, está inspirado en el proyecto de Google File System (GFS) y en elparadigma de programación MapReduce, el cual consiste en dividir en dos tareas(mapper-reducer)paramanipularlosdatosdistribuidosanodosdeunclúster,lograndounaltoparalelismoenelprocesamiento.
Hadoopestácompuestodetrescomponentes:HadoopDistributedFileSystem(HDFS),HadoopMapRduceyHadoopCommon.
PeromásalládeHadoop,unaplataformadeBigData,consisteenunecosistemadeproyectosqueen conjuntopermiten simplificar, administrar, coordinar y analizargrandesvolúmenesdeinformación.
2.1.3 SmartSantander
SmartSantanderesunproyectodeinvestigacióncientíficapertenecienteal7ªProgramaMarco de la Comisión Europea, en el que se han diseñado, desplegado yvalidado una plataforma para la experimentación en la IoT compuesta por más de20.000dispositivos ( sensores, captadores, actuadores, cámaras, terminalesmóviles,etcétera)portodalacapitalcántabra,formandounespaciovirtualdondelosobjetossecomunicanentresíytrasmiteninformaciónparalaspersonasconelfindemejorarsubienestar(calidaddevida).
Elcampodepruebasque laciudadofrece,creaunesquemadecolaboración,entrelopúblicoyloprivado,cuestiónquehasidodesdeelinicio,unodelosmotoresdelproyectoSmartSantander,noyasóloenelProyectoEuropeoqueledionombre,sinoenelglobaldelaideadeSantandercomociudadinteligente
2Hadoop:“frameworkdesoftwarequesoportaaplicacionesdistribuidasbajounalicencialibre”.
IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas
20
SmartSantanderseencuadradentrodelretodelasRedesUbicuasyConfiableseInfraestructurasdeServicio,conelobjetivodestinadoadesarrollarlainvestigación,enrelaciónalaInternetdelFuturo,basadaenlaexperimentaciónsobreinfraestructurasreales.
El núcleo principal de las instalaciones que comprenden más de 20000dispositivos,selocalizaenlaciudaddeSantanderysusalrededores,incluyendopuntossingularesdelaComunidaddeCantabria.
Figura3.RepresentaciónGráficadeSmartSantander
SmartSantander es una aplicación real y a gran escala de la llamada“computaciónubicua”,yestacomputaciónesunparadigmadelatelemáticaquetieneporobjeto la integracióndepequeñosdispositivosysensoresentodo losaparatosyobjetosdenuestravidacotidiana,detalformaquesepuedaninterconexionarseentreellos,pudiéndoseintercambiardeestemodoinformaciónútilentreellos.LoquesehavenidotambiénallamarcomunicaciónMáquinaaMáquina(M2M).
Como vemos en la Figura 3, los dispositivos que utiliza son demuy pequeñotamaño(nodos),conunacapacidaddecomputaciónmuy limitada,peroa losqueesposible acoplar sensores de diversa naturaleza para que puedan captar datos delentorno.Estosdatosfluyenatravésdelaredhastaunpuntodeconcentracióndondelainformaciónquecaptanlossensoresestratadaconelobjetodeobtenerunservicioútil.
Capítulo2.MarcodelDesarrollo
21
Para laconsecuciónde losobjetivosdelproyecto, laplataformasoftwarey lainfraestructurafísicadesplegadadebenofrecerunaseriedecaracterísticasnecesariasparaquelafuturaexperimentaciónpuedarealmentesuponerunavancecualitativoenla investigación e innovación de los campos de la IoT, las Ciudades Inteligentes y laInternetdelFuturo.
Plataforma SmartSantander
LaplataformaSmartSantander, sebasaenunaarquitectura formadapor tresniveles:
• Nivel de Dispositivo IoT, que proporciona el sustrato necesariocompuestopor lospropiosdispositivos;estos son recursos limitadosyexportandatosfiablesqueaseguranconunaseriedemedidas.
• ElniveldeGatewayIoT,queenlazalosdispositivosIoTenlosbordesdelaredaunainfraestructuraderedcentral.
• ElniveldeServidor,quedisponededispositivosdegrancapacidad,loscualessonconectadosdirectamenteconlainfraestructuraderedcentral.Los servidorespuedenusarse como repositorios dedatos IoT, y comoservidoresdeaplicaciónquepuedenserconfiguradosparaofrecerunagranvariedaddediferentesserviciosIoTyaplicaciones.
Análisis de generación de datos de implementación de ciudades
Dada la gran cantidad de datos que se generan y deben ser manejados,almacenadosypuestosadisposición,enestasecciónseresumirálaformaenquesegeneranylascifrasaproximadasdedatosatratar.
Patronesdegeneracióndedatos
El patrón de generación de datos se define por el servicio para el que estádestinado.Podemosidentificardospatrones:eldegeneracióndeobservaciónperiódicaydebasadaeneventos.
Los dispositivos IoT programados con el patrón de observación periódicainformarán una observación que contiene la información detectada en una base defrecuencia configurable ( Dispositivos para servicios de vigilancia ambiental, deintensidaddeltráficoyderiesgosdeparquesyjardines).SinembragolosdispositivosdeIoTquesededicanalestacionamientoalairelibrefuncionanenformadeevento,asísolo informan sobre la detección de un cambio en el parámetro que estánmonitorizando(SensibilizaciónParticipativa).
IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas
22
Cantidaddedatosgenerados
Uno de los objetivos de la plataforma SmartSantander era apoyar laexperimentaciónavanzadadelaIoT,yparaelloydadoqueelpatróndegeneracióndeobservaciónperiódicaesconfigurable,elobjetivoeraestablecerunaaltafrecuencia.
Teniendoencuentasólolasnecesidadesdeservicio,lafrecuenciaseleccionadaconduce a una situación de sobremuestreo. Sin embargo, esto permitió unaexperimentaciónmásamplia.Paralamayoríadelosdispositivos,elperíododetiempoutilizadoparainformardelasnuevasobservacionessefijóencincominutos.Paralosdispositivosqueusanelpatróndegeneracióndeobservaciónbasadoeneventos,elnúmerodeobservacionesreportadasdependesolamentedelusorealdelservicio.
LaTabla1resumeelnúmerodeobservacionesgeneradasdiariamentedentrodellechodepruebasSmartSantanderduranteMarzode2014.
Tabla 1. Número de Observaciones generadas diariamente en el banco de pruebas deSmartSantander
Este Proyecto, es único en el mundo y ofrecerá un excelente campo deexperimentación a la comunidad científica europea, puesto que SmartSantanderestablecerálasbasesparalacomunicaciónentreelementosheterogéneos,permitiendolafederaciónconotrasredesdesimilarnaturalezaenelrestodeEuropayelmundo.EsteProyecto,haceposiblequeconlagrancantidaddesensoresdequedispone,secumplaelobjetivodeconstruiruna“CiudadInteligente”.
Servicio ObservacionesdiariasMonitoreoambiental 139.370
IrrigacióndeParquesyJardines 8,365MonitorizaciónAmbientalMóvil 82.726Ocupacióndeaparcamiento 13.489
Lagestióndeltráfico 54.720DetecciónParticipativa 6.352Realidadaumentada 1.489
Capítulo2.MarcodelDesarrollo
23
2.2 Logstash, Elasticsearch y Kibana
2.2.1 Logstash
Logstashesunpotentemotorderecopilacióndedatosdecódigoabiertoconcapacidadesdepipeliningentiemporeal.Permiteunificardinámicamentelosdatosdediferentes fuentes y normalizar los datos a un único modelo, así como hacer queconverjanaldestinoodestinosqueseelijan.
Logstash,aunqueinicialmentenacióparalarecopilaciónderegistros,poseeunacapacidad que va mucho más allá de ese uso. Cualquier tipo de evento puede serenriquecido y transformadomediante distintos tipos de plug-ins (entrada, filtrado ysalidas).
Principales funcionalidades de Logstash
• ProcesamientodedatosescalablehorizontalmenteconunafuertesinergiaconElasticSearchyKibana.
• Arquitecturadetuberíasconectable:recolectar,mapearyorganizardiferentesentradas,filtrosysalidas.
• Comunidadextensibleyecosistemadeplug-insparalosdesarrolladores:másde200plug-insdisponibles,abiertalaposibilidaddecrear,desarrollarycompartirconlacomunidad.
Figura4.FuncionalidadesdeLogstash
IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas
24
Fuentes de datos para Logstash
Logstash,fuediseñadopararecopilardatosprovenientesdeficherosdelogsconel fin de pre-procesarlos y enviarlos a un sistema de almacenamiento. Pero laherramienta ha evolucionadomucho y existemultitudde entradas quenos permiteobtenerdatosdesdefuentesdedatosdelomásvariado.
LasfuentesdedatosparaLogstashsonmúltiples,ylomásimportanteesquesonampliables.Losejemplosmásdesarrolladosporlacomunidadson:
§ LogsyMétricas:• Manejatodotipodedatosderegistro
o RegistroswebcomoApache,Registrosdeaplicacionescomolog4jparaJava…
o Capturaotrosformatosderegistroscomosyslog,eventosdeWindows,deredycortafuegos,ymuchosmás…
• Recoge las métricas de Ganglia3, collectd4, NetFlow5, JMX6 ymuchas otras plataformas de infraestructuras y aplicacionessobreTCPyUDP
§ LaWeb
• Transformalaspeticioneshttpeneventos.o Captura de métricas y otros tipos de datos de las
interfacesdeaplicacionesWeb.
§ SensoreseIoT
Explora una anchura expansiva de otros datos. Logstash puedeformarlacolumnavertebralderecopilacióndeeventosparalaingestióndelos datos enviados desde dispositivos móviles a las casas inteligentes,vehículos,ymuchasaplicacionesespecíficasdelaindustria.
3Glanglia: “softwarequeproveemonitoreoen tiempo real yejecucióndeambientes. EnlazalíneasdeClusterycomputación”.
4Collectd: “programa informático que recoge del sistema las aplicaciones métricasperiódicamenteyproporcionamecanismosparaalmacenarlosvalores”.
5Netflow: “protocolo de red desarrollo por Cisco Systems para recolectar información sobretráficoIP”.
6 JMX: “tecnologíaquedefineunaestructurade gestión, laAPI, los patronesdediseño y losserviciosparalamonitorizacióndeaplicacionesbasadasenJAVA”.
Capítulo2.MarcodelDesarrollo
25
CONFIGURACION DE UNA LOGSTASH PIPELINE
La operativa de Logstash se organiza alrededor del concepto de PipelineLogstash.UnaPipelineLogstash,enlamayoríadeloscasos,tieneunaomásentradas,unaseriedefiltrosyunoovariosplug-insdesalida.Lacantidad,tipoyoperativadecadaunodeestoselementosdentrodeunaPipelineLogstashsedefineatravésdeunarchivodeconfiguración.
TalycomoseveenlaFigura5,enunPipelineLogstash,lasfuentesdedatossecanalizanatravésdeunInputplug-in.Esposibletenervariasfuentesutilizandoelmismoplug-inousandodistintosInputplug-ins
Losfiltrosoperansobreloseventosqueseproducendesdelasfuentesdedatosmoldeándolos, adaptándoloso interpretándolos según seanecesario.Porúltimo, losplug-insdesalidapermitenalmacenarloseventosunavezmodificados.
• Algunasentradasmásutilizadasson:§ File:seleedeunarchivoenelsistemadearchivos,aligual
queelcomandoUNIX“tail-0F”§ Syslog:escuchaenelpuerto514yloanalizadeacuerdo
conelformatoRFC3164.§ Redis:leedesdeunservidorRedis7,usandoamboscanales
y listas redis. Redis es utilizado con frecuencia comointermediarioenunainstalacióncentralizadaLogstash.
§ Beats:procesaeventosenviadosporFilebeat.
7Redis:“setratadeunservidordecachédememoriaqueconocelaestructuradelosdatosquealberga”.
Figura5.ConfiguraciónAvanzadadeunaLogstashPipeline
IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas
26
• Algunosfiltrosútilesson:§ Grok: analiza y estructura arbitrariamente el texto. Es
actualmente lamejormanera en Logstash para analizarlos datos de registro no estructurados en algoestructuradoyconsultable.
§ Mutate:realizatransformacionesgeneralesenloscamposdeloseventos.Puederenombrar,eliminar,reemplazarymodificarloscamposentuseventos.
§ Drop: omite un evento, por ejemplo, depuración deeventos.
§ Clone: realiza una copia de un evento, añadiendo oquitandocampos.
§ Geoip: añade información sobre la ubicación geográficamediantelasdireccionesIP.
§ Lassalidashacenreferenciaalafasefinal.Uneventopuedepasaratravésdevariassalidas,perounavezqueelprocesodesalidasehacompletado,eleventohafinalizadosuejecución.Algunassalidasincluyen:
• Elasticsearch: envía los datos de los eventos aElasticsearch.
• File:escribelosdatosdeuneventoenunficherodeldisco.• Graphite:envíalosdatosdeloseventosaGraphite8.• StatsD:envíalosdatosdeloseventosaStatsD9.
Existe una cuarta funcionalidad dentro de Logstash que ofrece una formademanejarloseventosmásalládelosfiltros.Loscodecs,sonfiltrosquepuedenfuncionarcomopartedeunaentradaosalida.Permitensepararfácilmenteeltransportedesusmensajesdesdeelprocesodepublicación.Destacan:JSON,multilineyplain.
2.2.2 Elasticsearch
Elasticsearchesunmotordebúsquedayanálisisdetextodecódigoabiertodegranescalabilidad.Seutilizageneralmentecomotecnologíasubyacenteparafuncionescomplejas.Nospermitealmacenar,buscaryanalizargrandesvolúmenesdedatosde
8Graphite:“unapopularherramientadecódigoabiertoparaelalmacenamientoyrepresentacióndemétricas”.
9StatsD:“esunasimpleherramientadesarrolladaporEtsyparaagregaryresumirlasmétricasdeapliaciones”.
Capítulo2.MarcodelDesarrollo
27
formamuyrápidayentiempocasireal.Vamásalládelabúsquedaportextograciasaun Lenguaje de Dominio Específico (DSL, por sus siglas en Inglés, Domain SpecificLanguage) y una Interfaz de Programación (API, Application Programming Interface)parabúsquedasmáscomplicadas.
Pordefecto,sepuedeesperarunretrasodeunsegundodesdeelmomentoenelqueelíndiceseactualizaoborrasusdatoshastaelmomentoenqueaparecenlosresultadosdebúsqueda.Estaesunadistinciónimportanteconotrasplataformas.
Sebasaenlossiguientesconceptos:
• Cluster: Es un conjunto de uno o más nodos que mantienen toda lainformación de manear distribuida e indexada. Cada cluster estáidentificadoporunnombre,quepordefectosellamaElasticsearch.
• Nodo:formapartedeuncluster,almacenandoinformaciónyayudando
alastareasdeindexaciónybúsquedadelcluster.
• Index: es una colección de documentos que tiene característicassimilares.
• Sharding y Réplicas: cuando la información que estamos indexando
sobrepasa el límite de una sola máquina, Elasticsearch nos ofrecedistintasmanerasdesaltarnosesta limitación.ElShardingnospermitedividirestosíndicesendistintaspiezas,ofreciéndonoslaposibilidaddeescalarhorizontalmente,ademásdeparalelizarydistribuir lasdistintasoperacionesquehagamossobreestosíndices.Lareplicaciónnosofreceunmecanismoparaqueencasodefalloelusuarionoseveaafectado.
HayquedestacarcomocaracterísticasdeElasticsearch:
• Esunaplataformadebúsquedaentiempocasireal(NRT)
• ElasticsearchproporcionaunaAPImuycompletaypotenteRESTquesepuedeutilizarparainteractuarconelclúster.
• Ademásdesercapazdereemplazardocumentos,sepuedenactualizar,
eso sí cada vez que queramos hacer una actualización, Elasticsearcheliminaeldocumentoyluegoloactualizaenunasolatoma.
• Escapazderealizarmúltiplesoperacionesdeformarápida,evitandola
reddeidayvueltamedianteunaAPIconcisaysimplificada.
IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas
28
• Elasticsearchnorequierequelecreendeformaexplícitauníndiceantesde poder indexar documentos en él, Elasticsearch crearáautomáticamenteelíndicesinoexistieradeantemano.
• Elasticsearch, proporcionaun lenguaje especificodedominiode estilo
JSON,quesepuedeutilizarparaejecutarconsultas.EstoseconocecomoelDSLdeconsulta.
• ElasticsearchestáconstruidousandoJava,yrequierealmenosJava7,ya
quelasversionesanteriorespodríandañarlo.ÚnicamenteJavadeOracleyelOpenJDKsoncompatibles.
2.2.3 Kibana
KibanaesunaplataformadeanálisisyvisualizacióndecódigoabiertodiseñadaparatrabajarsobreíndicesdeElasticsearch.Permitebuscar,vereinteractuarconlosdatos almacenados en los índices Elasticsearch. Puede realizar fácilmente análisisavanzadodedatosyvisualizar losdatosenunaampliavariedaddegráficos, tablasymapas.
Kibanafacilitalainterpretacióndegrandesvolúmenesdedatos.Contieneunasencillainterfazgráficabasadaenunnavegadorweb,permitiendocreardeformarápidadistintospanelesdinámicosdelasconsultasdeElasticsearchentiemporeal.
Se puede instalar Kibana y comenzar a explorar los índices Elasticsearch encuestióndeminutos,sinningunainfraestructuraadicionalrequerida.
LaconfiguracióndeKibanaessimple,tendremosqueindicardondeseencuentraElasticsearch.
ConceptosbásicosdelfuncionamientodeKibana:
• KibanayElasticsearch.Asignacióndinámica:
De formapredeterminada,Elasticsearch,permiteelmapeodinámicopara loscampos. Kibana necesita de dicho mapeo para manejar los distintos campos en lacreación de las visualizaciones, así como para poder gestionar búsquedas,visualizacionesycuadrosdemando.
• ConexiónKibana-Elasticsearch:
Antes de empezar a utilizar Kibana, hay que configurar en Elasticsearch, quéíndicessedeseanexplorar.Asísenospedirádefinirunpatróndeíndices.
Capítulo2.MarcodelDesarrollo
29
• Visualización:
Lasherramientasdevisualizaciónpermitenmostrarlosaspectosdelosconjuntosde datos de diferentes maneras. Las visualizaciones dependen de Elasticsearch“agregaciones”,endostiposdiferentes:agregacionesdetuboyagregacionesmétricas.
• AccesoaKibana:
Kibanaofrecesusvisualizacionesatravésdeunaaplicaciónweb.Elpuntoenelqueescudaelservidorwebquesoportaestaaplicaciónesfácilmenteconfigurable.Deesta formael usuario solo tienequeutilizar sunavegadorwebpara acceder a estasvisualizaciones.
• Mecanismosdedesbordamientos:
Se pueden explorar interactivamente los datos de la página Discover. Así setendráaccesoatodoslosdocumentosquecoincidenconelpatróníndiceseleccionado.Sepuedenenviarconsultasdebúsqueda, filtrar losresultadosdebúsquedayver losdocumentos. Tambiénpodemosverelnúmerodedocumentosque coinciden con laconsultadebúsquedayobtenerestadísticasdevalordecampo.
LapantalladeDiscoverestácompuestapor:
o SearchBaro Timefiltero FieldSelectoro DateHistogramo LogView
• TiempodeFiltrado:
El tiempo de filtrado restringe los resultados de búsqueda a un periodo detiempo específico. Así, se puede establecer un filtro de tiempo si el índice contieneeventosbasadoseneltiempoyuncampodehorasiestáconfiguradoparaelpatróndeíndice seleccionado. Por defecto, el filtro de tiempo se establece en los últimos 15minutos.
• Búsquedadeíndices:
Sepuedenbuscarlosíndicesquecoincidenconelpatrónactual,medianteunabúsquedaespecíficaqueseencuentraenlapáginaDiscover.Asísepuedenintroducircadenasdeconsultassimples,utilizandoelLucene,ousarlacompleta,basadaenJSON.
IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas
30
• Visualización:
A través de “visualize”, se pueden diseñar las visualizaciones de datos. Sepuedenguardar,utilizardeformaindividualocombinarlasenuntablerodemandos.
Lavisualizaciónpuedebasarseenunodelossiguientestiposdefuentesdedatos:
o Unanuevabúsquedainteractiva.o Unabúsquedaguardada.o Unavisualizaciónguardadaexistente.
• Dashboard:
UnDashboard(Figura6)muestraunconjuntodevisualizacionesguardadosengruposquesepuedenorganizarlibremente.Puedeguardaruncuadrodemandosparacompartirovolveracargarenunmomentoposterior.
Figura6.EjemplodeunDashboard
2.3 Plataformas Cloud: Infrastructure, Platform and Software as a Service
La computación en la nube (cloud computing) es un término que muchosencuentranconfuso.Sinembargo,noestanconfusocomosuena.Dehecho,lamayorpartedelosquenocomprendenelconceptosonpartedelamayoríaquelautilizana
Capítulo2.MarcodelDesarrollo
31
diario.
Entérminossencillos,lacomputaciónenlanubeeselconceptoutilizadoparadescribir los distintos escenarios en los que los recursos de computación se ofrecencomounservicioatravésdeunaconexióndered(porlogeneral,setratadeInternet).
Porlotanto,lacomputaciónenlanubeesuntipodecomputaciónquesebasaen el intercambio de un conjunto de recursos físicos y/o virtuales, en lugar deimplementarhardwareysoftwarelocalopersonal.Nodejadesersinónimodeltérmino“utilitycomputing”yaquelosusuariossoncapacesdeaccederaunaofertaderecursosde computación en lugar de gestionar el equipo necesario para generarlos por símismos; de lamismamanera que un consumidor aprovecha el suministro eléctriconacional,envezdeejecutarsupropiogenerador.
Una de las características fundamentales de la computación en la nube es laflexibilidadqueofreceyellosesdebidoasuescalabilidad.Serefierealacapacidaddeunsistemaparaadaptarseyescalarloscambiosenlacargadetrabajo.Latecnologíaenlanubepermitedeformaautomáticaproveerydesproveerderecursoscomoycuandoseanecesario,asegurandoasíqueelnivelderecursosdisponiblesseamuysimilaralademanda requerida tanto como sea posible. Esto lo diferencia de otrosmodelos decomputación donde los recursos se entregarán en bloques (por ejemplo, servidoresindividuales,aplicacionesdesoftware,aplicacionesdedescargadesoftware),lamayoríaconcapacidadesfijasycostosiniciales.Mediantelacomputaciónenlanube,elusuariofinalpagasóloporlosrecursosqueconsuma,evitandoasílosgastoseineficienciadecualquierrecursoquenoutilice.
Sinembargo,nosolounadelasventajasdelanubeeslaflexibilidad.Laempresatambiénpuedebeneficiarse(endiversosgrados)delaseconomíasaescalacreadasporlacreacióndeserviciosenmasaconlosmismosentornosinformáticos,ylafiabilidaddealbergarserviciosfísicamenteatravésdemúltiplesservidoresenquelosfallosdelossistemasindividualesnoafectenalacontinuidaddelservicio.
CentrándonosenlasdistintasclasesdeCloud,podemosdistinguir:
§ Clientesquelausan§ Serviciosofrecidos
Enfuncióndelosclientesquelausan(Figura7),sedistinguen:
• NubePública:esunanubeenlaquelosserviciosylainfraestructuraestánalojadosenunaorganizaciónexternaygestionadosporellamisma.Enestetipodenubesemezclantantotipodedatoscomoprocesosdedistintosclientesen losdistintosservidores, sistemasdealmacenamientoyotrasinfraestructuras requeridas por la propia nube, accediendo a ellos elusuario finala travésdemaneraremota,como Internet.Elbeneficiodeestetipodenubeseselabanicodepreciosylaredundancia,sinembargo,sonmásvulnerablesquelasconfiguracionesdenubesprivadas,debidoasusaltosnivelesdeaccesibilidad.
IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas
32
• Nubeprivada:lagrandiferenciarespetoalapúblicaeslaautogestióndela
misma,aumentandolosnivelesdecontrolyseguridad.Estorepercuteenlos costes, debido a la creación más personalizada de los serviciosdemandadosporelcliente(softwareyhardwareespecifico).
• NubeHíbrida:comosupropionombreindica,esunacombinacióndeambas(pública y privada). Esto permite al cliente maximizar su eficiencia,mediantelautilizacióndelanubepúblicaparalasoperacionesnosensiblesmientras que para las operaciones sensibles o críticas usaría la nubeprivada, asegurando así al cliente una configuración de computaciónacordeasusnecesidadesysinelevarloscostes.
Porotraparte,tenemoslaclasificaciónenfuncióndelosdistintosmodelosdeserviciosdecomputación,clasificadosen:
o IaaS(InfraestructuracomoServicio).o PaaS(PlataformacomoServicio).o SaaS(SoftwarecomoServicio).
CLOUDPRIVADO CLOUDHIBRIDO CLOUDPÚBLICO
• Mixdelosanteriores• Incertidumbressobre
calidad• Incertidumbressobre
seguridad• Adecuadoenescenarios
dedesbordamientoypococríticos
• Proyectosamedida(CloudExpertise)
• Mayorescala,costesmásbajos
• Difícilintegracióncon“Legacy”
• Incertidumbressobrecalidadyseguridad
• Mayorniveldeautogestión
• Modularyescalable
• MejoralaoperaciónITinterna
• Mejorasmodestasencostes
• Escalabilidadyflexibilidadlimitadas
• Riesgodeobsolescencia• Gestiónlimitadadepicos
dedemanda• Proyectosamedida(Cloud
Expertise) Figura7.ClasificacióndelasCloud
Capítulo2.MarcodelDesarrollo
33
2.3.1 IaaS
Infraestructura como Servicio, es uno de los tresmodelos fundamentales en elcampodelascloudcomputing,proporcionandoaccesoarecursosinformáticossituadosenunentornovirtualizado,“lanube”,atravésdeunaconexiónpúblicaquesueleserInternet,abarcandoaspectoscomoelespacioenservidoresvirtuales, conexionesdered,anchodebanda,direccionesIPybalanceadoresdecarga.Podríamosdestacarcomoventajasuescalabilidad.
2.3.2 PaaS
PlataformacomoServicio,esunacategoríadeservicioscloudqueproporcionaunaplataformayunentornoquepermitenlacreacióndeaplicacionesyserviciosquefuncionanatravésdeInternet.
Los servicios se alojan en la nube y se puede acceder a ellos a través de unnavegador permitiendo crear aplicaciones de software utilizando las herramientassuministradasporelproveedor.Podemosdestacarcomoventajassuflexibilidadysuadaptabilidad.
2.3.3 SaaS
SoftwarecomoServicio,escualquierserviciocloud,enelquelosconsumidorespuedenaccederaaplicacionesdesoftwareatravésdeInternet.
Estasaplicacionesestánalojadasenlanubeypuedenutilizarseparaunaampliavariedaddetareas,tantoparaparticularescomoparaorganizaciones.Twitter,Facebooky Google, son algún ejemplo de Saas, en las que los usuarios pueden acceder a losserviciosatravésdecualquierdispositivoquepuedaconectarseaInternet.Estemodelo,es también conocido como “software a demanda”, y las aplicaciones se compran yutilizanatravésdeInternetylosarchivosseguardanenlanube,noenelordenadordelusuario.
Acontinuación,comosemuestraenelgráfico(Figura8),veremoslaseparacióndelasresponsabilidadesdeunabonadodelasdeunproveedordeservicios.
IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas
34
SeparacióndeResponsabilidades
Figura8.SeparacióndeResponsabilidadesdelaComputaciónenlaNube
Capítulo3.SistemadeControldeSmartSantander
35
SistemadeControldeInfraestructurasIoT
3.1 Arquitectura del Sistema Enlaactualidad,laInternetdelasCosas,vierteconstantementeinformaciónde
todotipoalared.Generacantidadesinmensasdedatos.PeroelInternetdelascosas,no alude únicamente a las distintas formas en las que pueden interconectarse losdispositivos en red, sino a “una transformación de la visión y aplicación delprocesamiento, análisis, almacenamiento y comunicación”. En efecto, esta ampliainformacióndemandamayoralmacenamientoyprocesamientodedatos.
EnestecapítulodescribiremoseldiseñoylaarquitecturadelsistemadecontrolquesehadesarrolladoenesteTFG.Así,comovemosenlaFigura9,ésteconstade3partesdiferenciadas:
El primer módulo representa la captación de datos, con dicha captura,simplificaremos todos los datos e información que recibimos de la infraestructurasubyacente. Se reciben múltiples entradas de distintos formatos, y mediante unosfiltros,sellegaráadarleunformatoúnico.
Posteriormente,estosdatos sonalmacenadosenunabasededatos, creandounas tablas con sus respectivos índices. Desplegaremos la tecnología adecuada paraagruparyanalizarestosdatosycrearunainformacióndevalor,coneldiseñodeunaarquitectura adecuadaparael almacenamientodedicha información, que facilite suposterioraccesoparasuanálisis.
Finalmente,atravésdesurepresentacióngráfica,ilustraremosypresentaremoseste conjunto de datos, de manera que se facilite su comprensión, comparación yanálisis.Conlarepresentacióngráficadeestosdatosofrecemosmensajesmásclaros,facilitandodeestemodolaextraccióndeconclusiones.
Figura9.ArquitecturadelSistema
Almacenamiento Representación
IoT
CaptacióndeDatos
IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas
36
3.2 Acceso a las Observaciones de SmartSantander Talycomosehadescritoenlaanteriorsección,lafuentededatosdelsistema
desarrolladoen este TFG son las observacionesque se generanen la plataformadeSmartSantander.
Desde laperspectivadelusuario, lassuscripcionessonelelementobásicodelservicio asíncrono del sistema SmartSantander. Para recibir notificaciones push entiemporealdeSmartSantandersetienequeconfigurarelsistemamedianteelusodelassubscripcionesasíncronas.Estoinstruyealaplataformadequeenvíealsubscriptorlasobservacionesquecumplaconloscriteriosdefinidosenlasubscripción.
Para ello es necesario autenticarse. SmartSantander IO API es compatibleactualmentecondosmecanismosdeautenticacióndiferentes:
• EsquemadeautenticaciónbásicabasadaenlaprovisióndeunaclavedeAPIválida.
• EsquemadeautenticaciónmediantecertificadosPCKS#12.
En este Trabajo hemos empleado el primer método para subscribirnos a lasobservaciones.
Acontinuación,explicaremoslasistemáticaquehayqueseguirparalacreacióndeunasubscripción,asícomolaactivación,modificaciónoeliminacióndelamisma.
La Figura 10, muestra los diferentes estados por los que puede pasar unasubscripción.DesdeelestadoNon-existent,enelcuálbásicamentenohaysubscripción,sepuedegenerarunamedianteunapeticiónPOSTalAPI.Enestapeticiónseincluirácomopartedelbodyladescripcióndelasubscripción.PordefectolassubscripcionessecreaninactivasyesnecesarioactivarlasmedianteunapeticiónPATCH.Enestapetición
Figura10.GráficodelaSistemáticadeunaSubscripciónaSmartSantander
Capítulo3.SistemadeControldeSmartSantander
37
PATCHesnecesarioincluirelidentificadordelasubscripciónquesehaobtenidoensucreación.LapeticiónPATCHpermiteactivarydesactivar la subscripción tantasvecescomosedesee.Porúltimo,sepuedeeliminarlasubscripcióndefinitivamentemedianteunapeticiónDELETE.
Creación(POST):
Figura11.CreacióndeunaSubscripción
EnlaFigura11,vemoslasdistintasopcionesenelenvíodelapeticiónPOSTparalacreacióndelasubscripción.
Enprimer lugar, nos encontramos conelmétodode autenticación, explicadoanteriormente.
Acontinuación,vemoslosparámetrosdelaconsulta:
• Profile:podemosactivarunperfildeusuarioespecialcuandosellamealmétododelaAPI,pordefecto,elcuadroestávacío.
• Status:permiteseleccionarsisedeseaonoactivarlasubscripcióndespuésdesucreación.Sinoleindicamosnada,dejándolovacío,lasubscripciónsecreará,peronoestaráactivada,teniendoqueactivarlaposteriormenteconelenvíodeunapeticiónHTTPPATCH.
IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas
38
Yporúltimo,elcuerpodelapetición.Enélpodemosindicarlosparámetrosquequeremosquetenganuestrasubscripción,siempresiguiendoelformatodescritoenladocumentacióndeSmartSantander.
MediantelaFigura12,explicaremoslosaspectosbásicosdelageneracióndeunasubscripciónylasposibilidadesquesetienenparafijarloscriteriosquedebencumplirlasobservacionesquequeremosquenosseannotificados:
{ "target": { "technology": "http", "parameters": { "url": "[a valid endpoint]" } }, "query": { "what": { "format": "measurement", "_anyOf": [ { "phenomenon": "temperature:ambient", "filter": { "uom": "degreeCelsius", "value": { "_gt": 5 } } } ] }, "where": { "_anyOf": [ { "area": { "type": "Circle", "coordinates": [ -3.810011, 43.462403 ], "radius": 0.5, "properties": { "radius_units": "km" } } } ] } } }
Figura12.ElementosdeunaSubscripción
Capítulo3.SistemadeControldeSmartSantander
39
Elelementotargetcontienelaespecificacióndelaformaenquesedeseaquelasobservacionesseannotificadas.EnnuestrocasohemosutilizadoeltargetdenominadoHTTPqueinstruyeelsistemaparaenenviarlasobservacionesembebidasenpeticionesHTTPPOSTalendpointespecífico.
Porsupartedentrodelaquerytenemos:
• “what”:enestecampoleindicaremosaquéqueremossubscribirnos.Enelcampo“format”tenemosdosposibilidades:measurementuobservation.Ladiferenciaradicaenquesielegimoslaprimera,measurement,nossuscribimosalasmedidasdelosdistintosfenómenosqueleindiquemosacontinuación,enelcampo“phenomenon”,sinembargosielegimoslasegunda,observation,nossubscribimosalaobservacióngeneradaporelsensor,quepuedecontenerunaomásmedidas.
• “where”:enestecampoleindicaremoseláreaquequeremosdelimitarparanuestrasubscripción,teniendomultituddeposibilidades:Point,Multipoint,Linestring,Multilinestring,Area…
Tambiénexistelaposibilidaddeespecificarlosidentificadoresdelosdispositivosdeloscualesqueremosobtenerlasmedidas,peroestaopciónsóloseempleódurantelafasedepruebas.
Las subscripciones tienenun tiempode vigenciapordefectodeuna semana,teniendoquereactivarlasmedianteunPATCHpasadoestetiempo.
Una vez enviada la peticiónPOST, recibiremosenel campo “status”un valorindicándonoslosiguiente:
• 201:lasubscripciónsehacreadoconéxito.• 400:elcuerpodelmensajenocontieneunadefinicióndesubscripción
válida• 401:lasolicitudnopuedeprocesarseporquenoestáautenticadoenel
sistema.• 403:lasolicitudnopuedeserprocesadadebidoaquenoselepermite
realizarestaoperación,debidoarestriccionesdeautorización.
También recibiremos un identificador de nuestra suscripción, que usaremoscomoyahemoscomentadoparasuactivación,modificaciónoeliminación.
Modificación(PUT):
ParalamodificaciónoactualizacióndelasubscripciónseutilizaelmétodoPUTdeHTTP.Estenomodificanielestadodelasubscripciónni lafechadecaducidad.ElcuerpodelasolicitudtienequeincluirladefinicióndesubscripciónJSONcompleta,en
IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas
40
unformatosimilaralutilizadocuandosehacreadolasubscripciónoriginalatravésdela solicitud POST. También tendremos que indicarle el “id” de la subscripción amodificar.
Activación(PATCH):
LapeticiónPATCH,permitealusuariogestionarelciclodevidadelasubscripciónyaexistente.Estonoafectademodoalgunoalcontenidodelasubscripción.Elcuerpodelapeticiónnoseutilizayhadedejarsevacío.Encambio,elparámetro“action”sehadeutilizarparaespecificarlaoperaciónquesedesearealizar,teniendodosopciones,“renew”:pararenovarlasubscripciónunasemanamásy“expire”:paraqueexpirelasubscripción.
Otradelasfuncionalidadesdeestapeticiónesactivarlasubscripción,debiendoindicarleel“id”delasubscripción.
Estado(GET):
Mediante la solicitud GET, obtendremos la información relacionada con unasuscripción o varias, en función si le indicamos el “id” de la misma o lo omitimos(mostrando todas las subscripciones realizadas). Esto incluye todos los datos de lasuscripción,incluyendosuestadoytiempodecaducidad.
Eliminación(DELETE):
Medianteestapetición,elusuariopodráeliminarunasubscripciónyaexistente,indicandoel“id”delamisma.Silasubscripciónestuvieraactivada,sedesactivaríaantesdelaeliminación.
3.3 Módulo de Captación de Datos Enestasecciónvamosadetallar laherramientautilizadapara lacaptaciónde
datosennuestrosistema.
LaherramientautilizadaesLogstash,formapartedelaplataformaElasticsearch.Laeleccióndelamisma,hasidoporlaintegraciónquetieneconlasdemásherramientasimplementadas en este Trabajo. Es un potente motor de recopilación de datos,permitiéndonosunificar y estructurar losdatosprovenientesde SmartSantander, asícomohaciéndolosconvergeralmódulodealmacenamiento(Elasticsearch).
Capítulo3.SistemadeControldeSmartSantander
41
En la Figura 13 mostramos las partes de las que se compone el archivo deconfiguración de nuestra herramienta de captación de datos, que explicaremos acontinuación.
Enelapartadoinputs,hayqueindicarleeltipodeentradadedatos.Enunprimerinstante, para familiarizarnos con la herramienta y ver de manera más legible lasistemáticautilizamos“stdin”,quenospermiteintroducirlosdatosporteclado.Unavezquevimoslaestructuraqueseguíanlosmismos,adecuamoselformatodeentradaaSmartSantander,permitiéndonosindicarelformatodepeticionesHTTP.ElusodeestetipodeentradapermiterecibireventosatravésdepeticionesHTTP(s).SmartSantanderenviaríaunasolicitudHTTPPOSTconelcuerpodelmensajeyLogstashseencargarádetransformarloaunformatocomúnparasuposteriorprocesamiento.
Como vemos en la Figura 14, hemos añadido a HTTP el plugin“additional_codecs” para indicarle el formato de entrada, para una correctadecodificaciónposteriormente.Enestecaso,dadoquelasobservacionesprovenientesde SmartSantander estaban serializadas en formato JSON, el tipoMIME indicado esapplication/json.
Input {
http {
additional_codecs => {“application/json” => “plain”}
}
}
Figura13.ArquitecturadeLogstash
Figura14.CódigodelInputdeLogstash
IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas
42
Una vez configurada la entrada de nuestro sistema de captación de datos,procedemosaconfigurarlapartemásimportantedeestemódulo,elfiltro.
Enunprincipioseprobaronlasdistintasopcionesdeplug-indefiltradoquenospermiteLogstashconlasentradasdeobjetos“JSON10”.Deesteanálisisseconcluyóquela decodificación y conversión realizada no se adecuaba a la estructura dealmacenamiento necesaria para su posterior análisis. Investigando las distintasposibilidades de plug-ins, se decidió utilizar la posibilidad que permite Logstash deutilizarscriptsdeRubyparaconseguirunatransformacióndelosdatoscompletamenteprogramables.
A continuación, vemos en la Figura 15 y Figura 16, el código del filtroimplementado.
filter{ grok { match => [ "message",
"%{HTTPDATE:[@metadata][timestamp]}" ] } date { match => [ "[@metadata][timestamp]",
"dd/MMM/yyyy:HH:mm:ss Z" ] } ruby { init => " require 'json' def parse_json obj, pname=nill, event obj = JSON.parse(obj) unless obj.is_a? Hash obj = obj.to_hash unless obj.is_a? Hash obj.each {|k,v| p = pname.nil?? k : pname if v.is_a? Array v.each_with_index {|oo,ii| if oo.is_a? Numeric
parse_json_array_num(oo,ii,p,event) else parse_json_array(oo,ii,p,event) end } elsif v.is_a? Hash parse_json(v,p,event)
10 JSON: “ Java ScriptObjectNotation, es un formato de texto ligero para el intercambio dedatos”.
Capítulo3.SistemadeControldeSmartSantander
43
else p = pname.nil?? k : [pname,k].join('.') event[p] = v end } end def parse_json_array obj, i,pname, event obj = JSON.parse(obj) unless obj.is_a? Hash pname_ = pname if obj.is_a? Hash obj.each {|k,v| p=[pname_,i,k].join('.') if v.is_a? Array v.each_with_index {|oo,ii| parse_json_array(oo,ii,p,event) } elsif v.is_a? Hash parse_json(v,p, event) else event[p] = v end } else n = [pname_, i].join('.') event[n] = obj end end def parse_json_array_num obj, i,pname, event pname_ = pname if obj.is_a? Hash obj.each {|k,v| p=[pname_,i,k].join('.') if v.is_a? Array v.each_with_index {|oo,ii| parse_json_array(oo,ii,p,event) } elsif v.is_a? Hash parse_json(v,p, event) else event[p] = v end }
Figura15.CódigodelFiltrodeLogstash
IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas
44
else n = [pname_, i].join('.') event[n] = obj end end " code=>
"parse_json(event['message'].to_s,nil,event)if event['message'].to_s.include? ':'"
} ##cambiar el . por _ ruby { init => " def remove_dots hash new = Hash.new hash.each { |k,v| if v.is_a? Hash v = remove_dots(v) end new[ k.gsub('.','_') ] = v if v.is_a? Array v.each { |elem| if elem.is_a? Hash elem = remove_dots(elem) end new[ k.gsub('.','_') ] = elem } unless v.nil? end } unless hash.nil? return new end " code => "
event.instance_variable_set(:@data,remove_dots(event.to_hash))
" } mutate { add_field => [ "[geo]",
"%{[location][coordinates][0]}" ] add_field => [ "[geo]",
"%{[location][coordinates][1]}"] convert => [ "[geo]", "float" ] } }
Figura16.CódigodelFiltrodeLogstash
Capítulo3.SistemadeControldeSmartSantander
45
Enprimer lugar,hemosutilizadoelplug-in “grok”parahacercorresponderel
timestampdenuestroeventoconeltimestampquesecreaalañadirloen lastablas.Posteriormente, seejecutael filtro “ruby”estructurandocadacampodelevento,endistintossubcampos.Debidoalaimposibilidaddeindexarlosdistintossubcamposconlaherramientaderepresentaciónutilizandoelseparador“.”,unsegundofiltro“ruby”nos permite cambiar los “.” Por “_” que si son válidos a la hora de hacer larepresentación. Finalmente, utilizamos el plug-in “mutate”, ya que la estructura delformatogeneradaporloseventosdelocalizacióndeSmartSantandernoescompatibleconelformatodenuestraherramientaderepresentación.
Por último, la última parte del código de configuración de Logstash es el“output”,indicandolosdistintosplug-insparadarleformatoalasalida.
output{ elasticsearch{ index=>"m" } stdout{ code=>rubydebug }
}Figura17.CódigodelaSalidadeLogstash
VemosenlaFigura17losdosplug-insquehemosutilizado.Porunaparte,elde“elasticsearch”, para almacenar los registros en la herramienta de almacenado(Elasticsearch), debiendo de indicarle el nombre del índice “index”, que deberá decoincidirconlasdosherramientasposteriores(ElasticsearchyKibana)parauncorrectofuncionamiento.Elotropulg-inutilizadoes“stdout”,conel“code”=>rubydebug,parapoderirviendolasalidaestructuradaporpantalla.
EnelAnexosepuedeencontrarelarchivo.confdeLogstashalcompleto.
3.4 Módulo de Almacenamiento Unavezquehemosvistoelmódulodecaptacióndedatos,pasaremosadescribir
en esta sección la herramienta para el almacenamiento de los mismos, llamadaElasticsearch.
IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas
46
ElasticsearchesunpotentemotordebúsquedayanálisisdedatosentiemporealdecódigoabiertoconstruidoencimadeApacheLucene11.Eneste trabajo,nohemosmodificadoelarchivodeconfiguración,sehadejadopordefecto,yaquelamodificacióny creación de la estructura la hemos realizado en el filtrado de la herramienta decaptacióndedatos.Loquesíquehemostenidoquemodificar,eselmapeodelosdatosde localización y realizar unos ajustes, acordes con nuestros valores de Longitud yLatitud.
LosvaloresdelocalizacióndeSmartSantandersiguenlaestructuraindicadaenlaFigura18:
"location":{ "type":"Point", "coordinates":[Lon,Lat]
}Figura18.FormatoCoordenadasdeLocalizacióndeSmartSantander
Paralacorrectainterpretación,hemostenidoquerealizarelsiguientemapeo:
curl-XPUT'localhost:9200/x/_mapping/logs'-d'{"properties":{"geo":{"type":"geo_point","geohash":true}}}'
Figura19.MappingdeElasticSearch
El significado del mapeo, (Figura 19), es el de definir en Elasticsearch, laestructuradel campode localizaciónquehemosmodificadoenel filtrode Logstash,puesto que de origen no se ajusta con el que nos permite la herramienta derepresentación.
QuedándonosfinalmentelaestructuraenElasticSearchcomovemosenlaFigura20:
{ "m":{ "mappings":{ "logs":{ "properties":{ "@timestamp":{ "type":"date", "format":"strict_date_optional_time||epoch_millis" }, "@version":{
11ApacheLucene:“esunaAPIdecódigoabiertopararecuperacióndeinformación,originalmenteimplementadaenJAVAporDougCutting”.
Capítulo3.SistemadeControldeSmartSantander
47
"type":"string" }, "geo":{ "type":"geo_point", "geohash":true }, "headers":{ "properties":{ "content_length":{ "type":"string" }, "content_type":{ "type":"string" }, "http_accept":{ "type":"string" }, "http_accept_charset":{ "type":"string" }, "http_accept_encoding":{ "type":"string" }, "http_accept_language":{ "type":"string" }, "http_authorization":{ "type":"string" }, "http_cache_control":{ "type":"string" }, "http_connection":{ "type":"string" }, "http_host":{ "type":"string" }, "http_if_modified_since":{ "type":"string" }, "http_pragma":{ "type":"string" }, "http_proxy_connection":{ "type":"string" }, "http_user_agent":{ "type":"string" }, "http_version":{ "type":"string" }, "request_method":{ "type":"string" }, "request_path":{ "type":"string" },
IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas
48
"request_uri":{ "type":"string" } } }, "host":{ "type":"string" }, "location":{ "type":"geo_point", "geohash":true }, "location1":{ "type":"geo_point", "geohash":true }, "location_0":{ "type":"double" }, "location_1":{ "type":"double" }, "location_type":{ "type":"string" }, "message":{ "type":"string" }, "phenomenon":{ "type":"string" }, "timestamp":{ "type":"date", "format":"strict_date_optional_time||epoch_millis" }, "uom":{ "type":"string" }, "urn":{ "type":"string" }, "value":{ "type":"double" } } } } } }
Figura20.EstructuradeElasticSearch
Capítulo3.SistemadeControldeSmartSantander
49
3.5 Módulo de Representación Para finalizar la explicación en detalle de la arquitectura del sistema
implementado,describiremoslapotenteherramientaderepresentaciónKibana.
KibanaesunaplataformadeanálisisyvisualizacióndecódigoabiertodiseñadoparatrabajarconElasticsearch.Seutilizaparabuscar,visualizare interactuarcon losdatos almacenados los índices de Elasticsearch. Puede realizar fácilmente avanzadosanálisisdedatosyvisualizacionesde losmismosenunaampliavariedaddegráficos,tablasymapas.Hacequeseamásfácilderepresentaryentendergrandesvolúmenesde datos. Su sencilla interfazWeb, le permite crear y compartir de forma rápida eintuitiva paneles dinámicos que muestran los cambios en las distintas consultas deElasticsearchatiemporeal.
ComovemosenlaFigura21,lainterfazWebdeKibanasecomponededistintoscampos,destacandolossiguientes:
§ Enlapartesuperiordeltablerodeinstrumentosvemos4opciones:o Discover:encontraremosinformaciónacercadelasbúsquedasy
elfiltradodelosdatos.
TiempodeFiltrado
Histograma
Tablade
Contenidos
BarradeHerramientas
Patrónde
Índices
Listadode
Campos
Figura21.InterfazWebdeKibana
TablerodeInstrumentos
IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas
50
o Visualize:encontraremosinformaciónsobrelosdistintostiposdevisualizaciónqueofreceKibana.
o Dashboard: encontraremos las distintas opciones para crear yvisualizarlosmismos.
o Settings:encontraremoslosdistintoscamposdeconfiguracióndeKibana, así como la creación de índices, modificaciones debúsquedascreadas,etc.
§ TiempodeFiltrado:enélpodremosrestringirlosresultadosdebúsquedaespecificandounperiodode tiempoconcreto,pudiendoestablecerunfiltrodetiemposiel índicecontieneloseventosbasadoseneltiempo.Tambiénpodremosestablecerunfiltrodetiempoapartirdelhistograma,seleccionandolazonaconloseventosdeseados.Pordefecto,elfiltrodetiemposeestableceen15min.
§ BarradeHerramientas:enellapodremosgenerardistintasbúsquedasdeloseventos,modificándolas y guardándolasen funciónde los criteriosañadidos.
§ PatróndeÍndices:leindicaremoselíndicecreado,coincidiendoconeldeElasticSearch.
§ ListadodeCampos:enestacolumna,vemoslosdistintoscamposquesecreanalindexarloseventos,pudiendoseleccionarunoovariosparaverlainformacióndelosmismosenlatabladecontenidos.
§ Tabladecontenidos:enestaseccióndelainterfaz,vemosconmásdetallelainformacióndecadaevento.
Figura22.InterfazWebdeKibana(Visualize)
Capítulo3.SistemadeControldeSmartSantander
51
EnlaFigura22,vemoslainterfazWebquecorrespondealapartedevisualizacióndeKibana.Enellapodemoscreardistintasvisualizaciones,desdetabladedatos,gráficode tablas, circulares hasta un mapa de localización. También nos permite crearvisualizacionesapartirdeunabúsquedarealizadaanteriormente,acotandolosdistintoscamposdelevento.
3.6 Despliegue del Sistema Unavezpresentadoslosdiseñoseimplementacióndelosdistintosmódulosdelsistema,procederemosenestasecciónadetallarcómosehallevadoacaboeldesplieguedelsistemasobreunaplataformaCloudreal.
Para comenzar, hemos utilizado Amazon Web Services para alojar todas lasherramientasde laplataformaElastic (Logstash,ElasticSearchyKibana). Elhechodeutilizar un servicio de cloud computing es por la escalabilidad que nos ofrece,permitiendounabuenaintegraciónconlaplataformaSmartSantander.HemosutilizadounsistemaLinuxde64bits,enelquehemosinstaladolasherramientasdelasiguientemanera:
1. InstalacióndeLogstash:enprimerlugar,debemoscomprobarlaversiónde Java de nuestro sistema, puesto que sólo funciona con Java 7 osuperior.InstalaremosmediantelosrepositoriosdisponiblesporAPTconlossiguientescomandos:
• Descargamoseinstalamoslaclavedefirmapública:wget-qO-https://packages.elastic.co/GPG-KEY-elasticsearch|sudoapt-keyadd–
• AñadimoselrepositorioLogstash:
echo"debhttps://packages.elastic.co/logstash/2.4/debianstablemain"|sudotee-a/etc/apt/sources.list
• Por último, ejecutamos la siguiente línea de comandos y elrepositorioestarálistoparausarse:
sudoapt-getupdate&&sudoapt-getinstalllogstash
2. InstalacióndeElasticSearch:al igualqueocurreconLogstash,hayquecomprobarlaversióndeJava.Lospasosparalainstalaciónson:
IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas
52
• DescargamoselficherodeElastic:
curl-L–Ohttps://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/tar/elasticsearch/2.4.1/elasticsearch-2.4.1.tar.gz
• Unavezextraido,estarálistoparasuutilización:
tar-xvfelasticsearch-2.4.1.tar.gz
3. InstalacióndeKibana:lasistemáticaeslamismaquehemosempleadoenLogstash:
• DescargamoseinstalamoslaFirmadeClavePública:
wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-keyadd-
• Añadimoselrepositorio:
echo "deb https://packages.elastic.co/kibana/4.6/debian stablemain" | sudotee-a/etc/apt/sources.list.d/kibana.list
• Por último, corremos apt-get y estará listo para un correctofuncionamiento:
sudoapt-getupdate&&sudoapt-getinstallkibana
Una vez explicados todos los pasos para la instalación, explicaremos acontinuaciónlasaccionesquehayquerealizarparaponerenfuncionamientotodoelSistema.
Enprimerlugar,realizaremosunasubscripciónaSmartSantandercomovimosenlaFigura11yFigura12,indicandoeneltargetdenuestrobody,laurlquecorrespondealservidorWebqueexportaLogstashatravésdelplug-inHTTP,asícomoloseventosalosquenosqueremossubscribir.
Después,pondremosacorrerElasticSearchyKibana:
§ cdelasticsearch-<version>
./bin/elasticsearch
§ cdkibana-<version>
./bin/kibana
Porúltimo,arrancamosnuestroarchivodeconfiguracióndeLogstash:
§ cdlogstash-<versión>bin/logstash–f<nombredelarchivo>.conf
Unavezrealizadostodosestospasos,debemosactivarlasubscripciónmediantelapeticiónPATCH(explicadoenelcapítulo3.2)ycomenzaremosaverporpantallalasalidadenuestrofiltroempleadoenLogstash,asícomoenKibanaveremoslosdistintoseventoscreados.
Capítulo3.SistemadeControldeSmartSantander
53
3.7 Dashboards de Control En esta sección vamos a describir los distintos Dashboards creados para la
visualizacióndenuestrosistemadecontrol.
Para la creación de un dashboard, primero hay que crear las visualizacionesindividualmenteyposteriormente,dirigirsea lapestaña“dashboard”yañadirlasunaporuna,diseñandoelcuadrográficoacordeanuestrasnecesidades.
En este trabajo, de los distintos fenómenos que miden los sensores deSantander, hemos hecho un estudio para determinar cuál de estos fenómenosrepresentar,orientándoloalainformaciónmásútilparanuestraciudad.Llegandoalaconclusiónderepresentarinformaciónrelativaalossiguientesfenómenos:
§ Temperaturaambiente§ Niveldebateríadelossensores§ Luminosidad§ DióxidodeCarbono(CO2)§ Ozono(O3)§ DióxidodeNitrógeno(NO2)§ Niveldepartículasenelaire§ Nivelacústico§ Campoelectromagnético§ Niveldellenadodeloscontenedoresdebasura
Figura23.CapturadelDashboardGeneral
IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas
54
EnlaFigura23vemosunacapturadeldashboardgeneraldenuestrosistema.Enél podemos diferenciar distintas partes, como un mapa de la ciudad de Santanderidentificandolaposicióndelosdistintossensores,asícomoasuizquierda,unlistadodetodos los sensores disponibles. Estas dos visualizaciones las veremos en todos losdashboards, tanto en el general como en los de cada fenómeno. Otros campos adestacar,sonlospequeñosbotonesverdesquevemosacontinuación,permitiéndonosestablecerdistintosfiltros.
Enesteejemplo,nosencontramosconunfiltro,quenosacotalossensorescuyamedidadelniveldebateríaesmenoral75%,otroqueacotalatemperatura,siendoestamenorde25°C,asícomootroquenospermitemostrarmúltiplessensorescreandounacomparativaentreambos.Siponemoselcursorencimadelosbotones,vemoslosiguiente:
• ActivarFiltro :siemprequeestéeltic,elfiltropermaneceráactivado,sino,elbotóndelfiltrotendráelcolorverdearayas.
• Pin :esteicononospermiteanclarelfiltroparatodoslosdashboards.
• Conmutador :haciendoclicsobreél,revertimoslaacción,quedandoelfiltrodecolorrojo.
• Eliminación :medianteél,eliminamoselfiltro.• Personalización :mostraráuncampodetextocomoenlaFigura
24,paramodificarlarepresentaciónJSONdelfiltroyañadirleunalias.
Figura24.PersonalizacióndelFiltrodelosDashboards
Capítulo3.SistemadeControldeSmartSantander
55
Otrasvisualizacionesqueseveránenlosdistintosdashboardssonlassiguientes:
Consta de dos cuadros de información, uno de ellos con enlaces a otros
dashboards,conunatabladelossensores,detallandoelfenómeno,valoryunidaddemedidadecadaunadelasmedidasqueproveedichosensor.
Tantoelmapacomoellistado,soninteractivos,pudiendoenelmapaacotarunazona seleccionada sobre él, limitando el número de sensores mostrados, así comoseleccionarenellistado,elidentificadordeunosdelossensores,paramostrarloenelmapa.
Enestedashboardgeneral, comovemosen la Figura26,hemos realizadoungráficolinealdetodoslosfenómenos,mostrandoeneleje“X”eltimestampyeneleje“Y”elvalormedido.
Figura25.VisualizacionesdelDashboardGeneral
Figura26.GráficasdeLíneadelDashboardGeneral.(a)Niveldellenadodeloscontenedoresdebasura(b)Niveldecargadelasbaterías
a) b)
IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas
56
En la Figura26a, vemoselnivelde llenadode losdistintos contenedoresdebasura distribuidos en Santander,por otra parte, en la Figura 26 b, nos muestra elporcentajedeniveldebateríarestantedelosdistintossensores.Estasdosgráficassonanálogas a las demás mostradas en el dashboard general sobre los diferentesfenómenos.
Una vez visto esto, profundizaremos en las gráficas más relevantes de losdistintosdashboardsespecíficos.
En la Figura 27, vemos un gráfico de área,mostrando la temperaturamediaacumuladadetodoslossensoresalolargodeunperiododetiempo.
Otroejemplodevisualización,es laquevemosenlaFigura28,mostrándonosunosgráficoscircularesenfuncióndelporcentajedebateríadelsensor,divididosen5franjasdebateríayasuvez,indicandolas10últimasmedidasdelossensores.
Figura27.GráficadeÁreadelaTemperaturaMedia
Figura28.GráficosCircularesyLinealesdelNiveldeBatería
Capítulo3.SistemadeControldeSmartSantander
57
Otrarepresentacióncircular,respectoalfenómenodebateríasepuedeverenlaFigura29:
Estegráfico,dividoenlos5rangosdeporcentajedebateríaanteriores,nosindicaqué porcentaje de los nodos está en dichos rangos de batería, ayudándonos a veranomalías en las baterías y pudiendo detectar nodos que tengan problemas con sualimentacióneléctrica.
Porúltimo,destacarelgráficodelaFigura30enelcualsehadivididoeleje“y”encuatrovaloresdefrecuencia,mostrandounacomparativaalolargodeltiempodelcampo electromagnético para cada banda de frecuencias medida por los sensoresdesplegadosporlaciudad.
Figura30.GráficadelCampoElectromagnético
Figura29.GráficoCirculardelaBatería
Capítulo4.DirectricesparalaExtensibilidaddelSistema
59
DirectricesparalaExtensibilidaddelSistema
UnavezexplicadotodoeldesarrolloeimplementacióndelSistemadeControlparaelcasoparticulardeSmartSantander,procederemosadefinirlaspautasquehabráqueseguirparaextenderoadaptarlaplataformaderepresentaciónaotromarcouotrasnecesidadesdentrodeSmartSantander.
Enprimerlugar,antesdeprocederconlacreacióndenuevasvisualizacionesydashboards,esrecomendablecrearenelapartado“Discover”,búsquedasenfunciónde losdistintosdatosquesepretenderepresentar,puestoqueposteriormenteen lapantalla“visualize”,existendosopcionesdegenerargráficos,laprimera,seleccionandolosdatosenfuncióndel“index”ylasegunda,enfuncióndelabúsquedapreviamenterealizada,acotandodeestamaneralosdatosarepresentar.
Enla(Figura32),vemoslasdistintasvisualizacionesquenospermiteKibana:• GráficosdeÁrea• Tabladetalladelosdiferentesfenómenos• GráficosdeLínea• Cuadrodetextoparaindicar,porejemplo,instrucciones• GráficosCirculares• MapaGeográfico• GráficosdeBarras
Figura31.CreacióndeBúsquedasenKibana
Figura32.OpcionesdeVisualizacióndeKibana
IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas
60
Dentro de cada tipode gráfico, vemosdistintos campos, losmostrados en laFigura33:
1. Barra de herramientas: en ella podremos escribir los distintos
parámetrosdebúsquedaquequeremosacotar,parasuposteriorrepresentación.
2. Aggregation Builder: en ella nos encontramos los distintos
camposarellenar,tantoeleje“Y”,queeselprimeroquetenemosquedefinir,asícomolasdiferentesposibilidadeseneleje“X”.
3. Pre-visualización:enestapartede laherramienta,podremos ir
viendolasdistintasgráficassegúnsevacreando.
Una vez que hayamos generado la visualización acorde a nuestro sistema,deberemosguardarla,medianteelbotónqueseencuentraenlabarradeherramienta
conlasiguienteilustración: Para finalizar, explicaremos la creación de un dashboard que recoge las
visualizaciones generadas anteriormente. En la Figura 34 vemos la barra deherramientasdeldashboard.
Figura33.IlustracióndelosDistintosCamposenlaCreacióndeVisualizaciones
Figura34.BarradeCreacióndeDashboard
Capítulo3.SistemadeControldeSmartSantander
61
• Con este botón añadiremos las visualizaciones al dashboard,pudiendoircolocandoyajustandoeltamañounaauna.
• Conestecrearemosnuevosdashboards.
• Porultimo,conestecompartiremoselenlacedenuestrodashboard.
Capítulo5.Conclusionesyfuturaslíneasdetrabajo
63
Conclusionesyfuturaslíneasdetrabajo
5.1 Conclusiones El trabajo “Integración de un Sistema de Control para una plataforma de la
Internet de las Cosas” corresponde al trabajo de Fin de Grado en Ingeniería deTecnologíasdeTelecomunicaciónenlaUniversidaddeCantabria.
Eneste trabajohemos integradodiferentesherramientasdesarrolladaspor laplataformaElasticparalacaptación,almacenamientoyrepresentacióndelosdatos.ElresultadodetodoellohadadolugaralacreacióndediferentesdashboardsdecontrolparafacilitarlatareadegestióneinterpretacióndelosdiferentesdatosaportadosporlaplataformaSmartSantander.
Paravaloraryextraerlasconclusiones,debemosanalizarlosobjetivosquenospropusimosaliniciodelProyecto,ydeestemodopoderobtenerelniveldesatisfacciónlogradoyalcanzado,analizandotodoslospasosdadosparasuobtención.
Elobjetivoprincipaleraeldiseñoe implementacióndeunSistemadeControlque nos ofreciera una interfaz visual en el que concentráramos toda la informaciónrelativa a la infraestructura de dispositivos IoT desplegada en el ProyectoSmartSantander.
Laconsecucióndeesteobjetivohasidoposiblemediante:
• El conocimiento de la tipología de datos proporcionada por lossensores,llevandoacabounestudiodelmodelodedatosutilizadosporSmartSantander,yaqueeranecesarioconocerycomprenderelmodeladodelainformación.
• La captura de los datos que nos proporciona para proceder a suanálisis, evaluando las diferentes opciones permitidas por laPlataformaSmartSantanderyseleccionandolaquemejorseajustabaa las tecnologías empleadas por el Sistema de Control que se hadesarrollado.
• Estudiando y comprendiendo cada una de las herramientasintegradasenelSistemadeControl.Atravésdeesteestudiohemospodidoexplotarsusposibilidadesysuutilización, llevándonosasíaunaexitosapuestaenfuncionamientodeesteTrabajo.
Hemos conseguido integrar y desarrollar el Sistema de Control, iniciando elprocesoconlacaptacióndedatosconlaherramientaLogstash,alserésta,unpotentemotorderecopilacióndedatos,loquenoshapermitidounificaryestructurarlosdatos
IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas
64
provenientes de SmartSantander. Pero quizá, la parte más importante haya sido laconfiguración del filtro de Logstash, de este modo e investigando las distintasposibilidadesdeplug-ins,decidimosutilizarelplug-inrubydeLogstashparaconseguirunatrasformacióndelosdatoscompletamenteprogramables.
SehaconseguidocrearlosdistintosDashboardsparalavisualizacióndenuestrosistemadecontrol.Destacandofundamentalmentelacreaciónde:
• Dashboarddelcampoelectromagnético• Dashboarddelatemperaturaambiente• Dashboarddelniveldebatería• Dashboarddelniveldellenadodeloscontenedoresdebasura• Dashboarddelniveldesonidoacústico
Porotraparte,lacompresióntantodelafilosofíadelaplataformaElasticcomodesusdiferentesseccionesesunobjetivoquesehalogradocumplir.Esnotorioeneltrabajoeltiempoquesehatenidoqueinvertirenlalecturaycomprensióndediferentesdocumentos albergados en la plataforma para conseguir llevar a cabo el trabajo.Además, en este documento se ha descrito de una forma clara aspectos de estaplataformaparaasífacilitar,enlamedidadeloposible,lacomprensióndelaplataformaElasticaloslectoresdelmismo.Unodelosinconvenientesquesepuederelacionarconesteobjetivoes laconstanteactualizacióndedocumentostécnicosquehasufrido laplataformaalolargodeestetrabajo.Puedequeestohayasidouninconvenientealahora del desarrollo, pero sin duda esto otorga mayor empaque al uso de estaplataforma,demostrandoqueeste trabajo seenmarcadentrodeunaplataformaencontinuaexpansiónycuentaconelapoyodegigantesdelastelecomunicaciones.
En relación con lasbases teóricas, sehaalcanzadoelobjetivodeadquirir losconocimientosnecesariosasícomounrepasodeaquellosquehabíamosestudiadoalolargo de estos años universitarios en el Grado de Ingeniería de Tecnologías deTelecomunicación.
La satisfacción de haber logrado crear una herramienta propia hace quemisobjetivos personales se hayan visto totalmente conseguidos, y se hayan vistocompensadalagrancantidaddehorasdeestudioydetrabajoquelohanhechoposible.
Capítulo5.Conclusionesyfuturaslíneasdetrabajo
65
5.2 Futuras Líneas de Trabajo EnbasealasdistintasherramientasimplementadasenesteProyecto,sepueden
realizarmodificacionesen lasmismas,paraunaampliaciónymejorade losdistintosDashboardsdeControl.
Enprimerlugar,conlasconstantesactualizacionesymejorasquerecibenlastresherramientasporpartedeElastic,unadelasmejorasquehandesarrolladoactualmentees su propia nube, Elastic Cloud, por tanto, el uso de ella para la implementación ydespliegue de Logstash, Elasticsearch y Kibana, sería recomendable para unamayorsimplicidad,integraciónyconvergenciadelasmismas.
También,otradelasmejorashaimplementarenunfuturo,seríaañadirlelapiladeElastic,X-Pack,queincluyedistintasherramientasparalamejoraenloscamposdeseguridad, permitiendo la autenticación y la definición de roles y permisos, en lacreacióndealertas,pudiendodefinirdiferentespatronesdeavisosyenelmonitoreoatiempo real, para la creación de distintos informes sobre el correcto o nofuncionamientodelamismaeinformesgráficossobrelosdistintosdashboards.
IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas
66
Bibliografía
[1] APIdeSmartSantander.https://api.smartsantander.eu.
[2] DocumentacióndeElasticSearch.https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html.
[3] DocumentacióndeKibana.https://www.elastic.co/guide/en/kibana/current/index.html.
[4] DocumentacióndeLogstash.https://www.elastic.co/guide/en/logstash/current/index.html.
[5] Domotys. SMART CITY, HACIA LA GESTIÓN INTELIGENTE. Madrid: Mancobo,2014.
[6] Fernández, Manu. DESCIFRAR LAS SMART CITIES: ¿QUE QUEREMOS DECIRCUANDOHABLAMOSDESMARTCITIES?Madrid:MEGUSTAESCRIBIR,2016.
[7] GitHubdeElastic.https://github.com/elastic.
[8] IE Businnes School, Gildo Seisdedos. «Informe sobre Smart Cities de PWC, IEBusinessSchoolyTelefónica.»
[9] InformaciónsobrelaspeticionesHTTP.http://code.tutsplus.com/tutorials/http-the-protocol-every-web-developer-must-know-part-1--net-31177.
[10] Jorge Lanza, Pablo Sotres, Luis Sánchez, José Antonio Galache, JuanRamónSantana,VerónicaGutiérrez,LuisMuñoz.«ManagingLargeAmountofDataGeneratedbyaSmartCityInternetofThingsDeployment.»Internationaljournal on Semantic Web and information systems. Santander: InformationResourcesManagementAssociation,IGIGlobal,2016.
[11] Peterson,ArmandoFox&David.DesarrrollandoSoftwarecomoServicio.StrawberryCanyonLLC,2015.
[12] ECMA-404. ECMAScript® Language Specification. “The JSON DataInterchangeFormat”.Octubre2013.
Anexo
67
Anexo1.ArchivodeconfiguracióndeLogstashinput {
http {
additional_codecs => {“application/json” => “plain”}
}
}
filter{ grok { match => [ "message",
"%{HTTPDATE:[@metadata][timestamp]}" ] } date { match => [ "[@metadata][timestamp]",
"dd/MMM/yyyy:HH:mm:ss Z" ] } ruby { init => " require 'json' def parse_json obj, pname=nill, event obj = JSON.parse(obj) unless obj.is_a? Hash obj = obj.to_hash unless obj.is_a? Hash obj.each {|k,v| p = pname.nil?? k : pname if v.is_a? Array v.each_with_index {|oo,ii| if oo.is_a? Numeric parse_json_array_num(oo,ii,p,event) else parse_json_array(oo,ii,p,event) end } elsif v.is_a? Hash parse_json(v,p,event) else p = pname.nil?? k : [pname,k].join('.') event[p] = v end } end def parse_json_array obj, i,pname, event obj = JSON.parse(obj) unless obj.is_a? Hash pname_ = pname if obj.is_a? Hash obj.each {|k,v| p=[pname_,i,k].join('.') if v.is_a? Array v.each_with_index {|oo,ii| parse_json_array(oo,ii,p,event)
IntegracióndeunSistemadeControlparaunaPlataformadeInternetdelasCosas
68
} elsif v.is_a? Hash parse_json(v,p, event) else event[p] = v end } else n = [pname_, i].join('.') event[n] = obj end end def parse_json_array_num obj, i,pname, event pname_ = pname if obj.is_a? Hash obj.each {|k,v| p=[pname_,i,k].join('.') if v.is_a? Array v.each_with_index {|oo,ii| parse_json_array(oo,ii,p,event) } elsif v.is_a? Hash parse_json(v,p, event) else event[p] = v end } else n = [pname_, i].join('.') event[n] = obj end end " code => "parse_json(event['message'].to_s,nil,event) if
event['message'].to_s.include? ':'" } ##cambiar el . por _ ruby { init => " def remove_dots hash new = Hash.new hash.each { |k,v| if v.is_a? Hash v = remove_dots(v) end new[ k.gsub('.','_') ] = v if v.is_a? Array v.each { |elem| if elem.is_a? Hash elem = remove_dots(elem) end new[ k.gsub('.','_') ] = elem } unless v.nil? end } unless hash.nil?
Anexo
69
return new end " code => "
event.instance_variable_set(:@data,remove_dots(event.to_hash)) " } mutate { add_field => [ "[geo]",
"%{[location][coordinates][0]}" ] add_field => [ "[geo]",
"%{[location][coordinates][1]}"] convert => [ "[geo]", "float" ] } } output{
elasticsearch { index => "m" } stdout { code => rubydebug }
}