25
Proyecto Final Master Felix Rodriguez Araujo Master Experto en Cloud Computing U-TAD Log -Analytics con Apache-Flume Elasticsearch HDFS Kibana

Log -Analytics with Apache-Flume Elasticsearch HDFS Kibana

Embed Size (px)

Citation preview

Proyecto Final Master Felix Rodriguez Araujo

Master Experto en Cloud Computing U-TAD

Log -Analyticscon

Apache-Flume ElasticsearchHDFSKibana

DESCRIPCIÓN GLOBAL DEL PROYECTO

TECNOLOGÍAS USADAS

WORKFLOW DEL DATO A ALTO NIVEL

BIBLIOGRAFÍA

1

2

3

4

Con el crecimiento de los volúmenes de datos que estamos experimentando en los últimos años, nos hemos visto obligados a buscar soluciones para poder tratar dicha información de manera ágil y eficiente.

E.T.L. está siendo una estrategia claramente en alza en los últimos tiempos,el cómo extraer los datos de múltiples orígenes y sistemas, cargarlos en tablas de datos para luego,posteriormente tratarlos y poder sacar un provecho de ellos.

En el ejemplo que quiero tratar con este proyecto, es la gestión de logs generados por los diferentes webservers que tenemos por las diferentes regiones configuradas en AWS,para posteriormente visualizarlos de una manera eficiente y práctica.

Transform

Extract

Load

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)

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.

Hadoop es un sistema que permite almacenar y procesar grandes datos en un entorno distribuido en clústeres de ordenadores

utilizando modelos de programación simple. Está diseñado para aumentar la escala de servidores individuales de miles de máquinas,

cada uno de ellos ofrece computación y almacenamiento local.

Características de los HDFS

● Es adecuado para el almacenamiento y procesamiento distribuido.

● Hadoop proporciona una interfaz de comandos para interactuar con HDFS.

● Los servidores de namenode datanode y ayudar a los usuarios a comprobar fácilmente el estado del clúster.

● Streaming el acceso a los datos del sistema de ficheros.

● HDFS proporciona permisos de archivo y la autenticación.

Hive es almacén de datos creado específicamente para Hadoop que nos facilita la tarea de sumarizar los datos pre-existentes en HDFS.

La idea principal de Hive es la de funcionar como capa externa a Hadoop a modo de envoltorio, donde vamos a poder realizar

consultas sobre el sistema de archivos que serán tratadas como MapReduces en modo nativo en HDFS.

Para poder realizar estas operaciones, fue creado un lenguaje de consultas a "base de datos" (recordemos que HDFS es un sistema de

ficheros) muy similar a SQL, que denominaron HiveQL o HQL (dependiendo de en que libro lo leas lo verás de una manera u otra).

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

ElasticSearch es un servidor de indexación y búsqueda schema-less con 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-text search) 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.

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

Kibana es el motor de visualización y análisis de ElasticSearch, que permite una integració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.

Http re

quests and re

sponse

s

Apache HTTP serverFlume Agent

Flume Messaging TCP PORT 4545HDFSHiveFlume Agent

Loading to Elasticsearch

with Hive

Visualising the data

El primer paso, lógicamente será recibir peticiones a nuestros servidores web Apache.Dicho tráfico configuraremos para que loguee donde consideremos oportuno. Http requests and responses

Apache HTTP serverFlume Agent

En cada web-server configuraremos el agente flume, para que envie los logs al HDFS.

El archivo de conf básica del flume en el web-server

Ruta de los logs a analizar

Ip HDFS +Puerto

PARA LEVANTAR EL AGENTE

/usr/lib/flume/bin/flume-ng agent -c conf -f conf/flume-src-agent.conf -n source_agent

Apache HTTP serverFlume Agent

Flume Messaging TCP PORT 4545

HDFSHiveFlume Agent

