Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Stack Elasticsearch - Matinale Zenika
Search
Nicolas Lassalle
December 15, 2016
Technology
0
180
Stack Elasticsearch - Matinale Zenika
Présentation de la stack elastic et du x-pack
Nicolas Lassalle
December 15, 2016
Tweet
Share
More Decks by Nicolas Lassalle
See All by Nicolas Lassalle
Présentation
orphaner
0
180
Other Decks in Technology
See All in Technology
AI時代だからこそ考える、僕らが本当につくりたいスクラムチーム / A Scrum Team we really want to create in this AI era
takaking22
6
3k
AI Agentと MCP Serverで実現する iOSアプリの 自動テスト作成の効率化
spiderplus_cb
0
460
Modern_Data_Stack最新動向クイズ_買収_AI_激動の2025年_.pdf
sagara
0
190
BtoBプロダクト開発の深層
16bitidol
0
160
Green Tea Garbage Collector の今
zchee
PRO
2
380
インサイト情報からどこまで自動化できるか試してみた
takas0522
0
140
OpenAI gpt-oss ファインチューニング入門
kmotohas
2
880
組織観点からIAM Identity CenterとIAMの設計を考える
nrinetcom
PRO
1
160
OCI Network Firewall 概要
oracle4engineer
PRO
1
7.8k
非エンジニアのあなたもできる&もうやってる!コンテキストエンジニアリング
findy_eventslides
3
890
analysis パッケージの仕組みの上でMulti linter with configを実現する / Go Conference 2025
k1low
1
260
Goに育てられ開発者向けセキュリティ事業を立ち上げた僕が今向き合う、AI × セキュリティの最前線 / Go Conference 2025
flatt_security
0
330
Featured
See All Featured
KATA
mclloyd
32
14k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
890
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
Bash Introduction
62gerente
615
210k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
2.6k
Designing for humans not robots
tammielis
254
25k
Being A Developer After 40
akosma
91
590k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
960
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
How to Ace a Technical Interview
jacobian
280
23k
Build The Right Thing And Hit Your Dates
maggiecrowley
37
2.9k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Transcript
Elastic Stack @EmmanuelDemey @NicolaZnk #elastic
None
None
Elasticsearch • Open source project • Based on Apache Lucene
• Add many features ◦ REST API ◦ High Availability ◦ Many Clients : Java, JavaScript, GO, Haskell, .net, ...
Elasticsearch • Search & Analytics: ◦ Full-text search ◦ Aggregations
◦ Geospatial ◦ Multilingual
Elasticsearch • Use cases: ◦ Single bar search ◦ Catalog
indexation ◦ Localized searches ◦ Logs management
Elasticsearch • Success stories: ◦ Ebay: 800 millions items ◦
Github: repositories code search ◦ Deezer: catalog 40m entries ◦ NYT: 15m articles since 160 years
Elasticsearch • Infrastructure: ◦ Start from 3 nodes, up to
? ◦ Add / remove nodes on the fly ◦ Heterogeneous servers ◦ Easy monitoring & supervision ◦ Modest hardware configuration
PUT http://localhost:9200/index/type/1 { "title": "Olivier Twist" } >> {“acknowledged”: true}
POST http://localhost:9200/index/type/ { "title": "Les Aventures de Monsieur Pickwick" } >> {“acknowledged”: true} GET http://localhost:9200/index/type/1 >> {“title”: “Olivier Twist”} PUT http://localhost:9200/index/type/2 { "title": "Oliver Twist" } >> {“acknowledged”: true} DELETE http://localhost:9200/index/type/2 >> {“acknowledged”: true} Elasticsearch
POST http://localhost:9200/index/type/_search { "query": "match" : { "title" : {
"query" : "OLIVER" } } } } >> { "hits": { "hits": [ { "_index": "index", "_type": "type", "_id": "1", "_score": 0.5, "_source": {"title": "Oliver Twist"} } ], ... } ... } Elasticsearch
POST http://localhost:9200/index/type/_search { "query": { "bool": { "must": [ {
"match": { "title": "Oliver" }}, { "match": { "author": "Dickens" }} ], "filter": [ { "term": { "status": "published" }}, { "range": { "publish_date": { "lte": "1950-01-01" }}} ] } } } Elasticsearch
None
Elasticsearch • Developped in java & jruby • Dynamic data
pipeline: ◦ Multiple input / output ◦ Centralize logs ◦ Parse ◦ Store / forward • Plugin based
Logstash Logs REST API Broker Unix commands Files REST API
Broker Elastic Search Filter 1 Filter 2 Filter 3
Logstash Logs REST API Broker Unix commands Files REST API
Broker Elastic Search Filter 1 Filter 2 Filter 3
Logstash # logstash -f logtash.conf input { } filter {
} output { } { } “message”: “127.0.0.1 - - [11/Dec/2013:00:01:45 -0800] \"GET /xampp/status.php HTTP/1.1\" 200 3891 \"http://cadenza/xampp/navi.php\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:25.0) Gecko/20100101 Firefox/25.0\"”, file { path => "/var/access*.log” } grok {match => { "message" => "%{COMMONAPACHELOG}" }} “clientip”: “127.0.0.1”, “verb”: “GET”, “request”: “/london”/, “response”: 200, ... if [request] == “/london” { mutate { add_field => { “inEnglish” => true } } “inEnglish”: true mutate { remove_field => [ "message" ] elasticsearch { hosts => [ “localhost:9200” ] }
Logstash
Logstash - Complex architecture Logs / App1 Files REST API
Broker Elastic Search Logstash 2 Kafka Logstash Logs / App2 Logs / App3 Logstash 3 Logstash 1
None
Beats • Stack developped with GO • More efficient (I/O,
…) than JRuby code • Easy to install / configure • TopBeat, PacketBeat, FileBeat, MetricBeat, WinlogBeat, ...
Logstash - Complex architecture Logs / App1 Files REST API
Broker Elastic Search Filebeat 2 Kafka Logstash Logs / App2 Logs / App3 Filebeat 3 Filebeat 1
# logstash -f logtash.conf input { } filter { }
output { } beats { port => 5044 } grok {match => { "message" => "%{COMMONAPACHELOG}" }} if [request] == “/london” { mutate { add_field => { “inEnglish” => true } } mutate { remove_field => [ "message" ] elasticsearch { hosts => [ “localhost:9200” ] } Beats # filebeat -c filebeat-conf.yml filebeat: prospectors: - paths: - "/var/access*.log” output: logstash: hosts: ["localhost:5044"]
Beats
None
Kibana
• Discover / Visualize / Dashboard • Many plugged-in widgets
◦ map, pie, metric, area chart, line chart, table… ◦ Many plugins available • Period selector and auto-refresh behaviors • Authentication Management System • PDF Report : automate & email Kibana
and many more products...
None
None
Security
• Define roles for you ES cluster • Many authentication
levels : ◦ cluster ◦ indices ◦ documents ◦ properties • Authentication Providers : Basic Auth, LDAP, Active Directory, your own provider Security
Security # PUT /_xpack/security/role/clicks_admin { "cluster": [ "monitor" ], "indices":
[ { "names": [ "events-*" ], "privileges": [ "read" ], "query": "{\"match\": {\"category\": \"click\"}}" } ] } # PUT /_xpack/security/user/manu { "password": "password", "roles": [ "clicks_admin"], "full_name": "Emmanuel Demey”, "email": "
[email protected]
”, "metadata": { "event": "Matinale ES" } } # role_mapping.yml monitoring: - "cn=admins,dc=example,dc=com" user: - "cn=John Doe,cn=contractors,dc=example,dc=com" - "cn=users,dc=example,dc=com" - "cn=admins,dc=example,dc=com"
• Encrypted communication between nodes • Encrypted access • IP
Filtering • Audit logging • Add authentication to Kibana and Monitoring Security
Alerting
• Detect changes in your data • Get notified •
Learn from alert history Alerting
PUT _xpack/watcher/watch/log_errors { "trigger" : { schedule" : { "interval"
: "5m" } }, "input" : { "search" : { "request" : { "indices" : "log-events", "body" : { "query" : { "match" : { "status" : "error" } } } } } }, ... ... "condition" : { "compare" : { "ctx.payload.hits.total" : { "gt" : 5 }} }, "actions" : { "email_administrator" : { "email" : { "to" : "
[email protected]
", "subject" : " {{ctx.payload.hits.total}} errors", "body" : "Too many error" } } } } } Alerting
Monitoring
Monitoring
Emmanuel DEMEY Zenika LILLE @EmmanuelDemey Nicolas LASSALLE Zenika LILLE @NicolaZnk