SlideShare una empresa de Scribd logo
1 de 73
Descargar para leer sin conexión
Des dashboards pour tous avec ELK
10 Juin 2014
Vincent Spiewak - @vspiewak
Introduction
Speaker
3
Vincent Spiewak
@vspiewak
•5 ans XP
•Master TA (UPMC)
•http://blog.xebia.fr
•@vspiewak
Agenda
4
•Introduction
•Logstash
•Monitoring Système
•Monitoring JMX
•Log As A Service
•Monitoring Métier / BI
•Cluster ELK
•Vagrant (démos)
Stack
5
1 2 3
Elasticsearch
Stockage
!
Kibana
Visualisation
!
Logstash
ETL
!
Logstash
6
41
» stdin
» file
» udp
» tcp
» rabbitmq
» s3
» …
20
» plain
» json
» line
» multiline
» dots
» msgpack
» …
50
» grok
» date
» drop
» mutate
» geoip
» anonymize
» …
55
» stdout
» file
» udp
» tcp
» rabbitmq
» elasticsearch
» …
OutputsInputs Codecs Filters
Elasticsearch
7
Schema Free
 Full Text REST
Document
Real Time
 Distributed
 HA
 Multi-tenancy
Kibana
8
Dashboards Adaptés
9
Infrastructure
» serveur 
» charge
Application
» stacktrace
» warn, error
Business
» client
» produit
Objectifs
» résultat 
» progression
DirectionOps Dev Métier
Architecture
10
Logstash
Logstash - Entrée/Sortie
12
input {!
stdin {}!
}!
!
# filters!
!
output {!
stdout { codec => json }!
}!
Logstash - Run
13
$ java -jar logstash.jar agent —f app.conf!
2011-04-19T03:44:01.103Z 55.3.244.1 GET /index.html 15824 0.043!
{!
"message" => "2011-04-19T03:44:01.103Z GET /index.html 15824 0.043",!
"@timestamp" => "2013-11-03T19:48:53.175Z",!
"@version" => "1",!
"host" => "macbook"!
}!
Logstash - Patterns
14
USERNAME [a-zA-Z0-9._-]+!
USER %{USERNAME}!
INT (?:[+-]?(?:[0-9]+))!
WORD bw+b!
NOTSPACE S+!
DATA .*?!
GREEDYDATA .*!
HTTPDATE %{MONTHDAY}/%{MONTH}/%{YEAR}:%{TIME} %{INT}!
COMBINEDAPACHELOG %{IPORHOST:clientip} …
https://github.com/logstash/logstash/blob/master/patterns
Logstash - Filtre Grok
15
2011-04-19T03:44:01.103Z 55.3.244.1 GET /index.html 15824 0.043!