Una vez levantado el agente Flume en el servidor origen,procederá a enviar al “collector” (servidor destino) los logs que hemos configurado previamente.

Path del HDFS donde guardamos los logs enviados desde el source

START Agent: flume-ng agent -c conf -f /flume-ng/conf/flume-trg-agent.conf -n collector

Una vez lanzados los agentes flumes tanto en el server target como source…..

Vemos como, efectivamente nuestro HDFS está recibiendo datos

Podemos ver de una manera mucho más gráfica los logs importados por flume en HDFS, usaremos la G.U.I. de Hadoop, HUE.

Para poder conseguir nuestro objetivo final, debemos de empezar a tratar los logs con HIVE, para ello vamos a “importar” los logs en tablas, para ello lo haremos desde HUE o también desde la consola hive de un terminal SSH, con la siguiente query.

A continuación vamos a “inyectar” datos en ElasticSearch,ya que es un requisito fundamental para finalmente poder verlo en Kibana.Lo primero que debemos hacer es agregar el jar elasticsearch-hadoop a la query

Las queries necesarias para ello son las siguientes:CREATE TABLE logs (type STRING, time STRING, ext STRING, ip STRING, req STRING, res INT, bytes INT,

phpmem INT, agent STRING)

ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';

LOAD DATA INPATH '/pro/data/logs/apache_access_combined/150724' OVERWRITE INTO TABLE logs;

CREATE EXTERNAL TABLE felix_logses (time STRING, extension STRING, clientip STRING, request STRING,

response INT, agent STRING)

STORED BY 'org.elasticsearch.hadoop.hive.EsStorageHandler'

TBLPROPERTIES('es.resource' = 'demo/hive',

'es.mapping.names' = 'time:@timestamp',

'es.nodes' = 'your_es_cluster_hostname');

INSERT OVERWRITE TABLE felix_logses SELECT s.time, s.ext, s.ip, s.req, s.res, s.agent FROM logs s;

Si todo ha ido bien, ya podemos empezar a tratar datos con Elasticsearch.Para verlo no hay más que ejecutar esta sencilla query…...

Y ...Voila...vemos los datos correctamente importados…….

El último paso de nuestro proyecto, es ofrecer una visualización de los logs que vamos y hemos importado.Como dijimos antes, usaremos Kibana.Lo primero que deberemos hacer es agregar el index creado en la tabla anteriormente en hive.En este caso, el index creado se denomina felix, vemos que importa las tablas con sus campos y datos.

El último paso de nuestro proyecto, es ofrecer una visualización de los logs que vamos y hemos importado.Como dijimos antes, usaremos Kibana.Lo primero que deberemos hacer es agregar el index creado en la tabla anteriormente en hive.En este caso, el index creado se denomina felix, vemos que importa las tablas con sus campos y datos.

Los siguientes pasos en Kibana, para no entrar mucho en detalle, es básicamente que debes personalizar tus búsquedas en tus logs para que, posteriormente con los datos importados por Elasticsearch, te muestre los gráficos deseados.

http://www.rittmanmead.com/2014/05/trickle-feeding-webserver-log-files-to-hdfs-using-apache-flume/https://www.elastic.co/guide/en/elasticsearch/reference/1.6/cluster-nodes-info.htmlhttps://github.com/hortonworks/hadoop-tutorials/blob/master/Community/T07_Elasticsearch_Hadoop_Integration.mdhttp://www.johnandcailin.com/blog/cailin/exploring-apache-log-files-using-hive-and-hadoophttps://www.elastic.co/downloadshttp://ryrobes.com/systems/connecting-tableau-to-elasticsearch-read-how-to-query-elasticsearch-with-hive-sql-and-hadoop/comment-page-1/https://github.com/lmenezes/elasticsearch-kopfhttps://www.digitalocean.com/community/tutorials/how-to-use-kibana-dashboards-and-visualizationshortonworks.com/products/hortonworks-sandbox/#tuts-admins