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
AzureでのIaC - Bicep? Terraform? それ早く言ってよ会議
torumakabe
1
560
SREチームをどう作り、どう育てるか ― Findy横断SREのマネジメント
rvirus0817
0
280
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
3.9k
ZOZOにおけるAI活用の現在 ~開発組織全体での取り組みと試行錯誤~
zozotech
PRO
5
5.6k
StrandsとNeptuneを使ってナレッジグラフを構築する
yakumo
1
120
プロポーザルに込める段取り八分
shoheimitani
1
280
~Everything as Codeを諦めない~ 後からCDK
mu7889yoon
3
400
[CV勉強会@関東 World Model 読み会] Orbis: Overcoming Challenges of Long-Horizon Prediction in Driving World Models (Mousakhan+, NeurIPS 2025)
abemii
0
140
Greatest Disaster Hits in Web Performance
guaca
0
260
Kiro IDEのドキュメントを全部読んだので地味だけどちょっと嬉しい機能を紹介する
khmoryz
0
200
会社紹介資料 / Sansan Company Profile
sansan33
PRO
15
400k
Tebiki Engineering Team Deck
tebiki
0
24k
Featured
See All Featured
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
A designer walks into a library…
pauljervisheath
210
24k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
117
110k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.6k
How Software Deployment tools have changed in the past 20 years
geshan
0
32k
Optimising Largest Contentful Paint
csswizardry
37
3.6k
A Tale of Four Properties
chriscoyier
162
24k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
380
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Fireside Chat
paigeccino
41
3.8k
Paper Plane (Part 1)
katiecoart
PRO
0
4.2k
Rails Girls Zürich Keynote
gr2m
96
14k
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