filter {
grok {
match => 

[ "message",
"%{TIMESTAMP_ISO8601:date} %{IP:client} %{WORD:method}
%{URIPATHPARAM:uri} %{NUMBER:bytes} %{NUMBER:duration}"
]
}
}
Filtre Grok - Sortie
16
2011-04-19T03:44:01.103Z 55.3.244.1 GET /index.html 15824 0.043!
!
{!
"@timestamp" => "2013-12-01T21:19:11.303Z",!
"@version" => "1",!
"@bytes" => "15824",!
"@client" => "55.3.244.1",!
"date" => "2011-04-19T03:44:01.103Z",!
"@duration" => "0.043",!
"host" => "macbookpro",!
"message" => "2011-04-19T03:44:01.103Z 55.3.244.1 GET /index.html 15824 0.043",!
"method" => "GET",!
"uri" => "/index.html",!
}!
Filtre Date - @Timestamp
17
filter {!
date {!
match => [ "date", "ISO8601" ],!
}!
}!
Filtre Date - @Timestamp
18
{!
"@timestamp" => "2011-04-19T03:44:01.103Z",!
"@version" => "1",!
"@bytes" => "15824",!
"@client" => "55.3.244.1",!
"date" => "2011-04-19T03:44:01.103Z",!
"@duration" => "0.043",!
"host" => "macbookpro",!
"message" => "2011-04-19T03:44:01.103Z 55.3.244.1 GET /index.html 15824 0.043",!
"method" => "GET",!
"uri" => "/index.html",!
}
Sortie Elasticsearch
19
Filtres
20
•ajout d’un champ / type / tag
•suppression d’un champ
•split d’un champ
•conversion de type (string, int, float)
•IP => géolocation
•UA => device, browser, os, versions
•conditions
•etc…
Logstash - Sortie Elasticsearch
21
•host
•port
•cluster
•index => "logstash-%{+YYYY.MM.dd}"
•protocol
•…
Monitoring Système
Monitoring Système: Collectd
23
UDP 25826
Collectd - Plugins
24
•cpu (jiffies)
•process
•users
•disk
•memory
•swap
•network
•Java / JMX
•MySQL
•…
Collectd - Configuration
25
FQDNLookup true
LoadPlugin syslog
<Plugin syslog>
LogLevel info
</Plugin>
LoadPlugin cpu
LoadPlugin df
LoadPlugin disk
LoadPlugin entropy
LoadPlugin interface
LoadPlugin irq
LoadPlugin load
LoadPlugin memory
LoadPlugin network
LoadPlugin processes
LoadPlugin rrdtool
LoadPlugin swap
LoadPlugin users
<Plugin interface>
Interface "eth0"
IgnoreSelected false
</Plugin>
<Plugin network>
<Server "127.0.0.1" "25826">
</Server>
</Plugin>
<Plugin rrdtool>
DataDir "/var/lib/collectd/rrd"
</Plugin>
Include "/etc/collectd/filters.conf"
Include "/etc/collectd/thresholds.conf"
Collectd - Logstash Conf
26
input {
collectd {
host => "127.0.0.1"
}
}
!
output {
elasticsearch {}
}
Elasticsearch - Samples
27
{
"@version": "1",
"@timestamp": "2014-06-09T23:01:11.000Z",
"host": "precise64",
"plugin": "memory",
"collectd_type": "memory",
"type_instance": "cached",
"value": 267845632
}
!
{
"@version": "1",
"@timestamp": "2014-06-09T23:01:11.000Z",
"host": "precise64",
"plugin": "memory",
"collectd_type": "memory",
"type_instance": "used",
"value": 703348736
}
system-survey
Monitoring Système
28
Démo
system-survey
Monitoring Système
29
Monitoring JMX
Monitoring JMX: Collectd JMX
31
PORT
25826
Collectd - Setup Java & JMX
32
!
!
!
!
# check dynamic libraries
!
ldd /usr/lib/collectd/java.so
!
!
!
!
!
# fix libjvm.so not found error
!
ln -s /usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/server/libjvm.so /usr/lib/libjvm.so
JConsole - SystemCpuLoad
33
Collectd - Plugin Java & JMX
34
<Plugin "java">
JVMARG "-Djava.class.path=/usr/share/collectd/java/collectd-api.jar:/usr/share/collectd/java/generic-jmx.jar"
LoadPlugin "org.collectd.java.GenericJMX"
<Plugin "GenericJMX">
<MBean "os">
ObjectName "java.lang:type=OperatingSystem"
!
<Value>
Type "gauge"
InstancePrefix "system_cpu_load"
Attribute "SystemCpuLoad"
</Value>
!
</MBean>
!
<Connection>
ServiceURL "service:jmx:rmi:///jndi/rmi://localhost:9010/jmxrmi"
Collect "os"
</Connection>
!
</Plugin>
</Plugin>
Elasticsearch - Samples
35
{
"@version": "1",
"@timestamp": "2014-06-09T23:01:11.000Z",
"host": "localhost",
"plugin": "GenericJMX",
"collectd_type": "gauge",
"type_instance": "system_cpu_load",
"value": 0.5587837837837838
}
JConsole - HeapMemoryUsage
36
Collectd - JMX - Type Table
37
# Heap memory usage
<MBean "memory-heap">
ObjectName "java.lang:type=Memory"
#InstanceFrom ""
InstancePrefix "memory-heap"
# Creates four values: committed, init, max, used
<Value>
Type "jmx_memory"
Table true
Attribute "HeapMemoryUsage"
</Value>
</MBean>
!
Collectd - Types
38
!
/usr/share/collectd/types.db
!
!
gauge value:GAUGE:U:U
!
load shortterm:GAUGE:0:100, midterm:GAUGE:0:100, longterm:GAUGE:0:100
!
percent percent:GAUGE:0:100.1
!
jmx_memory value:GAUGE:0:U
Elasticsearch - Samples
39
{
"@version": "1",
"@timestamp": "2014-06-09T23:01:11.000Z",
"host": "localhost",
"plugin": "GenericJMX",
"plugin_instance": "memory-heap",
"collectd_type": "jmx_memory",
"type_instance": "used",
"value": 62282808
}
!
{
"@version": "1",
"@timestamp": "2014-06-09T23:01:11.000Z",
"host": "localhost",
"plugin": "GenericJMX",
"plugin_instance": "memory-heap",
"collectd_type": "jmx_memory",
"type_instance": "init",
"value": 104857600
}
Collectd - Custom MBean
40
<MBean "flume-source">
ObjectName "org.apache.flume.source:type=source-1"
InstancePrefix "flume-source-1"
<Value>
Type "gauge"
InstancePrefix "event_received_count"
Attribute "EventReceivedCount"
</Value>
<Value>
Type "gauge"
InstancePrefix "event_accepted_count"
Table false
Attribute "EventAcceptedCount"
</Value>
</MBean>
Elasticsearch - Samples
41
{
"@version": "1",
"@timestamp": "2014-06-09T23:09:41.000Z",
"host": "localhost",
"plugin": "GenericJMX",
"plugin_instance": "flume-source-1",
"collectd_type": "gauge",
"type_instance": "event_accepted_count",
"value": 1246501
}
Flume JMX
Monitoring JVM / JMX
42
Démo
Flume JMX
Monitoring JVM / JMX
43
Log As Service
Log As A Service: SyslogAppender
45
PORT 5514
SyslogAppender
Log As A Service - Logback
46
Logstash - Syslog configuration
47
input {
udp {
port => "5514"
}
}
!
filter {
grok {
patterns_dir => "./patterns"
match => ["message","%{LOGBACK_SYSLOG}"]
}
}
!
filter {
date {
match => ["log_date","dd-MM-YYYY HH:mm:ss.SSS"]
}
}
!
output {
elasticsearch {}
}
Logstash - Pattern
48
!
!
!
!
LOG_DATE %{MONTHDAY}-%{MONTHNUM}-%{YEAR} %{HOUR}:%{MINUTE}:%{SECOND}.[0-9]{3}
!
SYSLOG_BASE %{SYSLOG5424PRI}%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_host}
SYSLOG %{SYSLOG_BASE} %{GREEDYDATA:syslog_message}
!
LOGBACK_SYSLOG_BASE %{SYSLOG_BASE} %{LOG_DATE:log_date} [%{NOTSPACE:thread}] %{LOGLEVEL:log_level} %{NOTSPACE:classname}
LOGBACK_SYSLOG %{LOGBACK_SYSLOG_BASE} %{GREEDYDATA:log_msg}
Syslog
Monitoring Log
49
Démo
Syslog
Monitoring Log
50
Monitoring Métier- BI
Problème
GeekShop
52
•Quels sont les produits les plus achetés ?
•Quelle est la répartition H/F de mes clients ?
•Quels sont mes clients les plus fidèles ?
•Combien de femmes à Paris ont acheté un iPod Touch Bleu 32 Go
entre le 12 octobre 2012 à 14h30 et le 4 novembre 2013 à 19h ?
GeekShop - Format Logs
53
09-06-2014 21:27:42.228 [pool-32-thread-1] INFO
com.github.vspiewak.loggenerator.SearchRequest -
id=317&ua=Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.24
(KHTML, like Gecko) Chrome/11.0.696.65 Safari/
534.24&ip=94.228.34.210&category=Mobile!
!
09-06-2014 21:27:42.227 [pool-32-thread-1] INFO
com.github.vspiewak.loggenerator.SellRequest - id=313&ua=Mozilla/
5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.17) Gecko/
20110420 Firefox/
3.6.17&ip=202.46.52.35&email=client314@gmail.com&sex=M&brand=Appl
e&name=iPod Touch&model=iPod Touch - Jaune - Disque
32Go&category=Baladeur&color=Jaune&options=Disque
32Go&price=329.0
GeekShop - Après Logstash
54
{!
"_index": "logstash-2014.06.09",!
"_type": "app-log",!
"_id": "gaQXRn9mROiAGjhBZ2h2Og",!
"_version": 1,!
"found": true,!
"_source": {!
"message": "09-06-2014 21:27:42.228 [pool-32-thread-1] INFO com.github.vspiewak.loggenerator.SearchRequest - id=317&ua=Mozilla/5.0 (X11;
Linux x86_64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.65 Safari/534.24&ip=94.228.34.210&category=Mobile",!
"@version": "1",!
"@timestamp": "2014-06-09T19:27:42.228Z",!
"type": "app-log",!
"host": "precise64",!
"path": "/home/vagrant/app.log",!
"log_date": "09-06-2014 21:27:42.228",!
"thread": "pool-32-thread-1",!
"log_level": "INFO",!
"classname": "com.github.vspiewak.loggenerator.SearchRequest",!
"log_msg": "- id=317&ua=Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.65 Safari/
534.24&ip=94.228.34.210&category=Mobile",!
"id": 317,!
"ua": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.65 Safari/534.24",!
"ip": "94.228.34.210",!
"category": "Mobile",!
"tags": [!
"search"!
],!
"geoip": {!
"ip": "94.228.34.210",!
"country_code2": "GB",!
"country_code3": "GBR",!
"country_name": "United Kingdom",!
"continent_code": "EU",!
"latitude": 51.5,!
"longitude": -0.12999999999999545,!
"timezone": "Europe/London",!
"location": [!
-0.12999999999999545,!
51.5!
]!
},!
"useragent": {!
"name": "Chrome",!
"os": "Linux",!
"os_name": "Linux",!
"device": "Other",!
"major": "11",!
"minor": "0",!
"patch": "696"!
}!
}!
}
Kibana: Terms & Analysers
55
Change analyser on specific indexes & fields
Elasticsearch Template Mapping
56
curl -XPUT http://localhost:9200/_template/logstash_per_index -d '{
"template" : "logstash*",!
"mappings" : { !
"_default_" : {!
"properties" : {!
"@timestamp": { "type": "date", "index": "not_analyzed" },!
"ip": { "type" : "ip", "index": "not_analyzed" },!
"name": { "type" : "string", "index": "not_analyzed" },!
"options": { "type" : "string", "index": "not_analyzed" },!
"email": { "type" : "string", "index": "not_analyzed" }!
} !
}!
}!
}'
eshop-survey
Monitoring Métier / Business
57
Démo
eshop-survey
Monitoring Métier / Business
58
eshop-survey
Monitoring Métier / Business
59
Cluster ELK
Elasticsearch - Feedbacks
61
!
•The Guardian: social network - real time feedback
!
•StackOverflow: full-text search with geolocation and « more like »
!
•Goldman Sacks: 5TB logs/day + analysis stock market
!
•…
Elasticsearch - NoSQL
62
SQL Partitions DB Table Ligne Colonne
ES Cluster Indices Type Document Champ
Elasticsearch - Types de noeuds
63
!
•master
•data
•search
Elasticsearch - Shard & Replica
64
!
•shards → +indexing, +distribution (one-time setting)
!
•replicas → +search, +availability
Elasticsearch - Health
65
!
•GREEN → all primaries/replicas shards active
•YELLOW → all primaries shards active
•RED → not all primaries shards
Cluster Elasticsearch
66
http://www.cubrid.org/blog/dev-platform/our-experience-creating-large-scale-log-search-system-using-elasticsearch/
es-cluster
Cluster Elasticsearch
67
Démo
Vagrant (Démos)
Pré-requis
Démo
69
!
Virtual Box
!
!
!
Vagrant


