SlideShare una empresa de Scribd logo
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 logs
Marvin Xuya
 
Postgre sql y_replicacion_slony_p
Postgre sql y_replicacion_slony_pPostgre sql y_replicacion_slony_p
Postgre sql y_replicacion_slony_p
edvin_marcelo
 
Mongodb administración
Mongodb administraciónMongodb administración
Mongodb administración
Juan Ladetto
 
S6-POO-3.2 Contenedores Especiales
S6-POO-3.2 Contenedores EspecialesS6-POO-3.2 Contenedores Especiales
S6-POO-3.2 Contenedores Especiales
Luis Fernando Aguas Bucheli
 
Hydra
HydraHydra
Hydra
Tensor
 
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
 
Objeto SqlDataReader
Objeto SqlDataReaderObjeto SqlDataReader
Objeto SqlDataReader
Thalia Regalado Juape
 
(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 kafka
Arlin11
 
Meetup Spark 2.0
Meetup Spark 2.0Meetup 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
Erick Vidbaz
 
Exposicion apache
Exposicion apacheExposicion apache
Exposicion apache
Arlin11
 
Admon PG 1
Admon PG 1Admon PG 1
Admon PG 1
Emanuel Calvo
 
Migrando de MSSQL a PostgreSQL
Migrando de MSSQL a PostgreSQLMigrando de MSSQL a PostgreSQL
Migrando de MSSQL a PostgreSQL
scastell77
 
Replicacion con postgresql y slony
Replicacion con  postgresql y slonyReplicacion con  postgresql y slony
Replicacion con postgresql y slony
Johanna Mendez
 
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
Magda Mayery Baquero Cardona
 
Introducción a PostgreSql
Introducción a PostgreSqlIntroducción a PostgreSql
Introducción a PostgreSql
RicardoMartinGomez
 
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
Jechu2013
 
Aprendiendo REDIS en 20 minutos
Aprendiendo REDIS en 20 minutosAprendiendo REDIS en 20 minutos
Aprendiendo REDIS en 20 minutos
Gonzalo 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 beginners
Neil Baker
 
Syed Wajahat Ali
Syed Wajahat AliSyed Wajahat Ali
Syed 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ònwilburn366
 
Визуальное мышление - Слайды занятий 3 и 4
Визуальное мышление - Слайды занятий 3 и 4Визуальное мышление - Слайды занятий 3 и 4
Визуальное мышление - Слайды занятий 3 и 4
Intellectics
 
Classless classful
Classless classfulClassless classful
Classless classful
Chandru Chandru
 
Gns3
Gns3Gns3
Product Knowledge Akhyana Village
Product Knowledge Akhyana VillageProduct Knowledge Akhyana Village
Product Knowledge Akhyana Village
Mario Lubis
 
Middleeast MobileERP Profile
Middleeast MobileERP ProfileMiddleeast MobileERP Profile
Middleeast MobileERP Profile
Ashish Shah
 
Actualizando herramientas
Actualizando herramientasActualizando herramientas
Actualizando herramientas
Edwin R. Reyes
 
Open data beni comuni digitali
Open data beni comuni digitaliOpen data beni comuni digitali
Open data beni comuni digitali
Franco Morelli
 
The Laughing Buddha brand presentation
The Laughing Buddha brand presentationThe Laughing Buddha brand presentation
The Laughing Buddha brand presentation
cheritter
 
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 Partnership
World Resources Institute (WRI)
 
Gns3 paso a paso
Gns3 paso a pasoGns3 paso a paso
Gns3 paso a paso
barbarasud
 

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 Sysmana 2017 monitorización de logs con el stack elk

Intro cassandra
Intro cassandraIntro cassandra
Intro cassandra
William Yánez
 
Replicacion con postgresql y slony
Replicacion con  postgresql y slonyReplicacion con  postgresql y slony
Replicacion con postgresql y slony
Johanna Mendez
 
Primeros pasos con Logstash y Beats
Primeros pasos con Logstash y BeatsPrimeros pasos con Logstash y Beats
Primeros pasos con Logstash y Beats
UllyCarolinneSampaio
 
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
Víctor Bolinches
 
58517228 postgre sql-desarrolladoresbasico
58517228 postgre sql-desarrolladoresbasico58517228 postgre sql-desarrolladoresbasico
58517228 postgre sql-desarrolladoresbasico
Lucia 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 Spark
Eduardo 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ón
betabeers
 
Rendimiento en magento
Rendimiento en magentoRendimiento en magento
Rendimiento en magento
Onestic
 
Pg pool cluster postgresql
Pg pool cluster postgresqlPg pool cluster postgresql
Pg pool cluster postgresql
Hermione Sanz Angel
 
trabajo numero 3
trabajo numero 3trabajo numero 3
trabajo numero 3
Jorge Mengelle
 
Base De Datos
Base De DatosBase De Datos
Base De Datos
tonynetword
 
Oracle g11 - Administration workshop1 sg1
Oracle g11 - Administration workshop1  sg1 Oracle g11 - Administration workshop1  sg1
Oracle g11 - Administration workshop1 sg1
Rodolfo Zoilo
 
Postgresql expo
Postgresql expoPostgresql expo
Postgresql expo
Andrés Hevia
 
Overview atlas (1)
Overview atlas (1)Overview atlas (1)
Overview atlas (1)
Paradigma Digital
 
Overview atlas (1)
Overview atlas (1)Overview atlas (1)
Overview atlas (1)
Marta Alfonso Aller
 
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
yt 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 MySQL
T.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 AWS
Amazon Web Services LATAM
 
Escalabilidad - Apache y MySQL
Escalabilidad - Apache y MySQLEscalabilidad - Apache y MySQL
Escalabilidad - Apache y MySQL
Lorena Fernández
 
Evolucion de big data @ mercadolibre.com
Evolucion de big data @ mercadolibre.comEvolucion de big data @ mercadolibre.com
Evolucion de big data @ mercadolibre.com
Gabriel Eisbruch
 

Similar a Sysmana 2017 monitorización de logs con el stack 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
 
The blockchain disruption
The blockchain disruptionThe blockchain disruption
The blockchain disruption
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 NDK
José 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 Android
José 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 proyectos
José Ignacio Álvarez Ruiz
 
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
José 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, NFC
José 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: GIT
José 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

Manual Web soporte y mantenimiento de equipo de computo
Manual Web soporte y mantenimiento de equipo de computoManual Web soporte y mantenimiento de equipo de computo
Manual Web soporte y mantenimiento de equipo de computo
mantenimientocarbra6
 
Inteligencia Artificial
Inteligencia ArtificialInteligencia Artificial
Inteligencia Artificial
YashiraPaye
 
Projecte Iniciativa TIC 2024 SOPRA STERIA. inCV.pdf
Projecte Iniciativa TIC 2024 SOPRA STERIA. inCV.pdfProjecte Iniciativa TIC 2024 SOPRA STERIA. inCV.pdf
Projecte Iniciativa TIC 2024 SOPRA STERIA. inCV.pdf
Festibity
 
Presentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre bloggerPresentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre blogger
larapalaciosmonzon28
 
Manual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputoManual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputo
doctorsoluciones34
 
computacion global 3.pdf pARA TERCER GRADO
computacion global 3.pdf pARA TERCER GRADOcomputacion global 3.pdf pARA TERCER GRADO
computacion global 3.pdf pARA TERCER GRADO
YaniEscobar2
 
Computacion cuántica y sus ventajas y desventajas
Computacion cuántica y sus ventajas y desventajasComputacion cuántica y sus ventajas y desventajas
Computacion cuántica y sus ventajas y desventajas
sofiahuarancabellido
 
Programming & Artificial Intelligence ebook.pdf
Programming & Artificial Intelligence ebook.pdfProgramming & Artificial Intelligence ebook.pdf
Programming & Artificial Intelligence ebook.pdf
Manuel Diaz
 
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdfPLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
70244530
 
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdf
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdfPresentación Seguridad Digital Profesional Azul Oscuro (1).pdf
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdf
giampierdiaz5
 
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador Valencia
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador ValenciaCatalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador Valencia
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador Valencia
AMADO SALVADOR
 
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)
codesiret
 
