on-the-fly etl con efk: elasticsearch, flume, kibana

44
Patrocinado por ElasticSearch, Flume y Kibana On-the-fly ETL con EFK: En Telefónica Flagship Store_

Upload: stratio

Post on 12-Jul-2015

3.710 views

Category:

Data & Analytics


4 download

TRANSCRIPT

Page 1: On-the-fly ETL con EFK: ElasticSearch, Flume, Kibana

Patrocinado por

ElasticSearch, Flume y Kibana

On-the-fly

ETL con EFK:

En Telefónica Flagship Store_

Page 2: On-the-fly ETL con EFK: ElasticSearch, Flume, Kibana

¿Quiénes somos?

Gaspar Muñoz@[email protected]

www.stratio.com@StratioBD

Santiago Mola@[email protected]

Page 3: On-the-fly ETL con EFK: ElasticSearch, Flume, Kibana

¿De qué vamos a hablar?

1 Visión general del stack EFK

¿Por qué Apache Flume?

On-the-fly ETL con Apache Flume

Diseño de un workflow

Casos de uso

EFK in Action

2

3

4

5

6

Page 4: On-the-fly ETL con EFK: ElasticSearch, Flume, Kibana

Patrocinado por

1. Visión general del stack tecnológico1. VISIÓN GENERAL DEL

STACK TECNOLÓGICO EFK

Page 5: On-the-fly ETL con EFK: ElasticSearch, Flume, Kibana

1.1 Visión general del stack tecnológico

E

F

K

Flume permite diseñar y ejecutar workflows ETL con un gran rendimiento, confiabilidad y una puesta en marcha rápida (sin necesidad de programación)

ElasticSearch indexa cualquier documento que le envíes y escala horizontalmente con mucha facilidad.

Kibana permite sacar provecho de los datos indexados, diseñando dashboards en cuestión de minutos.

Page 6: On-the-fly ETL con EFK: ElasticSearch, Flume, Kibana

1.2 Una solución end To end

Plataforma endToEnd para el tratamiento y monitorización en tiempo real de datos estructurados y no estructurados.

Confiable, escalable, flexible y… ¡open source!

E F K

Page 7: On-the-fly ETL con EFK: ElasticSearch, Flume, Kibana

1.3 Componentes

ElasticSearch es un servidor de indexación y búsqueda schema-lesscon grandes capacidades de escalabilidad horizontal.

Schema-less significa que el esquema se puede actualizar sobre la marcha, en función de los documentos indexados.

ElasticSearch puede indexar cada campo de los documentos (full-textsearch) y genera agregaciones y agrupaciones automáticamente.

Registrar un nodo nuevo en el cluster es muy sencillo, con una gestión automática del reparto de los datos y peticiones.

Apache Flume es un sistema para la recolección agregación y transporte de cantidades masivas de información. Distribuido, confiable y flexible.

Su capacidad de adaptación permite trabajar con fuentes de datos heterogéneas y con destinos variados.

Los datos se pueden transformar, parsear, enriquecer o normalizar al vuelo.

También pueden crearse topologías de despliegue sofisticadas, para resolver casos de uso más complejos.

Kibana es el motor de visualización y análisis de ElasticSearch, que permite una interacción nativa con los datos indexados.

Los dashboards de Kibana son fáciles de crear y permiten una exploración de los datos en tiempo real, pero también de históricos.

Su interfaz es muy flexible y potente, con capacidades de análisis que abarcan desde la visualización de widgets hasta el raw data, con drill-down y estadísticas al vuelo de cada dato indexado.

Page 8: On-the-fly ETL con EFK: ElasticSearch, Flume, Kibana

1.4 Logstash, Flume…

¿No es ELK el tridente promovido por ElasticSearch?

Page 9: On-the-fly ETL con EFK: ElasticSearch, Flume, Kibana

Patrocinado por

1. Visión general del stack tecnológico2. EFK, ELK… por qué Flume?

Page 10: On-the-fly ETL con EFK: ElasticSearch, Flume, Kibana

2.1 Alternativas

LogStash y Flume son las dos principales soluciones open source para ETL on-the-fly

Fuente: SemaText: http://blog.sematext.com/2014/10/06/top-5-most-popular-log-shippers/

Page 11: On-the-fly ETL con EFK: ElasticSearch, Flume, Kibana

2.2 ¿Por qué Apache Flume?

Desarrollado en Java

Confiable (garantía de entrega de eventos)

Tolerante a fallos y escalable

Extensible (todos los componentes son pluggables)

Comunidad madura (liberado por Cloudera, ahora en la ASF)

Big data ready

Page 12: On-the-fly ETL con EFK: ElasticSearch, Flume, Kibana

Patrocinado por

1. Visión general del stack tecnológico3. On-the-fly ETL con

Page 13: On-the-fly ETL con EFK: ElasticSearch, Flume, Kibana

3.1 Aproximación a ETL