!
!
!
Git *
Démo @ Home
70
!
!
• https://github.com/vspiewak/elk-devops-day-2014
!
$ tree -L 1 .
.
"## README.md
"## demo-all
"## es-cluster
"## eshop-survey
"## flume-jmx
"## slides
"## syslog
$## system-survey
Vagrant - Shortcuts
71
!
• cd demo-all
!
• vagrant up
• vagrant ssh
• sudo jconsole
• vagrant halt*
• vagrant destroy
Vagrant VM
72
!
• config.vm.box = "hashicorp/precise64"
!
• config.vm.network "forwarded_port", guest: 80, host: 10080
• config.vm.network "forwarded_port", guest: 9200, host: 19200
!
• config.ssh.forward_x11 = true
!
• vb.customize ["modifyvm", :id, "--ioapic", "on", "--cpuexecutioncap", "40", "--
cpus", "2", "--memory", "1024" ]
!
• bootstrap.sh
Questions ?
73
THANK
YOUFOR watching

Más contenido relacionado

La actualidad más candente

How ElasticSearch lives in my DevOps life
How ElasticSearch lives in my DevOps lifeHow ElasticSearch lives in my DevOps life
How ElasticSearch lives in my DevOps life
琛琳 饶
 
Logstash + Elasticsearch + Kibana Presentation on Startit Tech Meetup
Logstash + Elasticsearch + Kibana Presentation on Startit Tech MeetupLogstash + Elasticsearch + Kibana Presentation on Startit Tech Meetup
Logstash + Elasticsearch + Kibana Presentation on Startit Tech Meetup
Startit
 

La actualidad más candente (20)

{{more}} Kibana4
{{more}} Kibana4{{more}} Kibana4
{{more}} Kibana4
 
Null Bachaav - May 07 Attack Monitoring workshop.
Null Bachaav - May 07 Attack Monitoring workshop.Null Bachaav - May 07 Attack Monitoring workshop.
Null Bachaav - May 07 Attack Monitoring workshop.
 
elk_stack_alexander_szalonnas
elk_stack_alexander_szalonnaselk_stack_alexander_szalonnas
elk_stack_alexander_szalonnas
 
Machine Learning in a Twitter ETL using ELK
Machine Learning in a Twitter ETL using ELK Machine Learning in a Twitter ETL using ELK
Machine Learning in a Twitter ETL using ELK
 
How ElasticSearch lives in my DevOps life
How ElasticSearch lives in my DevOps lifeHow ElasticSearch lives in my DevOps life
How ElasticSearch lives in my DevOps life
 
Using Logstash, elasticsearch & kibana
Using Logstash, elasticsearch & kibanaUsing Logstash, elasticsearch & kibana
Using Logstash, elasticsearch & kibana
 
Elk scilifelab
Elk scilifelabElk scilifelab
Elk scilifelab
 
Logstash family introduction
Logstash family introductionLogstash family introduction
Logstash family introduction
 
Customer Intelligence: Using the ELK Stack to Analyze ForgeRock OpenAM Audit ...
Customer Intelligence: Using the ELK Stack to Analyze ForgeRock OpenAM Audit ...Customer Intelligence: Using the ELK Stack to Analyze ForgeRock OpenAM Audit ...
Customer Intelligence: Using the ELK Stack to Analyze ForgeRock OpenAM Audit ...
 
Application Logging With The ELK Stack
Application Logging With The ELK StackApplication Logging With The ELK Stack
Application Logging With The ELK Stack
 
Central LogFile Storage. ELK stack Elasticsearch, Logstash and Kibana.
Central LogFile Storage. ELK stack Elasticsearch, Logstash and Kibana.Central LogFile Storage. ELK stack Elasticsearch, Logstash and Kibana.
Central LogFile Storage. ELK stack Elasticsearch, Logstash and Kibana.
 
Monitoring with Graylog - a modern approach to monitoring?
Monitoring with Graylog - a modern approach to monitoring?Monitoring with Graylog - a modern approach to monitoring?
Monitoring with Graylog - a modern approach to monitoring?
 
'Scalable Logging and Analytics with LogStash'
'Scalable Logging and Analytics with LogStash''Scalable Logging and Analytics with LogStash'
'Scalable Logging and Analytics with LogStash'
 
Mobile Analytics mit Elasticsearch und Kibana
Mobile Analytics mit Elasticsearch und KibanaMobile Analytics mit Elasticsearch und Kibana
Mobile Analytics mit Elasticsearch und Kibana
 
Large Scale Log collection using LogStash & mongoDB
Large Scale Log collection using LogStash & mongoDB Large Scale Log collection using LogStash & mongoDB
Large Scale Log collection using LogStash & mongoDB
 
Docker Monitoring Webinar
Docker Monitoring  WebinarDocker Monitoring  Webinar
Docker Monitoring Webinar
 
ELK Stack
ELK StackELK Stack
ELK Stack
 
MySQL Slow Query log Monitoring using Beats & ELK
MySQL Slow Query log Monitoring using Beats & ELKMySQL Slow Query log Monitoring using Beats & ELK
MySQL Slow Query log Monitoring using Beats & ELK
 
Logging logs with Logstash - Devops MK 10-02-2016
Logging logs with Logstash - Devops MK 10-02-2016Logging logs with Logstash - Devops MK 10-02-2016
Logging logs with Logstash - Devops MK 10-02-2016
 
Logstash + Elasticsearch + Kibana Presentation on Startit Tech Meetup
Logstash + Elasticsearch + Kibana Presentation on Startit Tech MeetupLogstash + Elasticsearch + Kibana Presentation on Startit Tech Meetup
Logstash + Elasticsearch + Kibana Presentation on Startit Tech Meetup
 

Similar a Journée DevOps : Des dashboards pour tous avec ElasticSearch, Logstash et Kibana

Flink Streaming Hadoop Summit San Jose
Flink Streaming Hadoop Summit San JoseFlink Streaming Hadoop Summit San Jose
Flink Streaming Hadoop Summit San Jose
Kostas Tzoumas
 

Similar a Journée DevOps : Des dashboards pour tous avec ElasticSearch, Logstash et Kibana (20)

Elk with Openstack
Elk with OpenstackElk with Openstack
Elk with Openstack
 
"How about no grep and zabbix?". ELK based alerts and metrics.
"How about no grep and zabbix?". ELK based alerts and metrics."How about no grep and zabbix?". ELK based alerts and metrics.
"How about no grep and zabbix?". ELK based alerts and metrics.
 
Docker Logging and analysing with Elastic Stack - Jakub Hajek
Docker Logging and analysing with Elastic Stack - Jakub Hajek Docker Logging and analysing with Elastic Stack - Jakub Hajek
Docker Logging and analysing with Elastic Stack - Jakub Hajek
 
Docker Logging and analysing with Elastic Stack
Docker Logging and analysing with Elastic StackDocker Logging and analysing with Elastic Stack
Docker Logging and analysing with Elastic Stack
 
Apache Big Data EU 2016: Building Streaming Applications with Apache Apex
Apache Big Data EU 2016: Building Streaming Applications with Apache ApexApache Big Data EU 2016: Building Streaming Applications with Apache Apex
Apache Big Data EU 2016: Building Streaming Applications with Apache Apex
 
Elk presentation 2#3
Elk presentation 2#3Elk presentation 2#3
Elk presentation 2#3
 
Flink Streaming Hadoop Summit San Jose
Flink Streaming Hadoop Summit San JoseFlink Streaming Hadoop Summit San Jose
Flink Streaming Hadoop Summit San Jose
 
(Fios#02) 2. elk 포렌식 분석
(Fios#02) 2. elk 포렌식 분석(Fios#02) 2. elk 포렌식 분석
(Fios#02) 2. elk 포렌식 분석
 
Real-time Stream Processing with Apache Flink @ Hadoop Summit
Real-time Stream Processing with Apache Flink @ Hadoop SummitReal-time Stream Processing with Apache Flink @ Hadoop Summit
Real-time Stream Processing with Apache Flink @ Hadoop Summit
 
K. Tzoumas & S. Ewen – Flink Forward Keynote
K. Tzoumas & S. Ewen – Flink Forward KeynoteK. Tzoumas & S. Ewen – Flink Forward Keynote
K. Tzoumas & S. Ewen – Flink Forward Keynote
 
Logstash
LogstashLogstash
Logstash
 
Continuous Application with Structured Streaming 2.0
Continuous Application with Structured Streaming 2.0Continuous Application with Structured Streaming 2.0
Continuous Application with Structured Streaming 2.0
 
Webinar: Index Tuning and Evaluation
Webinar: Index Tuning and EvaluationWebinar: Index Tuning and Evaluation
Webinar: Index Tuning and Evaluation
 
Stress test data pipeline
Stress test data pipelineStress test data pipeline
Stress test data pipeline
 
ETL with SPARK - First Spark London meetup
ETL with SPARK - First Spark London meetupETL with SPARK - First Spark London meetup
ETL with SPARK - First Spark London meetup
 
What is the State of my Kafka Streams Application? Unleashing Metrics. | Neil...
What is the State of my Kafka Streams Application? Unleashing Metrics. | Neil...What is the State of my Kafka Streams Application? Unleashing Metrics. | Neil...
What is the State of my Kafka Streams Application? Unleashing Metrics. | Neil...
 
eBay Pulsar: Real-time analytics platform
eBay Pulsar: Real-time analytics platformeBay Pulsar: Real-time analytics platform
eBay Pulsar: Real-time analytics platform
 
Tuning Elasticsearch Indexing Pipeline for Logs
Tuning Elasticsearch Indexing Pipeline for LogsTuning Elasticsearch Indexing Pipeline for Logs
Tuning Elasticsearch Indexing Pipeline for Logs
 
JSLT: JSON querying and transformation
JSLT: JSON querying and transformationJSLT: JSON querying and transformation
JSLT: JSON querying and transformation
 
Presto anatomy
Presto anatomyPresto anatomy
Presto anatomy
 

Más de Publicis Sapient Engineering

Más de Publicis Sapient Engineering (20)

XebiCon'18 - L'algorithme de reconnaissance de formes par le cerveau humain
XebiCon'18 - L'algorithme de reconnaissance de formes par le cerveau humainXebiCon'18 - L'algorithme de reconnaissance de formes par le cerveau humain
XebiCon'18 - L'algorithme de reconnaissance de formes par le cerveau humain
 
Xebicon'18 - IoT: From Edge to Cloud
Xebicon'18 - IoT: From Edge to CloudXebicon'18 - IoT: From Edge to Cloud
Xebicon'18 - IoT: From Edge to Cloud
 
Xebicon'18 - Spark in jail : conteneurisez vos traitements data sans serveur
Xebicon'18 - Spark in jail : conteneurisez vos traitements data sans serveurXebicon'18 - Spark in jail : conteneurisez vos traitements data sans serveur
Xebicon'18 - Spark in jail : conteneurisez vos traitements data sans serveur
 
XebiCon'18 - Modern Infrastructure
XebiCon'18 - Modern InfrastructureXebiCon'18 - Modern Infrastructure
XebiCon'18 - Modern Infrastructure
 
XebiCon'18 - La Web App d'aujourd'hui et de demain : état de l'art et bleedin...
XebiCon'18 - La Web App d'aujourd'hui et de demain : état de l'art et bleedin...XebiCon'18 - La Web App d'aujourd'hui et de demain : état de l'art et bleedin...
XebiCon'18 - La Web App d'aujourd'hui et de demain : état de l'art et bleedin...
 
XebiCon'18 - Des notebook pour le monitoring avec Zeppelin
XebiCon'18 - Des notebook pour le monitoring avec Zeppelin XebiCon'18 - Des notebook pour le monitoring avec Zeppelin
XebiCon'18 - Des notebook pour le monitoring avec Zeppelin
 
XebiCon'18 - Event Sourcing et RGPD, incompatibles ?
XebiCon'18 - Event Sourcing et RGPD, incompatibles ?XebiCon'18 - Event Sourcing et RGPD, incompatibles ?
XebiCon'18 - Event Sourcing et RGPD, incompatibles ?
 
XebiCon'18 - Deno, le nouveau NodeJS qui inverse la tendance ?
XebiCon'18 - Deno, le nouveau NodeJS qui inverse la tendance ?XebiCon'18 - Deno, le nouveau NodeJS qui inverse la tendance ?
XebiCon'18 - Deno, le nouveau NodeJS qui inverse la tendance ?
 
XebiCon'18 - Boostez vos modèles avec du Deep Learning distribué
XebiCon'18 - Boostez vos modèles avec du Deep Learning distribuéXebiCon'18 - Boostez vos modèles avec du Deep Learning distribué
XebiCon'18 - Boostez vos modèles avec du Deep Learning distribué
 
XebiCon'18 - Comment j'ai développé un jeu vidéo avec des outils de développe...
XebiCon'18 - Comment j'ai développé un jeu vidéo avec des outils de développe...XebiCon'18 - Comment j'ai développé un jeu vidéo avec des outils de développe...
XebiCon'18 - Comment j'ai développé un jeu vidéo avec des outils de développe...
 
XebiCon'18 - Les utilisateurs finaux, les oubliés de nos produits !
XebiCon'18 - Les utilisateurs finaux, les oubliés de nos produits !XebiCon'18 - Les utilisateurs finaux, les oubliés de nos produits !
XebiCon'18 - Les utilisateurs finaux, les oubliés de nos produits !
 
XebiCon'18 - Comment fausser l'interprétation de vos résultats avec des dataviz
XebiCon'18 - Comment fausser l'interprétation de vos résultats avec des datavizXebiCon'18 - Comment fausser l'interprétation de vos résultats avec des dataviz
XebiCon'18 - Comment fausser l'interprétation de vos résultats avec des dataviz
 
XebiCon'18 - Le développeur dans la Pop Culture
XebiCon'18 - Le développeur dans la Pop Culture XebiCon'18 - Le développeur dans la Pop Culture
XebiCon'18 - Le développeur dans la Pop Culture
 
XebiCon'18 - Architecturer son application mobile pour la durabilité
XebiCon'18 - Architecturer son application mobile pour la durabilitéXebiCon'18 - Architecturer son application mobile pour la durabilité
XebiCon'18 - Architecturer son application mobile pour la durabilité
 
XebiCon'18 - Sécuriser son API avec OpenID Connect
XebiCon'18 - Sécuriser son API avec OpenID ConnectXebiCon'18 - Sécuriser son API avec OpenID Connect
XebiCon'18 - Sécuriser son API avec OpenID Connect
 
XebiCon'18 - Structuration du Temps et Dynamique de Groupes, Théorie organisa...
XebiCon'18 - Structuration du Temps et Dynamique de Groupes, Théorie organisa...XebiCon'18 - Structuration du Temps et Dynamique de Groupes, Théorie organisa...
XebiCon'18 - Structuration du Temps et Dynamique de Groupes, Théorie organisa...
 
XebiCon'18 - Spark NLP, un an après
XebiCon'18 - Spark NLP, un an aprèsXebiCon'18 - Spark NLP, un an après
XebiCon'18 - Spark NLP, un an après
 
XebiCon'18 - La sécurité, douce illusion même en 2018
XebiCon'18 - La sécurité, douce illusion même en 2018XebiCon'18 - La sécurité, douce illusion même en 2018
XebiCon'18 - La sécurité, douce illusion même en 2018
 
XebiCon'18 - Utiliser Hyperledger Fabric pour la création d'une blockchain pr...
XebiCon'18 - Utiliser Hyperledger Fabric pour la création d'une blockchain pr...XebiCon'18 - Utiliser Hyperledger Fabric pour la création d'une blockchain pr...
XebiCon'18 - Utiliser Hyperledger Fabric pour la création d'une blockchain pr...
 
XebiCon'18 - Ce que l'histoire du métro Parisien m'a enseigné sur la création...
XebiCon'18 - Ce que l'histoire du métro Parisien m'a enseigné sur la création...XebiCon'18 - Ce que l'histoire du métro Parisien m'a enseigné sur la création...
XebiCon'18 - Ce que l'histoire du métro Parisien m'a enseigné sur la création...
 

Último

CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
masabamasaba
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
masabamasaba
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
 

Último (20)

call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
SHRMPro HRMS Software Solutions Presentation
SHRMPro HRMS Software Solutions PresentationSHRMPro HRMS Software Solutions Presentation
SHRMPro HRMS Software Solutions Presentation
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 

Journée DevOps : Des dashboards pour tous avec ElasticSearch, Logstash et Kibana

  • 1. Des dashboards pour tous avec ELK 10 Juin 2014 Vincent Spiewak - @vspiewak
  • 3. Speaker 3 Vincent Spiewak @vspiewak •5 ans XP •Master TA (UPMC) •http://blog.xebia.fr •@vspiewak
  • 4. Agenda 4 •Introduction •Logstash •Monitoring Système •Monitoring JMX •Log As A Service •Monitoring Métier / BI •Cluster ELK •Vagrant (démos)
  • 6. Logstash 6 41 » stdin » file » udp » tcp » rabbitmq » s3 » … 20 » plain » json » line » multiline » dots » msgpack » … 50 » grok » date » drop » mutate » geoip » anonymize » … 55 » stdout » file » udp » tcp » rabbitmq » elasticsearch » … OutputsInputs Codecs Filters
  • 7. Elasticsearch 7 Schema Free Full Text REST Document Real Time Distributed HA Multi-tenancy
  • 9. Dashboards Adaptés 9 Infrastructure » serveur » charge Application » stacktrace » warn, error Business » client » produit Objectifs » résultat » progression DirectionOps Dev Métier
  • 12. Logstash - Entrée/Sortie 12 input {! stdin {}! }! ! # filters! ! output {! stdout { codec => json }! }!
  • 13. Logstash - Run 13 $ java -jar logstash.jar agent —f app.conf! 2011-04-19T03:44:01.103Z 55.3.244.1 GET /index.html 15824 0.043! {! "message" => "2011-04-19T03:44:01.103Z GET /index.html 15824 0.043",! "@timestamp" => "2013-11-03T19:48:53.175Z",! "@version" => "1",! "host" => "macbook"! }!
  • 14. Logstash - Patterns 14 USERNAME [a-zA-Z0-9._-]+! USER %{USERNAME}! INT (?:[+-]?(?:[0-9]+))! WORD bw+b! NOTSPACE S+! DATA .*?! GREEDYDATA .*! HTTPDATE %{MONTHDAY}/%{MONTH}/%{YEAR}:%{TIME} %{INT}! COMBINEDAPACHELOG %{IPORHOST:clientip} … https://github.com/logstash/logstash/blob/master/patterns
  • 15. Logstash - Filtre Grok 15 2011-04-19T03:44:01.103Z 55.3.244.1 GET /index.html 15824 0.043! 
 filter { grok { match => 
 [ "message", "%{TIMESTAMP_ISO8601:date} %{IP:client} %{WORD:method} %{URIPATHPARAM:uri} %{NUMBER:bytes} %{NUMBER:duration}" ] } }
  • 16. Filtre Grok - Sortie 16 2011-04-19T03:44:01.103Z 55.3.244.1 GET /index.html 15824 0.043! ! {! "@timestamp" => "2013-12-01T21:19:11.303Z",! "@version" => "1",! "@bytes" => "15824",! "@client" => "55.3.244.1",! "date" => "2011-04-19T03:44:01.103Z",! "@duration" => "0.043",! "host" => "macbookpro",! "message" => "2011-04-19T03:44:01.103Z 55.3.244.1 GET /index.html 15824 0.043",! "method" => "GET",! "uri" => "/index.html",! }!
  • 17. Filtre Date - @Timestamp 17 filter {! date {! match => [ "date", "ISO8601" ],! }! }!
  • 18. Filtre Date - @Timestamp 18 {! "@timestamp" => "2011-04-19T03:44:01.103Z",! "@version" => "1",! "@bytes" => "15824",! "@client" => "55.3.244.1",! "date" => "2011-04-19T03:44:01.103Z",! "@duration" => "0.043",! "host" => "macbookpro",! "message" => "2011-04-19T03:44:01.103Z 55.3.244.1 GET /index.html 15824 0.043",! "method" => "GET",! "uri" => "/index.html",! }
  • 20. Filtres 20 •ajout d’un champ / type / tag •suppression d’un champ •split d’un champ •conversion de type (string, int, float) •IP => géolocation •UA => device, browser, os, versions •conditions •etc…
  • 21. Logstash - Sortie Elasticsearch 21 •host •port •cluster •index => "logstash-%{+YYYY.MM.dd}" •protocol •…
  • 24. Collectd - Plugins 24 •cpu (jiffies) •process •users •disk •memory •swap •network •Java / JMX •MySQL •…
  • 25. Collectd - Configuration 25 FQDNLookup true LoadPlugin syslog <Plugin syslog> LogLevel info </Plugin> LoadPlugin cpu LoadPlugin df LoadPlugin disk LoadPlugin entropy LoadPlugin interface LoadPlugin irq LoadPlugin load LoadPlugin memory LoadPlugin network LoadPlugin processes LoadPlugin rrdtool LoadPlugin swap LoadPlugin users <Plugin interface> Interface "eth0" IgnoreSelected false </Plugin> <Plugin network> <Server "127.0.0.1" "25826"> </Server> </Plugin> <Plugin rrdtool> DataDir "/var/lib/collectd/rrd" </Plugin> Include "/etc/collectd/filters.conf" Include "/etc/collectd/thresholds.conf"
  • 26. Collectd - Logstash Conf 26 input { collectd { host => "127.0.0.1" } } ! output { elasticsearch {} }
  • 27. Elasticsearch - Samples 27 { "@version": "1", "@timestamp": "2014-06-09T23:01:11.000Z", "host": "precise64", "plugin": "memory", "collectd_type": "memory", "type_instance": "cached", "value": 267845632 } ! { "@version": "1", "@timestamp": "2014-06-09T23:01:11.000Z", "host": "precise64", "plugin": "memory", "collectd_type": "memory", "type_instance": "used", "value": 703348736 }
  • 31. Monitoring JMX: Collectd JMX 31 PORT 25826
  • 32. Collectd - Setup Java & JMX 32 ! ! ! ! # check dynamic libraries ! ldd /usr/lib/collectd/java.so ! ! ! ! ! # fix libjvm.so not found error ! ln -s /usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/server/libjvm.so /usr/lib/libjvm.so
  • 34. Collectd - Plugin Java & JMX 34 <Plugin "java"> JVMARG "-Djava.class.path=/usr/share/collectd/java/collectd-api.jar:/usr/share/collectd/java/generic-jmx.jar" LoadPlugin "org.collectd.java.GenericJMX" <Plugin "GenericJMX"> <MBean "os"> ObjectName "java.lang:type=OperatingSystem" ! <Value> Type "gauge" InstancePrefix "system_cpu_load" Attribute "SystemCpuLoad" </Value> ! </MBean> ! <Connection> ServiceURL "service:jmx:rmi:///jndi/rmi://localhost:9010/jmxrmi" Collect "os" </Connection> ! </Plugin> </Plugin>
  • 35. Elasticsearch - Samples 35 { "@version": "1", "@timestamp": "2014-06-09T23:01:11.000Z", "host": "localhost", "plugin": "GenericJMX", "collectd_type": "gauge", "type_instance": "system_cpu_load", "value": 0.5587837837837838 }
  • 37. Collectd - JMX - Type Table 37 # Heap memory usage <MBean "memory-heap"> ObjectName "java.lang:type=Memory" #InstanceFrom "" InstancePrefix "memory-heap" # Creates four values: committed, init, max, used <Value> Type "jmx_memory" Table true Attribute "HeapMemoryUsage" </Value> </MBean> !
  • 38. Collectd - Types 38 ! /usr/share/collectd/types.db ! ! gauge value:GAUGE:U:U ! load shortterm:GAUGE:0:100, midterm:GAUGE:0:100, longterm:GAUGE:0:100 ! percent percent:GAUGE:0:100.1 ! jmx_memory value:GAUGE:0:U
  • 39. Elasticsearch - Samples 39 { "@version": "1", "@timestamp": "2014-06-09T23:01:11.000Z", "host": "localhost", "plugin": "GenericJMX", "plugin_instance": "memory-heap", "collectd_type": "jmx_memory", "type_instance": "used", "value": 62282808 } ! { "@version": "1", "@timestamp": "2014-06-09T23:01:11.000Z", "host": "localhost", "plugin": "GenericJMX", "plugin_instance": "memory-heap", "collectd_type": "jmx_memory", "type_instance": "init", "value": 104857600 }
  • 40. Collectd - Custom MBean 40 <MBean "flume-source"> ObjectName "org.apache.flume.source:type=source-1" InstancePrefix "flume-source-1" <Value> Type "gauge" InstancePrefix "event_received_count" Attribute "EventReceivedCount" </Value> <Value> Type "gauge" InstancePrefix "event_accepted_count" Table false Attribute "EventAcceptedCount" </Value> </MBean>
  • 41. Elasticsearch - Samples 41 { "@version": "1", "@timestamp": "2014-06-09T23:09:41.000Z", "host": "localhost", "plugin": "GenericJMX", "plugin_instance": "flume-source-1", "collectd_type": "gauge", "type_instance": "event_accepted_count", "value": 1246501 }
  • 42. Flume JMX Monitoring JVM / JMX 42 Démo
  • 45. Log As A Service: SyslogAppender 45 PORT 5514
  • 46. SyslogAppender Log As A Service - Logback 46
  • 47. Logstash - Syslog configuration 47 input { udp { port => "5514" } } ! filter { grok { patterns_dir => "./patterns" match => ["message","%{LOGBACK_SYSLOG}"] } } ! filter { date { match => ["log_date","dd-MM-YYYY HH:mm:ss.SSS"] } } ! output { elasticsearch {} }
  • 48. Logstash - Pattern 48 ! ! ! ! LOG_DATE %{MONTHDAY}-%{MONTHNUM}-%{YEAR} %{HOUR}:%{MINUTE}:%{SECOND}.[0-9]{3} ! SYSLOG_BASE %{SYSLOG5424PRI}%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_host} SYSLOG %{SYSLOG_BASE} %{GREEDYDATA:syslog_message} ! LOGBACK_SYSLOG_BASE %{SYSLOG_BASE} %{LOG_DATE:log_date} [%{NOTSPACE:thread}] %{LOGLEVEL:log_level} %{NOTSPACE:classname} LOGBACK_SYSLOG %{LOGBACK_SYSLOG_BASE} %{GREEDYDATA:log_msg}
  • 52. Problème GeekShop 52 •Quels sont les produits les plus achetés ? •Quelle est la répartition H/F de mes clients ? •Quels sont mes clients les plus fidèles ? •Combien de femmes à Paris ont acheté un iPod Touch Bleu 32 Go entre le 12 octobre 2012 à 14h30 et le 4 novembre 2013 à 19h ?
  • 53. GeekShop - Format Logs 53 09-06-2014 21:27:42.228 [pool-32-thread-1] INFO com.github.vspiewak.loggenerator.SearchRequest - id=317&ua=Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.65 Safari/ 534.24&ip=94.228.34.210&category=Mobile! ! 09-06-2014 21:27:42.227 [pool-32-thread-1] INFO com.github.vspiewak.loggenerator.SellRequest - id=313&ua=Mozilla/ 5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.17) Gecko/ 20110420 Firefox/ 3.6.17&ip=202.46.52.35&email=client314@gmail.com&sex=M&brand=Appl e&name=iPod Touch&model=iPod Touch - Jaune - Disque 32Go&category=Baladeur&color=Jaune&options=Disque 32Go&price=329.0
  • 54. GeekShop - Après Logstash 54 {! "_index": "logstash-2014.06.09",! "_type": "app-log",! "_id": "gaQXRn9mROiAGjhBZ2h2Og",! "_version": 1,! "found": true,! "_source": {! "message": "09-06-2014 21:27:42.228 [pool-32-thread-1] INFO com.github.vspiewak.loggenerator.SearchRequest - id=317&ua=Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.65 Safari/534.24&ip=94.228.34.210&category=Mobile",! "@version": "1",! "@timestamp": "2014-06-09T19:27:42.228Z",! "type": "app-log",! "host": "precise64",! "path": "/home/vagrant/app.log",! "log_date": "09-06-2014 21:27:42.228",! "thread": "pool-32-thread-1",! "log_level": "INFO",! "classname": "com.github.vspiewak.loggenerator.SearchRequest",! "log_msg": "- id=317&ua=Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.65 Safari/ 534.24&ip=94.228.34.210&category=Mobile",! "id": 317,! "ua": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.65 Safari/534.24",! "ip": "94.228.34.210",! "category": "Mobile",! "tags": [! "search"! ],! "geoip": {! "ip": "94.228.34.210",! "country_code2": "GB",! "country_code3": "GBR",! "country_name": "United Kingdom",! "continent_code": "EU",! "latitude": 51.5,! "longitude": -0.12999999999999545,! "timezone": "Europe/London",! "location": [! -0.12999999999999545,! 51.5! ]! },! "useragent": {! "name": "Chrome",! "os": "Linux",! "os_name": "Linux",! "device": "Other",! "major": "11",! "minor": "0",! "patch": "696"! }! }! }
  • 55. Kibana: Terms & Analysers 55
  • 56. Change analyser on specific indexes & fields Elasticsearch Template Mapping 56 curl -XPUT http://localhost:9200/_template/logstash_per_index -d '{ "template" : "logstash*",! "mappings" : { ! "_default_" : {! "properties" : {! "@timestamp": { "type": "date", "index": "not_analyzed" },! "ip": { "type" : "ip", "index": "not_analyzed" },! "name": { "type" : "string", "index": "not_analyzed" },! "options": { "type" : "string", "index": "not_analyzed" },! "email": { "type" : "string", "index": "not_analyzed" }! } ! }! }! }'
  • 61. Elasticsearch - Feedbacks 61 ! •The Guardian: social network - real time feedback ! •StackOverflow: full-text search with geolocation and « more like » ! •Goldman Sacks: 5TB logs/day + analysis stock market ! •…
  • 62. Elasticsearch - NoSQL 62 SQL Partitions DB Table Ligne Colonne ES Cluster Indices Type Document Champ
  • 63. Elasticsearch - Types de noeuds 63 ! •master •data •search
  • 64. Elasticsearch - Shard & Replica 64 ! •shards → +indexing, +distribution (one-time setting) ! •replicas → +search, +availability
  • 65. Elasticsearch - Health 65 ! •GREEN → all primaries/replicas shards active •YELLOW → all primaries shards active •RED → not all primaries shards
  • 70. Démo @ Home 70 ! ! • https://github.com/vspiewak/elk-devops-day-2014 ! $ tree -L 1 . . "## README.md "## demo-all "## es-cluster "## eshop-survey "## flume-jmx "## slides "## syslog $## system-survey
  • 71. Vagrant - Shortcuts 71 ! • cd demo-all ! • vagrant up • vagrant ssh • sudo jconsole • vagrant halt* • vagrant destroy
  • 72. Vagrant VM 72 ! • config.vm.box = "hashicorp/precise64" ! • config.vm.network "forwarded_port", guest: 80, host: 10080 • config.vm.network "forwarded_port", guest: 9200, host: 19200 ! • config.ssh.forward_x11 = true ! • vb.customize ["modifyvm", :id, "--ioapic", "on", "--cpuexecutioncap", "40", "-- cpus", "2", "--memory", "1024" ] ! • bootstrap.sh