SlideShare una empresa de Scribd logo
1 de 37
Descargar para leer sin conexión
Monitorización de logs con el
stack ELK
IES Gran Capitán - 31 Enero 2017
Nacho Álvarez
@neonigmacdb
✉ neonigma@gmail.com
http://www.nacho-alvarez.es
Índice
1) Preliminares: Vagrant y Ansible
2) Introducción a ELK
3) ElasticSearch
4) Logstash
5) Kibana
6) Arquitectura del sistema de pruebas
7) Demo time!
1/36
Vagrant
● Gestor de máquinas virtuales
● Necesita dos elementos:
○ Proveedor (VirtualBox, VMWare, Docker…)
○ Aprovisionador (Ansible, Puppet, Chef…)
● Funciona con boxes predefinidas
https://atlas.hashicorp.com/boxes/search
● La definición de la máquina virtual se lee de un fichero
de configuración, el Vagrant file 2/36
Vagrant
# -*- mode: ruby -*-
# vi: set ft=ruby :
# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "ubuntu/trusty64"
config.vm.network "forwarded_port", guest: 80, host: 8080
config.vm.network "private_network", ip: "192.168.33.10"
config.vm.synced_folder "htdocs", "/var/www/html"
config.vm.provision "shell", path: "config.sh"
end
3/36
Vagrant
#!/bin/bash
# Update server
apt-get update
apt-get upgrade -y
# Install essentials
apt-get -y install build-essential binutils-doc git -y
# Install Apache
apt-get install apache2 -y
#Install PHP
apt-get install php5 libapache2-mod-php5 php5-cli php5-mysql -y
# Install MySQL
echo "mysql-server mysql-server/root_password password root" | sudo debconf-set-selections
echo "mysql-server mysql-server/root_password_again password root" | sudo debconf-set-selections
apt-get install mysql-client mysql-server -y
# Restart Apache service
service apache2 restart 4/36
Vagrant
$ vagrant up # Ejecutar la máquina virtual
$ vagrant ssh # Entrar por ssh a la máquina
$ vagrant suspend # Suspender la máquina
$ vagrant resume # Despertar la máquina
$ vagrant halt # Apagar la máquina
$ vagrant status # Saber el estado de la máquina (apagada, ejecutándose o en modo suspensión):
$ vagrant destroy # Destruir la máquina
A todos los comandos se les puede añadir como argumento el nombre de la máquina,
si tenemos varias
5/36
Ansible
● Herramienta de gestión de configuración y
aprovisionamiento
● Se conecta a los equipos a configurar usando SSH
● Trabaja con un inventario de máquinas a configurar
● Existen playbooks o recetas ya configuradas por
terceros
https://galaxy.ansible.com/
6/36
Ansible
● Máquina de Administración: donde tenemos instalado Ansible y desde donde se ejecutarán las tareas
● Inventory: archivo donde registramos los servidores sobre los cuales ejecutaremos las tareas
● Playbook: archivo donde listamos las tareas a ejecutar, es como una receta de cocina. En formato YAML
● Grupo de hosts: si se usa el mismo Playbook para varias máquinas, diferencia entre servidores
● Task: bloque dentro del Playbook que define una acción específica a realizar, pj: instalar un paquete.
● Module: Plugins que permiten realizar tareas de forma más fácil, como yum para instalar software, y también
nosotros podemos crear los nuestros.
● Role: una forma de ordenar los diferentes Playbooks.
● Play: se refiere a la ejecución de un Playbook.
● Facts: variables dentro de Ansible que contienen información sobre los servidores. Ej: SO, RAM, Dirs IP, etc.
● Handlers: pequeño código que se usa cuando algo cambia. Por ej: si actualizas el archivo de configuración de
Apache, un Handler reiniciará el servicio httpd.
7/36
Ansible
---
- hosts: stats
sudo: yes
gather_facts: yes
roles:
- java8
- elasticsearch
- kibana
- hosts: apps
sudo: yes
gather_facts: yes
roles:
- java8
- logstash
- appdeploy
8/36
---
# file: /roles/java8/tasks/main.yml
- name: add Java repository to sources
apt_repository: repo='ppa:webupd8team/java'
tags: java
- name: autoaccept license for Java
debconf: name='oracle-java8-installer' question='shared/accepted-oracle-license-v1-1'
value='true' vtype='select'
tags: java
- name: update APT package cache
apt: update_cache=yes
tags: java
- name: install Java 8
apt: name=oracle-java8-installer state=latest install_recommends=yes
tags: java
Introducción a ELK
● ELK viene de ElasticSearch, Logstash y Kibana
● Surge como respuesta a la necesidad de analítica
● Problema de búsquedas con buenas visualizaciones
● Lucene + sist. distribuido ElasticSearch para búsquedas
● Normalización de datos con Logstash
● Herramienta de visualización de datos Kibana
● Tenemos un rival muy duro para soluciones de pago
9/36
ElasticSearch
10/36
● Servidor de búsqueda basado en Apache Lucene
● Proporciona un motor de búsqueda de texto completo, distribuido y con
capacidad de multi-tenencia con API REST + JSON
● En nuestro ejemplo la usaremos como BBDD donde almacenar, indexar y
buscar los eventos de log de las apps
● Usuarios ilustres: Wikimedia, Mozilla, Quora, Foursquare, SoundCloud,
GitHub, CERN y Stack Exchange
ElasticSearch - Nodos
11/36
● Cada nodo es una VM Java ejecutando una instancia del servicio
● Límite 40% heap de la RAM
● Tipos de nodos
○ master => responsable de gestión del cluster y asegurar su integridad
○ master-eligible => nodos candidatos a maestro según se necesite
○ data => nodos normales conteniendo los datos y haciendo búsquedas
○ client => enrutan peticiones dentro del clúster
○ tribe => permiten agregar clústeres de forma transparente
ElasticSearch - Shards
12/36
● Unidad de distribución de trabajo en cluster donde se hacen las búsquedas
● Internamente es una instancia de Lucene con sus datos, metadatos e índices
● Cada índice tiene un número fijo y predeterminado de shards primarias, que
son las fuentes que tienen la info almacenada e indexada en Elasticsearch
● Para añadir o quitar shards primarias hay que recrear el índice (reindexar)
● Shards de respaldo: copias que se distribuyen por los nodos del cluster para
conseguir mayor rendimiento, alta disponibilidad y backup
ElasticSearch - Mapping
13/36
● La configuración por defecto consiste en tokenizar los textos e intentar detectar
otros valores primitivos
● Mapping consiste en definir cómo un documento y los campos que contiene son
almacenados e indexados. Por ejemplo, usamos mappings para definir:
○ Qué campos string deberían tratarse como campos de texto
○ Qué campos contienen números, fechas, localizaciones...
○ Formato de los campos de fecha
○ Reglas personalizadas para controlar el mapeado para campos añadidos
dinámicamente
ElasticSearch - Mapping
14/36
PUT my_index
{
"mappings": {
"user": {
"_all": { "enabled": false },
"properties": {
"title": { "type": "text" },
"name": { "type": "text" },
"age": { "type": "integer" }
}
},
"blogpost": {
"_all": { "enabled": false },
"properties": {
"title": { "type": "text" },
"body": { "type": "text" },
"user_id": {
"type": "keyword"
},
"created": {
"type": "date",
"format":
"strict_date_optional_time||epoch_millis"
}
}
}
}
}
ElasticSearch
15/36
LogStash
16/36
● Herramienta para recolectar, parsear y guardar los logs
● En el caso que nos ocupa los guardaremos en ElasticSearch
● La configuración consta de una sección input, una filter y otra output
● Todo funciona en base a plugins, las estrellas de esta herramienta
LogStash - Ejemplo
17/36
LogStash - Ejemplo
18/36
input {
stdin {}
}
filter {
grok {
match => {"message" => "%{IP:ip}"}
}
geoip {
source => "ip"
}
}
output {
stdout {
codec => rubydebug
}
}
LogStash - Ejemplo
19/36
LogStash - Syslog
20/36
input {
tcp {
port => 5000
type => syslog
}
udp {
port => 5000
type => syslog
}
}
filter {
if [type] == "syslog" {
grok {
match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp}
%{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:[%{POSINT:syslog_pid}])?:
%{GREEDYDATA:syslog_message}" }
add_field => [ "received_at", "%{@timestamp}" ]
add_field => [ "received_from", "%{host}" ]
}
date {
match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]
}
}
}
output {
elasticsearch { hosts =>
["localhost:9200"] }
stdout { codec => rubydebug }
}
LogStash - Syslog
21/36
{
"message" => "Dec 23 14:30:01 louis CRON[619]: (www-data) CMD (php /usr/share/cacti/site/poller.php >/dev/null
2>/var/log/cacti/poller-error.log)",
"@timestamp" => "2013-12-23T22:30:01.000Z",
"@version" => "1",
"type" => "syslog",
"host" => "0:0:0:0:0:0:0:1:52617",
"syslog_timestamp" => "Dec 23 14:30:01",
"syslog_hostname" => "louis",
"syslog_program" => "CRON",
"syslog_pid" => "619",
"syslog_message" => "(www-data) CMD (php /usr/share/cacti/site/poller.php >/dev/null 2>/var/log/cacti/poller-error.log)",
"received_at" => "2013-12-23 22:49:22 UTC",
"received_from" => "0:0:0:0:0:0:0:1:52617",
"syslog_severity_code" => 5,
"syslog_facility_code" => 1,
"syslog_facility" => "user-level",
"syslog_severity" => "notice"
}
LogStash - IBM Websphere
22/36
grok {
# was_shortname need to be regex, because numbers and $ can be in the word
match => ["message", "[%{DATA:wastimestamp} %{WORD:tz}] %{BASE16NUM:was_threadID}
(?<was_shortname>b[A-Za-z0-9$]{2,}b) %{SPACE}%{WORD:was_loglevel}%{SPACE}
%{GREEDYDATA:message}"]
overwrite => [ "message" ]
#tag_on_failure => [ ]
}
grok {
# Extract the WebSphere Response Code
match => ["message", "(?<was_responsecode>[A-Z0-9]{9,10})[:,ss]"]
tag_on_failure => [ ]
}
LogStash - IBM Websphere
23/36
LogStash - IBM Websphere
24/36
LogStash - Plugins
25/36
● Existen decenas de plugins para las tres etapas
● INPUT
○ https://www.elastic.co/guide/en/logstash/current/input-plugins.html
● FILTER
○ https://www.elastic.co/guide/en/logstash/current/filter-plugins.html
● OUTPUT
○ https://www.elastic.co/guide/en/logstash/current/output-plugins.html
Kibana
● Aplicación web que facilita la explotación visual de
información almacenada en una base de datos
● Los usuarios pueden crear gráficos de barras, líneas,
tartas, mapas, etc., sobre grandes cantidades de datos
● Permite montar tableros de mandos o dashboards a
medida según las necesidades
26/36
Kibana
27/36
Kibana
28/36
Kibana
29/36
Kibana
30/36
Kibana
31/36
Arquitectura sist. pruebas
32/36
Demo time!
33/36
Referencias
● Tutorial Vagrant
https://geekytheory.com/tutorial-vagrant-1-que-es-y-como-usarlo/
● Tutorial Ansible
http://blog.itlinux.cl/blog/2016/04/09/automatizacion-y-el-desafio-de-la-nube/
● ElasticSearch
https://www.adictosaltrabajo.com/tutoriales/administracion-de-elasticsearch/
● Mappings con ElasticSearch
https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping.html
● Introducción a ELK
http://elmanytas.es/?q=node/318
34/36
Referencias
● Better logstash filter to analyze SystemOut.log and some more
https://www.stoeps.de/better-logstash-filter-to-analyze-systemout-log-and-some-more/
● Análisis de logs con Kibana
https://www.adictosaltrabajo.com/tutoriales/analisis-de-logs-con-kibana/
● Twitter Elasticsearch example
https://github.com/elastic/examples/tree/master/ElasticStack_twitter
35/36
¿Preguntas?
36/36

Más contenido relacionado

La actualidad más candente

Generalidades de manejo de logs
Generalidades de manejo de logsGeneralidades de manejo de logs
Generalidades de manejo de logsMarvin Xuya
 
Postgre sql y_replicacion_slony_p
Postgre sql y_replicacion_slony_pPostgre sql y_replicacion_slony_p
Postgre sql y_replicacion_slony_pedvin_marcelo
 
Mongodb administración
Mongodb administraciónMongodb administración
Mongodb administraciónJuan Ladetto
 
Haciendo copias de seguridad de todo el conocimiento humano con python y soft...
Haciendo copias de seguridad de todo el conocimiento humano con python y soft...Haciendo copias de seguridad de todo el conocimiento humano con python y soft...
Haciendo copias de seguridad de todo el conocimiento humano con python y soft...Jaime Crespo
 
(Codemotion 2014) JVM GC: WTF?!
(Codemotion 2014) JVM GC: WTF?!(Codemotion 2014) JVM GC: WTF?!
(Codemotion 2014) JVM GC: WTF?!Alonso Torres
 
Exposicion apache kafka
Exposicion apache kafkaExposicion apache kafka
Exposicion apache kafkaArlin11
 
Replicacion de Base de datos con OGG
Replicacion de Base de datos con OGGReplicacion de Base de datos con OGG
Replicacion de Base de datos con OGGErick Vidbaz
 
Exposicion apache
Exposicion apacheExposicion apache
Exposicion apacheArlin11
 
Migrando de MSSQL a PostgreSQL
Migrando de MSSQL a PostgreSQLMigrando de MSSQL a PostgreSQL
Migrando de MSSQL a PostgreSQLscastell77
 
Replicacion con postgresql y slony
Replicacion con  postgresql y slonyReplicacion con  postgresql y slony
Replicacion con postgresql y slonyJohanna Mendez
 
Java struts2 - 03 componentes de la aplicacion
Java   struts2 - 03 componentes de la aplicacionJava   struts2 - 03 componentes de la aplicacion
Java struts2 - 03 componentes de la aplicacionJechu2013
 
Aprendiendo REDIS en 20 minutos
Aprendiendo REDIS en 20 minutosAprendiendo REDIS en 20 minutos
Aprendiendo REDIS en 20 minutosGonzalo Chacaltana
 

La actualidad más candente (20)

Generalidades de manejo de logs
Generalidades de manejo de logsGeneralidades de manejo de logs
Generalidades de manejo de logs
 
Postgre sql y_replicacion_slony_p
Postgre sql y_replicacion_slony_pPostgre sql y_replicacion_slony_p
Postgre sql y_replicacion_slony_p
 
Mongodb administración
Mongodb administraciónMongodb administración
Mongodb administración
 
S6-POO-3.2 Contenedores Especiales
S6-POO-3.2 Contenedores EspecialesS6-POO-3.2 Contenedores Especiales
S6-POO-3.2 Contenedores Especiales
 
Hydra
HydraHydra
Hydra
 
Haciendo copias de seguridad de todo el conocimiento humano con python y soft...
Haciendo copias de seguridad de todo el conocimiento humano con python y soft...Haciendo copias de seguridad de todo el conocimiento humano con python y soft...
Haciendo copias de seguridad de todo el conocimiento humano con python y soft...
 
Objeto SqlDataReader
Objeto SqlDataReaderObjeto SqlDataReader
Objeto SqlDataReader
 
(Codemotion 2014) JVM GC: WTF?!
(Codemotion 2014) JVM GC: WTF?!(Codemotion 2014) JVM GC: WTF?!
(Codemotion 2014) JVM GC: WTF?!
 
Exposicion apache kafka
Exposicion apache kafkaExposicion apache kafka
Exposicion apache kafka
 
Meetup Spark 2.0
Meetup Spark 2.0Meetup Spark 2.0
Meetup Spark 2.0
 
Replicacion de Base de datos con OGG
Replicacion de Base de datos con OGGReplicacion de Base de datos con OGG
Replicacion de Base de datos con OGG
 
Exposicion apache
Exposicion apacheExposicion apache
Exposicion apache
 
Admon PG 1
Admon PG 1Admon PG 1
Admon PG 1
 
Migrando de MSSQL a PostgreSQL
Migrando de MSSQL a PostgreSQLMigrando de MSSQL a PostgreSQL
Migrando de MSSQL a PostgreSQL
 
Replicacion con postgresql y slony
Replicacion con  postgresql y slonyReplicacion con  postgresql y slony
Replicacion con postgresql y slony
 
codigos
codigos codigos
codigos
 
Ataque por inyección de código sql y sniffing
Ataque por inyección de código sql y sniffingAtaque por inyección de código sql y sniffing
Ataque por inyección de código sql y sniffing
 
Introducción a PostgreSql
Introducción a PostgreSqlIntroducción a PostgreSql
Introducción a PostgreSql
 
Java struts2 - 03 componentes de la aplicacion
Java   struts2 - 03 componentes de la aplicacionJava   struts2 - 03 componentes de la aplicacion
Java struts2 - 03 componentes de la aplicacion
 
Aprendiendo REDIS en 20 minutos
Aprendiendo REDIS en 20 minutosAprendiendo REDIS en 20 minutos
Aprendiendo REDIS en 20 minutos
 

Destacado

Elasticsearch for beginners
Elasticsearch for beginnersElasticsearch for beginners
Elasticsearch for beginnersNeil Baker
 
nhận làm dịch vụ giúp việc quận bình thạnh ở sài gòn
nhận làm dịch vụ giúp việc quận bình thạnh ở sài gònnhận làm dịch vụ giúp việc quận bình thạnh ở sài gòn
nhận làm dịch vụ giúp việc quận bình thạnh ở sài gònwilburn366
 
Визуальное мышление - Слайды занятий 3 и 4
Визуальное мышление - Слайды занятий 3 и 4Визуальное мышление - Слайды занятий 3 и 4
Визуальное мышление - Слайды занятий 3 и 4Intellectics
 
Product Knowledge Akhyana Village
Product Knowledge Akhyana VillageProduct Knowledge Akhyana Village
Product Knowledge Akhyana VillageMario Lubis
 
Middleeast MobileERP Profile
Middleeast MobileERP ProfileMiddleeast MobileERP Profile
Middleeast MobileERP ProfileAshish Shah
 
Actualizando herramientas
Actualizando herramientasActualizando herramientas
Actualizando herramientasEdwin R. Reyes
 
Open data beni comuni digitali
Open data beni comuni digitaliOpen data beni comuni digitali
Open data beni comuni digitaliFranco Morelli
 
The Laughing Buddha brand presentation
The Laughing Buddha brand presentationThe Laughing Buddha brand presentation
The Laughing Buddha brand presentationcheritter
 
2007 IEEE AP-S-Internal UWB Metal-Plate Monopole Antenna for a Wireless USB D...
2007 IEEE AP-S-Internal UWB Metal-Plate Monopole Antenna for a Wireless USB D...2007 IEEE AP-S-Internal UWB Metal-Plate Monopole Antenna for a Wireless USB D...
2007 IEEE AP-S-Internal UWB Metal-Plate Monopole Antenna for a Wireless USB D...Saou-Wen Su
 
GFW Partner Meeting 2017 - Plenary Updates from the GFW Partnership
GFW Partner Meeting 2017 - Plenary Updates from the GFW PartnershipGFW Partner Meeting 2017 - Plenary Updates from the GFW Partnership
GFW Partner Meeting 2017 - Plenary Updates from the GFW PartnershipWorld Resources Institute (WRI)
 
Gns3 paso a paso
Gns3 paso a pasoGns3 paso a paso
Gns3 paso a pasobarbarasud
 

Destacado (14)

Elasticsearch for beginners
Elasticsearch for beginnersElasticsearch for beginners
Elasticsearch for beginners
 
Syed Wajahat Ali
Syed Wajahat AliSyed Wajahat Ali
Syed Wajahat Ali
 
nhận làm dịch vụ giúp việc quận bình thạnh ở sài gòn
nhận làm dịch vụ giúp việc quận bình thạnh ở sài gònnhận làm dịch vụ giúp việc quận bình thạnh ở sài gòn
nhận làm dịch vụ giúp việc quận bình thạnh ở sài gòn
 
Визуальное мышление - Слайды занятий 3 и 4
Визуальное мышление - Слайды занятий 3 и 4Визуальное мышление - Слайды занятий 3 и 4
Визуальное мышление - Слайды занятий 3 и 4
 
Classless classful
Classless classfulClassless classful
Classless classful
 
Gns3
Gns3Gns3
Gns3
 
Product Knowledge Akhyana Village
Product Knowledge Akhyana VillageProduct Knowledge Akhyana Village
Product Knowledge Akhyana Village
 
Middleeast MobileERP Profile
Middleeast MobileERP ProfileMiddleeast MobileERP Profile
Middleeast MobileERP Profile
 
Actualizando herramientas
Actualizando herramientasActualizando herramientas
Actualizando herramientas
 
Open data beni comuni digitali
Open data beni comuni digitaliOpen data beni comuni digitali
Open data beni comuni digitali
 
The Laughing Buddha brand presentation
The Laughing Buddha brand presentationThe Laughing Buddha brand presentation
The Laughing Buddha brand presentation
 
2007 IEEE AP-S-Internal UWB Metal-Plate Monopole Antenna for a Wireless USB D...
2007 IEEE AP-S-Internal UWB Metal-Plate Monopole Antenna for a Wireless USB D...2007 IEEE AP-S-Internal UWB Metal-Plate Monopole Antenna for a Wireless USB D...
2007 IEEE AP-S-Internal UWB Metal-Plate Monopole Antenna for a Wireless USB D...
 
GFW Partner Meeting 2017 - Plenary Updates from the GFW Partnership
GFW Partner Meeting 2017 - Plenary Updates from the GFW PartnershipGFW Partner Meeting 2017 - Plenary Updates from the GFW Partnership
GFW Partner Meeting 2017 - Plenary Updates from the GFW Partnership
 
Gns3 paso a paso
Gns3 paso a pasoGns3 paso a paso
Gns3 paso a paso
 

Similar a Monitorización de logs con ELK

Replicacion con postgresql y slony
Replicacion con  postgresql y slonyReplicacion con  postgresql y slony
Replicacion con postgresql y slonyJohanna Mendez
 
Primeros pasos con Logstash y Beats
Primeros pasos con Logstash y BeatsPrimeros pasos con Logstash y Beats
Primeros pasos con Logstash y BeatsUllyCarolinneSampaio
 
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONAPARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONAVíctor Bolinches
 
58517228 postgre sql-desarrolladoresbasico
58517228 postgre sql-desarrolladoresbasico58517228 postgre sql-desarrolladoresbasico
58517228 postgre sql-desarrolladoresbasicoLucia Zambrano Franco
 
Análisis de datos con Apache Spark
Análisis de datos con Apache SparkAnálisis de datos con Apache Spark
Análisis de datos con Apache SparkEduardo Castro
 
Desarrollo web en Nodejs con Pillars por Chelo Quilón
Desarrollo web en Nodejs con Pillars por Chelo QuilónDesarrollo web en Nodejs con Pillars por Chelo Quilón
Desarrollo web en Nodejs con Pillars por Chelo Quilónbetabeers
 
Rendimiento en magento
Rendimiento en magentoRendimiento en magento
Rendimiento en magentoOnestic
 
Oracle g11 - Administration workshop1 sg1
Oracle g11 - Administration workshop1  sg1 Oracle g11 - Administration workshop1  sg1
Oracle g11 - Administration workshop1 sg1 Rodolfo Zoilo
 
Anatomía de un ataque a tns listener
Anatomía de un ataque a tns listenerAnatomía de un ataque a tns listener
Anatomía de un ataque a tns listeneryt f
 
Instalación y Configuración de Pentaho BI y MySQL
Instalación y Configuración de Pentaho BI y MySQLInstalación y Configuración de Pentaho BI y MySQL
Instalación y Configuración de Pentaho BI y MySQLT.I.C
 
Creando su primera aplicación de Big Data en AWS
Creando su primera aplicación de Big Data en AWSCreando su primera aplicación de Big Data en AWS
Creando su primera aplicación de Big Data en AWSAmazon Web Services LATAM
 
Escalabilidad - Apache y MySQL
Escalabilidad - Apache y MySQLEscalabilidad - Apache y MySQL
Escalabilidad - Apache y MySQLLorena Fernández
 
Evolucion de big data @ mercadolibre.com
Evolucion de big data @ mercadolibre.comEvolucion de big data @ mercadolibre.com
Evolucion de big data @ mercadolibre.comGabriel Eisbruch
 

Similar a Monitorización de logs con ELK (20)

Intro cassandra
Intro cassandraIntro cassandra
Intro cassandra
 
Replicacion con postgresql y slony
Replicacion con  postgresql y slonyReplicacion con  postgresql y slony
Replicacion con postgresql y slony
 
Primeros pasos con Logstash y Beats
Primeros pasos con Logstash y BeatsPrimeros pasos con Logstash y Beats
Primeros pasos con Logstash y Beats
 
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONAPARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
 
58517228 postgre sql-desarrolladoresbasico
58517228 postgre sql-desarrolladoresbasico58517228 postgre sql-desarrolladoresbasico
58517228 postgre sql-desarrolladoresbasico
 
Análisis de datos con Apache Spark
Análisis de datos con Apache SparkAnálisis de datos con Apache Spark
Análisis de datos con Apache Spark
 
Desarrollo web en Nodejs con Pillars por Chelo Quilón
Desarrollo web en Nodejs con Pillars por Chelo QuilónDesarrollo web en Nodejs con Pillars por Chelo Quilón
Desarrollo web en Nodejs con Pillars por Chelo Quilón
 
Rendimiento en magento
Rendimiento en magentoRendimiento en magento
Rendimiento en magento
 
Pg pool cluster postgresql
Pg pool cluster postgresqlPg pool cluster postgresql
Pg pool cluster postgresql
 
trabajo numero 3
trabajo numero 3trabajo numero 3
trabajo numero 3
 
Base De Datos
Base De DatosBase De Datos
Base De Datos
 
Oracle g11 - Administration workshop1 sg1
Oracle g11 - Administration workshop1  sg1 Oracle g11 - Administration workshop1  sg1
Oracle g11 - Administration workshop1 sg1
 
Postgresql expo
Postgresql expoPostgresql expo
Postgresql expo
 
Overview atlas (1)
Overview atlas (1)Overview atlas (1)
Overview atlas (1)
 
Overview atlas (1)
Overview atlas (1)Overview atlas (1)
Overview atlas (1)
 
Anatomía de un ataque a tns listener
Anatomía de un ataque a tns listenerAnatomía de un ataque a tns listener
Anatomía de un ataque a tns listener
 
Instalación y Configuración de Pentaho BI y MySQL
Instalación y Configuración de Pentaho BI y MySQLInstalación y Configuración de Pentaho BI y MySQL
Instalación y Configuración de Pentaho BI y MySQL
 
Creando su primera aplicación de Big Data en AWS
Creando su primera aplicación de Big Data en AWSCreando su primera aplicación de Big Data en AWS
Creando su primera aplicación de Big Data en AWS
 
Escalabilidad - Apache y MySQL
Escalabilidad - Apache y MySQLEscalabilidad - Apache y MySQL
Escalabilidad - Apache y MySQL
 
Evolucion de big data @ mercadolibre.com
Evolucion de big data @ mercadolibre.comEvolucion de big data @ mercadolibre.com
Evolucion de big data @ mercadolibre.com
 

Más de José Ignacio Álvarez Ruiz

Servicios Web con Python + web.py (Homenaje a Aaron Swartz)
Servicios Web con Python + web.py (Homenaje a Aaron Swartz)Servicios Web con Python + web.py (Homenaje a Aaron Swartz)
Servicios Web con Python + web.py (Homenaje a Aaron Swartz)José Ignacio Álvarez Ruiz
 
Sistemas de control de versiones distribuidos: Controla las versiones de tu t...
Sistemas de control de versiones distribuidos: Controla las versiones de tu t...Sistemas de control de versiones distribuidos: Controla las versiones de tu t...
Sistemas de control de versiones distribuidos: Controla las versiones de tu t...José Ignacio Álvarez Ruiz
 
Sysmana 2016 - Desarrollo seguro de aplicaciones C/C++ en Android con NDK
Sysmana 2016 - Desarrollo seguro de aplicaciones C/C++ en Android con NDKSysmana 2016 - Desarrollo seguro de aplicaciones C/C++ en Android con NDK
Sysmana 2016 - Desarrollo seguro de aplicaciones C/C++ en Android con NDKJosé Ignacio Álvarez Ruiz
 
Sysmana 2015 - Comunicación NFC entre Raspberry pi y Android
Sysmana 2015 - Comunicación NFC entre Raspberry pi y AndroidSysmana 2015 - Comunicación NFC entre Raspberry pi y Android
Sysmana 2015 - Comunicación NFC entre Raspberry pi y AndroidJosé Ignacio Álvarez Ruiz
 
Sysmana 2017 metodologías gestión ágil de proyectos
Sysmana 2017   metodologías gestión ágil de proyectosSysmana 2017   metodologías gestión ágil de proyectos
Sysmana 2017 metodologías gestión ágil de proyectosJosé Ignacio Álvarez Ruiz
 
Charla nuevas tecnologías Android: realidad aumentada, geolocalización, NFC
Charla nuevas tecnologías Android: realidad aumentada, geolocalización, NFCCharla nuevas tecnologías Android: realidad aumentada, geolocalización, NFC
Charla nuevas tecnologías Android: realidad aumentada, geolocalización, NFCJosé Ignacio Álvarez Ruiz
 
WUL4 Training Thursday #2 Sistemas de control de versiones distribuidos: GIT
WUL4 Training Thursday #2 Sistemas de control de versiones distribuidos: GITWUL4 Training Thursday #2 Sistemas de control de versiones distribuidos: GIT
WUL4 Training Thursday #2 Sistemas de control de versiones distribuidos: GITJosé Ignacio Álvarez Ruiz
 
Realidad aumentada en Android: reconocimiento de imágenes y geolocalización u...
Realidad aumentada en Android: reconocimiento de imágenes y geolocalización u...Realidad aumentada en Android: reconocimiento de imágenes y geolocalización u...
Realidad aumentada en Android: reconocimiento de imágenes y geolocalización u...José Ignacio Álvarez Ruiz
 
Analisis distribuciones GNU/Linux Mayo 2010 (revisado)
Analisis distribuciones GNU/Linux Mayo 2010 (revisado)Analisis distribuciones GNU/Linux Mayo 2010 (revisado)
Analisis distribuciones GNU/Linux Mayo 2010 (revisado)José Ignacio Álvarez Ruiz
 

Más de José Ignacio Álvarez Ruiz (11)

Servicios Web con Python + web.py (Homenaje a Aaron Swartz)
Servicios Web con Python + web.py (Homenaje a Aaron Swartz)Servicios Web con Python + web.py (Homenaje a Aaron Swartz)
Servicios Web con Python + web.py (Homenaje a Aaron Swartz)
 
Sistemas de control de versiones distribuidos: Controla las versiones de tu t...
Sistemas de control de versiones distribuidos: Controla las versiones de tu t...Sistemas de control de versiones distribuidos: Controla las versiones de tu t...
Sistemas de control de versiones distribuidos: Controla las versiones de tu t...
 
The blockchain disruption
The blockchain disruptionThe blockchain disruption
The blockchain disruption
 
Sysmana 2016 - Desarrollo seguro de aplicaciones C/C++ en Android con NDK
Sysmana 2016 - Desarrollo seguro de aplicaciones C/C++ en Android con NDKSysmana 2016 - Desarrollo seguro de aplicaciones C/C++ en Android con NDK
Sysmana 2016 - Desarrollo seguro de aplicaciones C/C++ en Android con NDK
 
Sysmana 2015 - Comunicación NFC entre Raspberry pi y Android
Sysmana 2015 - Comunicación NFC entre Raspberry pi y AndroidSysmana 2015 - Comunicación NFC entre Raspberry pi y Android
Sysmana 2015 - Comunicación NFC entre Raspberry pi y Android
 
Sysmana 2017 metodologías gestión ágil de proyectos
Sysmana 2017   metodologías gestión ágil de proyectosSysmana 2017   metodologías gestión ágil de proyectos
Sysmana 2017 metodologías gestión ágil de proyectos
 
Comunicación NFC entre Raspberry Pi y Android
Comunicación NFC entre Raspberry Pi y AndroidComunicación NFC entre Raspberry Pi y Android
Comunicación NFC entre Raspberry Pi y Android
 
Charla nuevas tecnologías Android: realidad aumentada, geolocalización, NFC
Charla nuevas tecnologías Android: realidad aumentada, geolocalización, NFCCharla nuevas tecnologías Android: realidad aumentada, geolocalización, NFC
Charla nuevas tecnologías Android: realidad aumentada, geolocalización, NFC
 
WUL4 Training Thursday #2 Sistemas de control de versiones distribuidos: GIT
WUL4 Training Thursday #2 Sistemas de control de versiones distribuidos: GITWUL4 Training Thursday #2 Sistemas de control de versiones distribuidos: GIT
WUL4 Training Thursday #2 Sistemas de control de versiones distribuidos: GIT
 
Realidad aumentada en Android: reconocimiento de imágenes y geolocalización u...
Realidad aumentada en Android: reconocimiento de imágenes y geolocalización u...Realidad aumentada en Android: reconocimiento de imágenes y geolocalización u...
Realidad aumentada en Android: reconocimiento de imágenes y geolocalización u...
 
Analisis distribuciones GNU/Linux Mayo 2010 (revisado)
Analisis distribuciones GNU/Linux Mayo 2010 (revisado)Analisis distribuciones GNU/Linux Mayo 2010 (revisado)
Analisis distribuciones GNU/Linux Mayo 2010 (revisado)
 

Último

Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...JaquelineJuarez15
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofJuancarlosHuertasNio1
 

Último (20)

Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sof
 

Monitorización de logs con ELK

  • 1. Monitorización de logs con el stack ELK IES Gran Capitán - 31 Enero 2017 Nacho Álvarez @neonigmacdb ✉ neonigma@gmail.com http://www.nacho-alvarez.es
  • 2. Índice 1) Preliminares: Vagrant y Ansible 2) Introducción a ELK 3) ElasticSearch 4) Logstash 5) Kibana 6) Arquitectura del sistema de pruebas 7) Demo time! 1/36
  • 3. Vagrant ● Gestor de máquinas virtuales ● Necesita dos elementos: ○ Proveedor (VirtualBox, VMWare, Docker…) ○ Aprovisionador (Ansible, Puppet, Chef…) ● Funciona con boxes predefinidas https://atlas.hashicorp.com/boxes/search ● La definición de la máquina virtual se lee de un fichero de configuración, el Vagrant file 2/36
  • 4. Vagrant # -*- mode: ruby -*- # vi: set ft=ruby : # Vagrantfile API/syntax version. Don't touch unless you know what you're doing! VAGRANTFILE_API_VERSION = "2" Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.box = "ubuntu/trusty64" config.vm.network "forwarded_port", guest: 80, host: 8080 config.vm.network "private_network", ip: "192.168.33.10" config.vm.synced_folder "htdocs", "/var/www/html" config.vm.provision "shell", path: "config.sh" end 3/36
  • 5. Vagrant #!/bin/bash # Update server apt-get update apt-get upgrade -y # Install essentials apt-get -y install build-essential binutils-doc git -y # Install Apache apt-get install apache2 -y #Install PHP apt-get install php5 libapache2-mod-php5 php5-cli php5-mysql -y # Install MySQL echo "mysql-server mysql-server/root_password password root" | sudo debconf-set-selections echo "mysql-server mysql-server/root_password_again password root" | sudo debconf-set-selections apt-get install mysql-client mysql-server -y # Restart Apache service service apache2 restart 4/36
  • 6. Vagrant $ vagrant up # Ejecutar la máquina virtual $ vagrant ssh # Entrar por ssh a la máquina $ vagrant suspend # Suspender la máquina $ vagrant resume # Despertar la máquina $ vagrant halt # Apagar la máquina $ vagrant status # Saber el estado de la máquina (apagada, ejecutándose o en modo suspensión): $ vagrant destroy # Destruir la máquina A todos los comandos se les puede añadir como argumento el nombre de la máquina, si tenemos varias 5/36
  • 7. Ansible ● Herramienta de gestión de configuración y aprovisionamiento ● Se conecta a los equipos a configurar usando SSH ● Trabaja con un inventario de máquinas a configurar ● Existen playbooks o recetas ya configuradas por terceros https://galaxy.ansible.com/ 6/36
  • 8. Ansible ● Máquina de Administración: donde tenemos instalado Ansible y desde donde se ejecutarán las tareas ● Inventory: archivo donde registramos los servidores sobre los cuales ejecutaremos las tareas ● Playbook: archivo donde listamos las tareas a ejecutar, es como una receta de cocina. En formato YAML ● Grupo de hosts: si se usa el mismo Playbook para varias máquinas, diferencia entre servidores ● Task: bloque dentro del Playbook que define una acción específica a realizar, pj: instalar un paquete. ● Module: Plugins que permiten realizar tareas de forma más fácil, como yum para instalar software, y también nosotros podemos crear los nuestros. ● Role: una forma de ordenar los diferentes Playbooks. ● Play: se refiere a la ejecución de un Playbook. ● Facts: variables dentro de Ansible que contienen información sobre los servidores. Ej: SO, RAM, Dirs IP, etc. ● Handlers: pequeño código que se usa cuando algo cambia. Por ej: si actualizas el archivo de configuración de Apache, un Handler reiniciará el servicio httpd. 7/36
  • 9. Ansible --- - hosts: stats sudo: yes gather_facts: yes roles: - java8 - elasticsearch - kibana - hosts: apps sudo: yes gather_facts: yes roles: - java8 - logstash - appdeploy 8/36 --- # file: /roles/java8/tasks/main.yml - name: add Java repository to sources apt_repository: repo='ppa:webupd8team/java' tags: java - name: autoaccept license for Java debconf: name='oracle-java8-installer' question='shared/accepted-oracle-license-v1-1' value='true' vtype='select' tags: java - name: update APT package cache apt: update_cache=yes tags: java - name: install Java 8 apt: name=oracle-java8-installer state=latest install_recommends=yes tags: java
  • 10. Introducción a ELK ● ELK viene de ElasticSearch, Logstash y Kibana ● Surge como respuesta a la necesidad de analítica ● Problema de búsquedas con buenas visualizaciones ● Lucene + sist. distribuido ElasticSearch para búsquedas ● Normalización de datos con Logstash ● Herramienta de visualización de datos Kibana ● Tenemos un rival muy duro para soluciones de pago 9/36
  • 11. ElasticSearch 10/36 ● Servidor de búsqueda basado en Apache Lucene ● Proporciona un motor de búsqueda de texto completo, distribuido y con capacidad de multi-tenencia con API REST + JSON ● En nuestro ejemplo la usaremos como BBDD donde almacenar, indexar y buscar los eventos de log de las apps ● Usuarios ilustres: Wikimedia, Mozilla, Quora, Foursquare, SoundCloud, GitHub, CERN y Stack Exchange
  • 12. ElasticSearch - Nodos 11/36 ● Cada nodo es una VM Java ejecutando una instancia del servicio ● Límite 40% heap de la RAM ● Tipos de nodos ○ master => responsable de gestión del cluster y asegurar su integridad ○ master-eligible => nodos candidatos a maestro según se necesite ○ data => nodos normales conteniendo los datos y haciendo búsquedas ○ client => enrutan peticiones dentro del clúster ○ tribe => permiten agregar clústeres de forma transparente
  • 13. ElasticSearch - Shards 12/36 ● Unidad de distribución de trabajo en cluster donde se hacen las búsquedas ● Internamente es una instancia de Lucene con sus datos, metadatos e índices ● Cada índice tiene un número fijo y predeterminado de shards primarias, que son las fuentes que tienen la info almacenada e indexada en Elasticsearch ● Para añadir o quitar shards primarias hay que recrear el índice (reindexar) ● Shards de respaldo: copias que se distribuyen por los nodos del cluster para conseguir mayor rendimiento, alta disponibilidad y backup
  • 14. ElasticSearch - Mapping 13/36 ● La configuración por defecto consiste en tokenizar los textos e intentar detectar otros valores primitivos ● Mapping consiste en definir cómo un documento y los campos que contiene son almacenados e indexados. Por ejemplo, usamos mappings para definir: ○ Qué campos string deberían tratarse como campos de texto ○ Qué campos contienen números, fechas, localizaciones... ○ Formato de los campos de fecha ○ Reglas personalizadas para controlar el mapeado para campos añadidos dinámicamente
  • 15. ElasticSearch - Mapping 14/36 PUT my_index { "mappings": { "user": { "_all": { "enabled": false }, "properties": { "title": { "type": "text" }, "name": { "type": "text" }, "age": { "type": "integer" } } }, "blogpost": { "_all": { "enabled": false }, "properties": { "title": { "type": "text" }, "body": { "type": "text" }, "user_id": { "type": "keyword" }, "created": { "type": "date", "format": "strict_date_optional_time||epoch_millis" } } } } }
  • 17. LogStash 16/36 ● Herramienta para recolectar, parsear y guardar los logs ● En el caso que nos ocupa los guardaremos en ElasticSearch ● La configuración consta de una sección input, una filter y otra output ● Todo funciona en base a plugins, las estrellas de esta herramienta
  • 19. LogStash - Ejemplo 18/36 input { stdin {} } filter { grok { match => {"message" => "%{IP:ip}"} } geoip { source => "ip" } } output { stdout { codec => rubydebug } }
  • 21. LogStash - Syslog 20/36 input { tcp { port => 5000 type => syslog } udp { port => 5000 type => syslog } } filter { if [type] == "syslog" { grok { match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:[%{POSINT:syslog_pid}])?: %{GREEDYDATA:syslog_message}" } add_field => [ "received_at", "%{@timestamp}" ] add_field => [ "received_from", "%{host}" ] } date { match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ] } } } output { elasticsearch { hosts => ["localhost:9200"] } stdout { codec => rubydebug } }
  • 22. LogStash - Syslog 21/36 { "message" => "Dec 23 14:30:01 louis CRON[619]: (www-data) CMD (php /usr/share/cacti/site/poller.php >/dev/null 2>/var/log/cacti/poller-error.log)", "@timestamp" => "2013-12-23T22:30:01.000Z", "@version" => "1", "type" => "syslog", "host" => "0:0:0:0:0:0:0:1:52617", "syslog_timestamp" => "Dec 23 14:30:01", "syslog_hostname" => "louis", "syslog_program" => "CRON", "syslog_pid" => "619", "syslog_message" => "(www-data) CMD (php /usr/share/cacti/site/poller.php >/dev/null 2>/var/log/cacti/poller-error.log)", "received_at" => "2013-12-23 22:49:22 UTC", "received_from" => "0:0:0:0:0:0:0:1:52617", "syslog_severity_code" => 5, "syslog_facility_code" => 1, "syslog_facility" => "user-level", "syslog_severity" => "notice" }
  • 23. LogStash - IBM Websphere 22/36 grok { # was_shortname need to be regex, because numbers and $ can be in the word match => ["message", "[%{DATA:wastimestamp} %{WORD:tz}] %{BASE16NUM:was_threadID} (?<was_shortname>b[A-Za-z0-9$]{2,}b) %{SPACE}%{WORD:was_loglevel}%{SPACE} %{GREEDYDATA:message}"] overwrite => [ "message" ] #tag_on_failure => [ ] } grok { # Extract the WebSphere Response Code match => ["message", "(?<was_responsecode>[A-Z0-9]{9,10})[:,ss]"] tag_on_failure => [ ] }
  • 24. LogStash - IBM Websphere 23/36
  • 25. LogStash - IBM Websphere 24/36
  • 26. LogStash - Plugins 25/36 ● Existen decenas de plugins para las tres etapas ● INPUT ○ https://www.elastic.co/guide/en/logstash/current/input-plugins.html ● FILTER ○ https://www.elastic.co/guide/en/logstash/current/filter-plugins.html ● OUTPUT ○ https://www.elastic.co/guide/en/logstash/current/output-plugins.html
  • 27. Kibana ● Aplicación web que facilita la explotación visual de información almacenada en una base de datos ● Los usuarios pueden crear gráficos de barras, líneas, tartas, mapas, etc., sobre grandes cantidades de datos ● Permite montar tableros de mandos o dashboards a medida según las necesidades 26/36
  • 35. Referencias ● Tutorial Vagrant https://geekytheory.com/tutorial-vagrant-1-que-es-y-como-usarlo/ ● Tutorial Ansible http://blog.itlinux.cl/blog/2016/04/09/automatizacion-y-el-desafio-de-la-nube/ ● ElasticSearch https://www.adictosaltrabajo.com/tutoriales/administracion-de-elasticsearch/ ● Mappings con ElasticSearch https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping.html ● Introducción a ELK http://elmanytas.es/?q=node/318 34/36
  • 36. Referencias ● Better logstash filter to analyze SystemOut.log and some more https://www.stoeps.de/better-logstash-filter-to-analyze-systemout-log-and-some-more/ ● Análisis de logs con Kibana https://www.adictosaltrabajo.com/tutoriales/analisis-de-logs-con-kibana/ ● Twitter Elasticsearch example https://github.com/elastic/examples/tree/master/ElasticStack_twitter 35/36