Page 14: On-the-fly ETL con EFK: ElasticSearch, Flume, Kibana

APACHE FLUME

3.2 Terminología básica de Flume

SOURCE

INTERCEPTOR

SINK

AGENT

Page 15: On-the-fly ETL con EFK: ElasticSearch, Flume, Kibana

3.3 Workflows

El algoritmo que debe ejecutar un agente de Flume recibe el nombre de workflow.

El workflow se define mediante configuración, sin necesidad de programar.

Esta “receta” incluye el uso de sources, interceptors y sinks, combinados para ejecutar una misión.

Page 16: On-the-fly ETL con EFK: ElasticSearch, Flume, Kibana

3.4 Agentes

La unidad mínima de despliegue en Flume son los agentes.

Un agente es, en esencia, un proceso java.

Cada agente es responsable de ejecutar su workflow en el que, como veremos más adelante, se puede conectar un agente con otros agentes para formar topologías.

Un agente también puede recibir datos de uno o más agentes.

Agent 1 Agent 2

Page 17: On-the-fly ETL con EFK: ElasticSearch, Flume, Kibana

3.5 Sources

Los componentes responsables de recibir datos en Flume se denominan “sources”.

Los datos pueden llegar bien desde un productor externo (snmp, log4j, jms, rest, syslog...), o bien desde otro agente (avro, rpc, jms, kafka...).

La misión principal de un source es la de recibir los datos y escribir en el “channel” definido.

Cada dato recibido en el source se emitecomo un evento en Flume (compuesto de body y headers)

exec

spooling

SNMP

Page 18: On-the-fly ETL con EFK: ElasticSearch, Flume, Kibana

3.6 Sinks

Los sinks son los components encargadosde drenar los channels y escribir esosdatos a un destino.

Los sinks hacen un poll contínuo a los channel y extrae eventos en batches.

Los sinks son totalmente transaccionales.

Page 19: On-the-fly ETL con EFK: ElasticSearch, Flume, Kibana

3.7 Channels

Los channels sirven como buffer intermedio entre los sinks y los sources.

Permiten desacoplar el productor del consumidor, ajustando lasvelocidades de procesamientomediante absorción de lasdiferencias.

Pueden ser volátiles (memoria) o persistentes (disco)

Page 20: On-the-fly ETL con EFK: ElasticSearch, Flume, Kibana

3.8 Interceptors

Los interceptores se sitúan entre un source y un channel.

Permiten transformar o eliminarlos eventos que pasen entre esosdos componentes.

Los interceptors puedenencadenarse para apilaroperaciones sobre los eventos.

Se pueden programar tambiéncustom interceptors.

Page 21: On-the-fly ETL con EFK: ElasticSearch, Flume, Kibana

3.9 KiteSDK: Morhplines

Como parte del KiteSDK liberado por Cloudera, los morphlines son un framework extensible de

transformaciones.

Page 22: On-the-fly ETL con EFK: ElasticSearch, Flume, Kibana

3.10 Full Flume workflow

Page 23: On-the-fly ETL con EFK: ElasticSearch, Flume, Kibana

3.11 Principales herramientas

Page 24: On-the-fly ETL con EFK: ElasticSearch, Flume, Kibana

3.12 Topologías de despliegue

Page 25: On-the-fly ETL con EFK: ElasticSearch, Flume, Kibana

Patrocinado por

1. Visión general del stack tecnológico4. Diseño de un workflow

Page 26: On-the-fly ETL con EFK: ElasticSearch, Flume, Kibana

4.1 Visión general

Page 27: On-the-fly ETL con EFK: ElasticSearch, Flume, Kibana

4.2 Flume workflow

#Define components

a.sources=src

a.sinks=snk

a.channels=chan

# Define a channel

a.channels.chan.type=file

a.channels.chan.checkpointDir=data/chan/check/

a.channels.chan.dataDirs=data/chan/data/

a.channels.chan.capacity=1000000

a.channels.chan.transactionCapacity=10000

a.channels.chan.checkpointInterval=300000

Page 28: On-the-fly ETL con EFK: ElasticSearch, Flume, Kibana

4.3 Flume workflow

# Define a source

a.sources.src.type=spoolDir

a.sources.src.spoolDir=data/spooldir

a.sources.src.fileHeader=true

a.sources.src.batchSize=100

a.sources.src.deserializer=LINE

a.sources.src.deserializer.decodeErrorPolicy=REPLACE

# Define an interceptor (optional)

a.sources.src.interceptors=morphline => link

a.sources.src.interceptors.morphline.type=org.apache.flume.sink.solr.morphline.Mor

phlineInterceptor$Builder

a.sources.src.interceptors.morphline.morphlineFile=conf/morphline-

elasticsearch.conf

a.sources.src.interceptors.morphline.morphlineId=morphline1

Page 29: On-the-fly ETL con EFK: ElasticSearch, Flume, Kibana

4.4 Flume workflow

# Define a sink