Sitios web 3.0 funciones ventajas y desventajas
Sitios web 3.0 funciones ventajas y desventajasSitios web 3.0 funciones ventajas y desventajas
Sitios web 3.0 funciones ventajas y desventajas
paulroyal74
 
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANOREVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
gisellearanguren1
 
TIC en educacion.rtf.docxlolololololololo
TIC en educacion.rtf.docxlolololololololoTIC en educacion.rtf.docxlolololololololo
TIC en educacion.rtf.docxlolololololololo
KukiiSanchez
 
mantenimiento de chasis y carroceria1.pptx
mantenimiento de chasis y carroceria1.pptxmantenimiento de chasis y carroceria1.pptx
mantenimiento de chasis y carroceria1.pptx
MiguelAtencio10
 
Refrigeradores Samsung Modo Test y Forzado
Refrigeradores Samsung Modo Test y ForzadoRefrigeradores Samsung Modo Test y Forzado
Refrigeradores Samsung Modo Test y Forzado
NicandroMartinez2
 
Gabinete, puertos y dispositivos que se conectan al case
Gabinete,  puertos y  dispositivos que se conectan al caseGabinete,  puertos y  dispositivos que se conectan al case
Gabinete, puertos y dispositivos que se conectan al case
JuanaNT7
 
Nuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsadNuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsad
larapalaciosmonzon28
 
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIAMONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
leia ereni
 

Último (20)

Manual Web soporte y mantenimiento de equipo de computo
Manual Web soporte y mantenimiento de equipo de computoManual Web soporte y mantenimiento de equipo de computo
Manual Web soporte y mantenimiento de equipo de computo
 
Inteligencia Artificial
Inteligencia ArtificialInteligencia Artificial
Inteligencia Artificial
 
Projecte Iniciativa TIC 2024 SOPRA STERIA. inCV.pdf
Projecte Iniciativa TIC 2024 SOPRA STERIA. inCV.pdfProjecte Iniciativa TIC 2024 SOPRA STERIA. inCV.pdf
Projecte Iniciativa TIC 2024 SOPRA STERIA. inCV.pdf
 
Presentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre bloggerPresentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre blogger
 
Manual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputoManual de soporte y mantenimiento de equipo de cómputo
Manual de soporte y mantenimiento de equipo de cómputo
 
computacion global 3.pdf pARA TERCER GRADO
computacion global 3.pdf pARA TERCER GRADOcomputacion global 3.pdf pARA TERCER GRADO
computacion global 3.pdf pARA TERCER GRADO
 
Computacion cuántica y sus ventajas y desventajas
Computacion cuántica y sus ventajas y desventajasComputacion cuántica y sus ventajas y desventajas
Computacion cuántica y sus ventajas y desventajas
 
Programming & Artificial Intelligence ebook.pdf
Programming & Artificial Intelligence ebook.pdfProgramming & Artificial Intelligence ebook.pdf
Programming & Artificial Intelligence ebook.pdf
 
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdfPLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
 
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdf
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdfPresentación Seguridad Digital Profesional Azul Oscuro (1).pdf
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdf
 
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador Valencia
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador ValenciaCatalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador Valencia
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador Valencia
 
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)
 
Sitios web 3.0 funciones ventajas y desventajas
Sitios web 3.0 funciones ventajas y desventajasSitios web 3.0 funciones ventajas y desventajas
Sitios web 3.0 funciones ventajas y desventajas
 
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANOREVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
 
TIC en educacion.rtf.docxlolololololololo
TIC en educacion.rtf.docxlolololololololoTIC en educacion.rtf.docxlolololololololo
TIC en educacion.rtf.docxlolololololololo
 
mantenimiento de chasis y carroceria1.pptx
mantenimiento de chasis y carroceria1.pptxmantenimiento de chasis y carroceria1.pptx
mantenimiento de chasis y carroceria1.pptx
 
Refrigeradores Samsung Modo Test y Forzado
Refrigeradores Samsung Modo Test y ForzadoRefrigeradores Samsung Modo Test y Forzado
Refrigeradores Samsung Modo Test y Forzado
 
Gabinete, puertos y dispositivos que se conectan al case
Gabinete,  puertos y  dispositivos que se conectan al caseGabinete,  puertos y  dispositivos que se conectan al case
Gabinete, puertos y dispositivos que se conectan al case
 
Nuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsadNuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsad
 
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIAMONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
 

Sysmana 2017 monitorización de logs con el stack 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