a.sinks.snk.type=org.apache.flume.sink.elasticsearch.ElasticSearchSink

a.sinks.snk.batchSize=1000

a.sinks.snk.indexName=flume_wikipedia_demo

a.sinks.snk.hostNames=127.0.0.1:9300

a.sinks.snk.clusterName=elasticsearch

a.sinks.snk.serializer=com.stratio.ingestion.serializer.elasticsearch.ElasticSearc

hSerializerWithMapping

a.sinks.snk.serializer.mappingFile=conf/elasticsearch_mapping.json

# Bind channel with components

a.sources.src.channels=chan

a.sinks.snk.channel=chan

Page 30: On-the-fly ETL con EFK: ElasticSearch, Flume, Kibana

4.5 Integración Flume _ES

Flume provee un sink de ElasticSearch.

Características:● Rolling Index. Índice cada día. ● Parametrización de ttl, batch.● Serializador custom.

https://flume.apache.org/FlumeUserGuide.html#elasticsearchsink

Page 31: On-the-fly ETL con EFK: ElasticSearch, Flume, Kibana

4.6 Integración Flume -ES

¿Problema? Cuando se crean nuevos índices cada día se utiliza un mapping por defecto.

Solución: Serializador custom, con mapping de tipos.

agent.sinks.essink.serializer=com.stratio.ingestion.serializer.elasticsearch.ElasticSearchSerializerWithMapping

{

"properties" : {

"@timestamp": { "type": "date", "store": true },

"proj_lang": { "type": "string", "index": "not_analyzed" },

"title": { "type": "string", "index": "not_analyzed", "store": true },

"reqs": { "type": "integer", "store": true },

"size": { "type": "integer", "store": false, "index": "no" },

"timestamp": { "type": "date" }

},

"_source": { "enabled": true },

"_all": { "enabled": false }

}

Page 32: On-the-fly ETL con EFK: ElasticSearch, Flume, Kibana

4.7 Flume workflow

# Define a sink

a.sinks.snk.type=org.apache.flume.sink.elasticsearch.ElasticSearchSink

a.sinks.snk.batchSize=1000

a.sinks.snk.indexName=flume_wikipedia_demo

a.sinks.snk.hostNames=127.0.0.1:9300

a.sinks.snk.clusterName=elasticsearch

a.sinks.snk.serializer=com.stratio.ingestion.serializer.elasticsearch.ElasticSearc

hSerializerWithMapping

a.sinks.snk.serializer.mappingFile=conf/elasticsearch_mapping.json

# Bind channel with components

a.sources.src.channels=chan

a.sinks.snk.channel=chan

Page 33: On-the-fly ETL con EFK: ElasticSearch, Flume, Kibana

Patrocinado por

1. Visión general del stack tecnológico5. Casos de uso

Page 34: On-the-fly ETL con EFK: ElasticSearch, Flume, Kibana

5.1 Casos de uso: SIEM

Page 35: On-the-fly ETL con EFK: ElasticSearch, Flume, Kibana

5.2 Casos de uso: SIEM (ii)

Page 36: On-the-fly ETL con EFK: ElasticSearch, Flume, Kibana

5.3 Casos de uso: SIEM (iii)

Page 37: On-the-fly ETL con EFK: ElasticSearch, Flume, Kibana

5.4 Caso de uso: Complex Event Processing

Stratio Streaming es el fruto de la conjunciónentre la potencia de Spark Streaming comoframework de computación continua y Siddhi CEP como motor de procesado de eventoscomplejos.

Page 38: On-the-fly ETL con EFK: ElasticSearch, Flume, Kibana

5.5 Caso de uso: Complex Event Processing

Page 39: On-the-fly ETL con EFK: ElasticSearch, Flume, Kibana

Patrocinado por

1. Visión general del stack tecnológico6. EFK in action

Page 40: On-the-fly ETL con EFK: ElasticSearch, Flume, Kibana

6.1 Stratio Ingestion

● https://github.com/Stratio/flume-ingestion

● Ejemplos en el directorio “examples”, con instrucciones incluidas.

Page 41: On-the-fly ETL con EFK: ElasticSearch, Flume, Kibana

Patrocinado por

1. Visión general del stack tecnológico

Page 42: On-the-fly ETL con EFK: ElasticSearch, Flume, Kibana

Patrocinado por

1. Visión general del stack tecnológicoSiguientes Meetups

Page 43: On-the-fly ETL con EFK: ElasticSearch, Flume, Kibana

● Temas sugeridos

o ElasticSearch Avanzado:

Agregaciones, GeoSearch,

Backups

o Optimización y

monitorización

o ¿Otros?

● Próxima fecha: 2015

Próximos meetups de ElasticSearch

Page 44: On-the-fly ETL con EFK: ElasticSearch, Flume, Kibana

Patrocinado por

We’re hiring!

http://bit.ly/1I3hDVM

Encuesta

Gracias ☺